IAR данные во Flash

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Сообщения: 19
Зарегистрирован: Чт фев 18, 2010 21:07:54

Сообщение Next13 »

Как в IAR разместить текст желательно по конкретному адресу flash? и чтобы при оптимизации не выкидывал это из программы как неиспользованные данные. Как сделать это правильно и красиво.
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 672
Зарегистрирован: Ср фев 29, 2012 01:58:32
Откуда: Харьков, Украина

Сообщение eess9 »

Просто во флеш так:

Код: Выделить всё

//Объявили строку в памяти программ
__flash const char strInFlash[] = "Hello from flash";
По конкретному адресу сложнее. В настройках проекта надо создать свою секцию, задав ей нужный начальный адрес. Далее данные размещать в этой секции.
http://microsin.ru/content/view/1177/44/
Стесняюсь спросить, а нахрена вам по конкретному адресу? Обращаетесь к переменной, а разбор адресов оставьте компилятору. Чтобы ее не выкинули при сборке проекта просто используйте ее. Считайте байт этой переменной из флаш в ОЗУ, например. Все неиспользуемые данные выкидываются при оптимизации, и это есть правильно.
Последний раз редактировалось eess9 Пт фев 27, 2015 13:06:12, всего редактировалось 1 раз.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

почитайте:
IAR C/C++ Compiler User Guide
Part 1. Using the compiler->Efficient coding for embedded applications->Controlling data and function placement in memory
Data placement at an absolute location
Data and function placement in segments
Родился
Сообщения: 19
Зарегистрирован: Чт фев 18, 2010 21:07:54

Сообщение Next13 »

eess9 писал(а):Просто во флеш так:

Код: Выделить всё

//Объявили строку в памяти программ
__flash const char strInFlash[] = "Hello from flash";
По конкретному адресу сложнее. В настройках проекта надо создать свою секцию, задав ей нужный начальный адрес. Далее данные размещать в этой секции.
http://microsin.ru/content/view/1177/44/
Стесняюсь спросить, а нахрена вам по конкретному адресу? Обращаетесь к переменной, а разбор адресов оставьте компилятору. Чтобы ее не выкинули при сборке проекта просто используйте ее. Считайте байт этой переменной из флаш в ОЗУ, например. Все неиспользуемые данные выкидываются при оптимизации, и это есть правильно.
Так и сделал, просто хотелось красиво. Хотел чтобы в начале прошивке видно было версия ПО.
Реклама
Эиком - электронные компоненты и радиодетали
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Next13 писал(а):просто хотелось красиво. Хотел чтобы в начале прошивке видно было версия ПО.
видно через дырочку в корпусе МК? ;) :))) кто увидит версию-то вашу, если наверняка еще и залочите чип после прошивки?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

тут пример как разместить в прошивке дату и время для старых и новых версий IAR:
http://supp.iar.com/Support/?note=36121
имхо полезная функция для личного пользования
Реклама
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

По конкретному адресу сложнее.
Есть же #pragma location. Или с этим методом что-то не так?
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Родился
Сообщения: 19
Зарегистрирован: Чт фев 18, 2010 21:07:54

Сообщение Next13 »

ARV писал(а):
Next13 писал(а):просто хотелось красиво. Хотел чтобы в начале прошивке видно было версия ПО.
видно через дырочку в корпусе МК? ;) :))) кто увидит версию-то вашу, если наверняка еще и залочите чип после прошивки?
Шутник? Я и не собираюсь его показывать ни кому, это для себя. Устройство одно, а прошивки под разный функционал уже сам путаться стал.
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

в начале прошивке
Не знаю, что вы подразумеваете под "началом", но на всякий случай скажу, что по нулевому адресу не стоит размещать ничего кроме корректных команд, ибо туда обычно указывает вектор сброса. Так что я бы версию располагал в конце, после бесконечного цикла, в месте, содержимое которого точно не будет выполняться.

Кстати, можно версию просто руками в hex добавлять. Intel hex - простой текстовый формат. В бинарник, в общем, тоже добавить несложно.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Родился
Сообщения: 19
Зарегистрирован: Чт фев 18, 2010 21:07:54

Сообщение Next13 »

YS писал(а):
в начале прошивке
Не знаю, что вы подразумеваете под "началом", но на всякий случай скажу, что по нулевому адресу не стоит размещать ничего кроме корректных команд, ибо туда обычно указывает вектор сброса..
Это я в курсе
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Next13 писал(а):Шутник? Я и не собираюсь его показывать ни кому, это для себя. Устройство одно, а прошивки под разный функционал уже сам путаться стал.
шутник - это вы, т.к. обычные люди для разных вариантов прошивок используют разные имена файлов :))) кстати, не только для прошивок метод годится - имейте ввиду :))) а еще есть вариант по разным папкам раскладывать... но это, пожалуй, слишком сложно будет...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Вымогатель припоя
Аватара пользователя
Сообщения: 672
Зарегистрирован: Ср фев 29, 2012 01:58:32
Откуда: Харьков, Украина

Сообщение eess9 »

Нет, то о чем спрашивал товарищь вполне резонно. Пусть не прошивку, а версию прошивки. Это очень удобно. Единственное, зачем ему по конкретному адресу не понятно. Номер прошивки и версию надо иметь возможность считать в любой момент работы и из любого устройства. Не знаю что там товарищь делает, но нужна специальная команда в протоколе для версии прошивки. Это значительно облегчает повторение и последующее отлавливание багов в прошивке, найденных другими лююдьми.
Ответить

Вернуться в «AVR»