IAR данные во Flash
- Сообщения: 19
- Зарегистрирован: Чт фев 18, 2010 21:07:54
Как в IAR разместить текст желательно по конкретному адресу flash? и чтобы при оптимизации не выкидывал это из программы как неиспользованные данные. Как сделать это правильно и красиво.
- Реклама
Просто во флеш так:
По конкретному адресу сложнее. В настройках проекта надо создать свою секцию, задав ей нужный начальный адрес. Далее данные размещать в этой секции.
http://microsin.ru/content/view/1177/44/
Стесняюсь спросить, а нахрена вам по конкретному адресу? Обращаетесь к переменной, а разбор адресов оставьте компилятору. Чтобы ее не выкинули при сборке проекта просто используйте ее. Считайте байт этой переменной из флаш в ОЗУ, например. Все неиспользуемые данные выкидываются при оптимизации, и это есть правильно.
Код: Выделить всё
//Объявили строку в памяти программ
__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
почитайте:
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
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
Так и сделал, просто хотелось красиво. Хотел чтобы в начале прошивке видно было версия ПО.eess9 писал(а):Просто во флеш так:По конкретному адресу сложнее. В настройках проекта надо создать свою секцию, задав ей нужный начальный адрес. Далее данные размещать в этой секции.Код: Выделить всё
//Объявили строку в памяти программ __flash const char strInFlash[] = "Hello from flash";
http://microsin.ru/content/view/1177/44/
Стесняюсь спросить, а нахрена вам по конкретному адресу? Обращаетесь к переменной, а разбор адресов оставьте компилятору. Чтобы ее не выкинули при сборке проекта просто используйте ее. Считайте байт этой переменной из флаш в ОЗУ, например. Все неиспользуемые данные выкидываются при оптимизации, и это есть правильно.
видно через дырочку в корпусе МК?Next13 писал(а):просто хотелось красиво. Хотел чтобы в начале прошивке видно было версия ПО.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Реклама
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
тут пример как разместить в прошивке дату и время для старых и новых версий IAR:
http://supp.iar.com/Support/?note=36121
имхо полезная функция для личного пользования
http://supp.iar.com/Support/?note=36121
имхо полезная функция для личного пользования
- Сообщения: 7518
- Зарегистрирован: Вс мар 29, 2009 22:09:05
Есть же #pragma location. Или с этим методом что-то не так?По конкретному адресу сложнее.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
- Сообщения: 19
- Зарегистрирован: Чт фев 18, 2010 21:07:54
Шутник? Я и не собираюсь его показывать ни кому, это для себя. Устройство одно, а прошивки под разный функционал уже сам путаться стал.ARV писал(а):видно через дырочку в корпусе МК?Next13 писал(а):просто хотелось красиво. Хотел чтобы в начале прошивке видно было версия ПО.![]()
кто увидит версию-то вашу, если наверняка еще и залочите чип после прошивки?
- Сообщения: 7518
- Зарегистрирован: Вс мар 29, 2009 22:09:05
Не знаю, что вы подразумеваете под "началом", но на всякий случай скажу, что по нулевому адресу не стоит размещать ничего кроме корректных команд, ибо туда обычно указывает вектор сброса. Так что я бы версию располагал в конце, после бесконечного цикла, в месте, содержимое которого точно не будет выполняться.в начале прошивке
Кстати, можно версию просто руками в hex добавлять. Intel hex - простой текстовый формат. В бинарник, в общем, тоже добавить несложно.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
- Сообщения: 19
- Зарегистрирован: Чт фев 18, 2010 21:07:54
Это я в курсеYS писал(а):Не знаю, что вы подразумеваете под "началом", но на всякий случай скажу, что по нулевому адресу не стоит размещать ничего кроме корректных команд, ибо туда обычно указывает вектор сброса..в начале прошивке
шутник - это вы, т.к. обычные люди для разных вариантов прошивок используют разные имена файловNext13 писал(а):Шутник? Я и не собираюсь его показывать ни кому, это для себя. Устройство одно, а прошивки под разный функционал уже сам путаться стал.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Нет, то о чем спрашивал товарищь вполне резонно. Пусть не прошивку, а версию прошивки. Это очень удобно. Единственное, зачем ему по конкретному адресу не понятно. Номер прошивки и версию надо иметь возможность считать в любой момент работы и из любого устройства. Не знаю что там товарищь делает, но нужна специальная команда в протоколе для версии прошивки. Это значительно облегчает повторение и последующее отлавливание багов в прошивке, найденных другими лююдьми.


