Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Вопрос по AVR IAR

Отправлено Ralex 11 ноября 2007 г. 16:58


есть задача:
есть программа, использующая массив констант. Массив большой, 2кб. В разных устройствах на ATMEGA8, программа одна и та же, а массив меняется. Хотелось бы сделать так, чтобы не приходилось заново компилировать программу в IAR, а разместить массив со 2-го килобайта флеш и задать достаточно большим чтобы туда гарантированно уместился массив. Далее, прошивая процессор, сначала прошивать программу во все устройства, а потом дошивать по смещению код. Таким образом, пользователям нужно будет только зашивать программу и бинарный массив бывшего EEPROM. Компилятор IAR им будет не нужен.
Чтобы было понятнее, ATMEGA8 ранее использовала EEPROM для хранения массива, а теперь его хочется хранить внутри, так как по сути он статичный, и сама программа атмеги его изменять не будет.

Вот примерно как я пытаюсь сделать (2000 байт резервирую с адреса 2048):
__flash const unsigned char ee_content [2000] @2048;

Но в этом случае компилятор инициализирует его нулями и пихает в выходной HEX портянку нулей, естественно после прошивки такого что-то записать по этим адресам во флеш нельзя.
Писать портянку 0xFF и так 2000 раз как-то неприятно.

Конструкция типа
__no_init __flash const unsigned char ee_content [2000] @2048;
не работает, так как совместное использование __no_init и __flash не одобряет компилятор.

Как заставить IAR разместить во флеш 2 кило неинициализируемого массива, с определенного адреса, и при выполнении кода в атмеге иметь на него указатель?



Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
поделите 4 пополам:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru