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

 
 
> AT91SAM7 + GCC(Yagarto), Как сделать костантный массив во FLASH.
bug_fix
сообщение Aug 17 2008, 16:47
Сообщение #1





Группа: Новичок
Сообщений: 8
Регистрация: 25-01-05
Пользователь №: 2 166



Требуется хранить некий массив данных во FLASH. как записывать данные на это место вроде как понятно. Через контроллер памяти. А вот как сказать компилятору, что это костантный массив данных лежащий в памяти программ (FLASH) пока чего то не раскопал. Может кто носом ткнет или ссылочкой побалует ? Поиск по форуму не дал результата.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Norton
сообщение Aug 18 2008, 13:17
Сообщение #2





Группа: Новичок
Сообщений: 12
Регистрация: 7-04-08
Из: Пермь
Пользователь №: 36 538



я делал примерно так для сохраниния настроек
Код
unsigned long *opt1            = (unsigned long *)        SETTINGS_OFFSET+SA_OPT1;
unsigned long *opt2            = (unsigned long *)        SETTINGS_OFFSET+SA_OPT2;

где SETTINGS_OFFSET - адрес начала страницы, а SA_OPT - смещение внутри страницы нашей настройки, и также писать процедуру перезаписи всего сегмента

а чтобы компилятор туда не помещал ничего другого, прописать в скрипте линкера
Код
.=0x00100000+255K;
.settings :
{
    *(.settings .settings.*);
} >flash =0x00


можно использовать
Код
.=align(256);

которая выравнивает точку в памяти кратно указанному числу байт

также можете поэксперементировать с объявлению переменной с привязкой к сегменту
Код
__attribute__ ((section (".settings"))) unsigned long int Buf[64];

но у меня дружбы с ними не получилось, то регион кончался, то линкер ошибку давал (а рассказывать детально о своих ошибках не хотел)
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 06:11
Рейтинг@Mail.ru


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