реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Зарезервировать адрес в ниос
alexPec
сообщение Apr 9 2011, 21:58
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968



Добрый день всем. Есть в ниосе внешняя память на avalon-mm. Как бы программе сказать, что в этой памяти к одному конкретному адресу никто не должен лазить ни на чтение ни на запись. Т.е. надо сделать переменную, которая хранится в конкретном адресе, и этой переменной должен пользоваться только я при явном указании на нее, чтоб линкер в этот адрес ничего на распределил.
В других компиляторах или зрезервированное слово есть или pragma какая-нибудь, а тут как?
Go to the top of the page
 
+Quote Post
vadimuzzz
сообщение Apr 10 2011, 00:56
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988



попробуйте так:
Код
int some_variable __attribute__((io(0x123)));
Go to the top of the page
 
+Quote Post
alexPec
сообщение Apr 10 2011, 07:23
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968



Цитата(vadimuzzz @ Apr 10 2011, 04:56) *
попробуйте так:
Код
int some_variable __attribute__((io(0x123)));

спасибо, попробую!
Go to the top of the page
 
+Quote Post
torik
сообщение Apr 12 2011, 15:33
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Ха, я же в соседней теме недавно поднимал этот вопрос!!! Видать хорошо я объясняю что мне надо...
А та же фигня для переменных-массивов прокатит?


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
Sergey'F
сообщение Apr 12 2011, 16:12
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 351
Регистрация: 17-09-05
Из: Москва
Пользователь №: 8 660



Цитата(torik @ Apr 12 2011, 19:33) *
Ха, я же в соседней теме недавно поднимал этот вопрос!!! Видать хорошо я объясняю что мне надо...
А та же фигня для переменных-массивов прокатит?

А зачем? Лучше зайти в BSP Editor и там на странице linker script порезать нужный memory device на несколько секций. На рисунке пример - мы отрезали от ext_ram старшие 4096 байт и создали регион памяти с именем repa. Потом ниже в этом регионе создали секцию .repa_section.
А в приложении пишете:
INT8U repa_data[4096] __attribute__ ((section (".repa_section")));

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
torik
сообщение Apr 13 2011, 18:16
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Да, полезная вещь, спасибо.


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
alexPec
сообщение Apr 13 2011, 20:49
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 284
Регистрация: 9-04-06
Пользователь №: 15 968



Цитата(Sergey'F @ Apr 12 2011, 20:12) *
А зачем? Лучше зайти в BSP Editor и там на странице linker script порезать нужный memory device на несколько секций. На рисунке пример - мы отрезали от ext_ram старшие 4096 байт и создали регион памяти с именем repa. Потом ниже в этом регионе создали секцию .repa_section.
А в приложении пишете:
INT8U repa_data[4096] __attribute__ ((section (".repa_section")));


Да, красивое решение!
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 12:31
Рейтинг@Mail.ru


Страница сгенерированна за 0.01427 секунд с 7
ELECTRONIX ©2004-2016