|
Инициализация EEPROM в IAR STM32L1 |
|
|
|
Dec 14 2017, 15:20
|

Просто Che
    
Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881

|
Как в IAR для STM32L1 сделать так, чтобы инициализированная структура, находящаяся в EEPROM, программировалась одним проходом с флеш памятью. То есть, чтобы данные попадали в hex файл прошивки.
Пока у меня это никак не получается, хотя все остальное, связанное с EEPROM, работает. Причем если включить отладку в симуляторе, то эти данные грузятся в EEPROM симулятора, а если включить отладку в плате через ST-LINK, то ничего нет. И hex файл без этих данных.
IAR EW ARM 7.50.1
|
|
|
|
|
Dec 15 2017, 10:31
|

Просто Che
    
Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881

|
Почитал, потыкался, и судя по всему IAR ARM не поддерживает у себя какую-либо работу с EEPROM. - регион EEPROM в файле линкера такой-же как и для rw data. - все что помещается в регион EEPROM компилятор считает за данные в ОЗУ и соответственно обыденно с ними и пытается работать. - если эти данные делать __no_init, то все корректно. - если попытаться им присвоить начальные значения, компилятор генерит секцию инициализации в стартапе как для ОЗУ. как следствие, после старта приложения проходит попытка записи в EEPROM как в ОЗУ и взводятся флаги ошибок записи. - дебаггер об особой области EEPROM знает, но сам записывать в нее не умеет (write failed (CPU data abort)) На сайте ИАРа нашел Tech Note "Initializing the eeprom at program download" для STM8, где иаровцы говорят, что это они пока не доделали, но обещают доделать. Два года уже прошло... Просмотрел Release Notes на новые версии ИАРа, включая ноне последний 8.20, нигде упоминания слова eeprom нет. Так что, пока в ИАРе нужно делать инициализацию самому на run-time стадии. з.ы. может быть есть еще вариант, наподобие предложенного Сергеем, заставить линкер генерить отдельный файл прошивки для региона EEPROM, в ручную добавлять эти строки в общий файл прошивки и скармливать его нормальному программатору, типа STM32 ST-LINK Utility. Он точно умеет писать все. Но исследовать не буду. Ключи от AVR линкер ARMа не понимает, а мне после размышлений, для моих задач, run-time инициализация сейчас нравиться даже больше.
|
|
|
|
|
Dec 15 2017, 12:09
|
Местный
  
Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140

|
Цитата(ViKo @ Dec 15 2017, 14:57)  Имею в виду не свою программу, а выбираемый в настройках проекта Programming Algorithm. Может, что-то подобное и в IAR есть. У IAR есть два механизма для этого. 1. Перед загрузкой данных запускаются макросы, в которых можно сконфигурировать чип для корректной загрузки. Проинициализировать генераторы, шины, разлочить запись и т.д. 2. Механизм Flash Loader. В память процессора загружаеются специальные функции инициализации/стирания/записи блоков данных, написанные пользователем и данные для прошивки. Управление передаётся этим функциям по мере загрузки новых данных. При таком подходе можно любые данные куда угодно прошивать. Забыл сказать, эти два способа можно комбинировать
|
|
|
|
|
Dec 15 2017, 12:53
|

Просто Che
    
Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881

|
Цитата(VladislavS @ Dec 15 2017, 14:09)  У IAR есть два механизма для этого.
1. Перед загрузкой данных запускаются макросы ...
2. Механизм Flash Loader. ... Снимаю шляпу, если вы это все освоили и применяете Я так глубоко никогда не лез. Это все здорово, но в данном случае речь идет просто о не поддержке ИАРом в аппаратном отладчике записи в EEPROM. Применение макросов и самописного Flash Loader - это чересчур трудоемкие костыли для исправления их недоработок. Проще применить run-time инициализацию.
|
|
|
|
|
Dec 15 2017, 13:29
|
Местный
  
Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140

|
Цитата(Baser @ Dec 15 2017, 15:53)  Снимаю шляпу, если вы это все освоили и применяете  А как по другому? Это у AVR или там STM8 всё стандартно, а ARM-ов такой зоопарк, да ещё и схемы включения одного чипа могут быть разными. Цитата(Baser @ Dec 15 2017, 15:53)  Я так глубоко никогда не лез. Да это в первый раз тяжело, а потом всё по шаблону... У меня на одном изделии Flash Loader на ЖКИ выводил информацию по процессу прошивки. Сначала ради отладки, потом просто для хохмы. Цитата(Baser @ Dec 15 2017, 15:53)  Это все здорово, но в данном случае речь идет просто о не поддержке ИАРом в аппаратном отладчике записи в EEPROM. 3-4 строки для разлочки записи в макросе и всё взлетит. Чутка документацию просто почитать надо. Цитата(Baser @ Dec 15 2017, 15:53)  Применение макросов и самописного Flash Loader - это чересчур трудоемкие костыли для исправления их недоработок. Это не костыли!!! Это штатный механизм работы IAR. Просто для каких-то чипов в комплекте уже есть полноценные скрипты и flashloader, а для каких-то их надо сделать самому. Ну откуда знать разработчикам IAR на какой порт SPI и какого типа флэшку вы повисите в своём проекте? А шить её всё равно надо. Цитата(Baser @ Dec 15 2017, 15:53)  Проще применить run-time инициализацию. В данном случае да, но инструмент которым вы работаете лучше знать получше
|
|
|
|
|
Dec 15 2017, 13:53
|

Просто Che
    
Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881

|
Абсолютно с вами согласен в том, что применяемый инструмент желательно знать в совершенстве. Но лень-матушка и желание легких путей - это двигатель прогресса  Цитата(VladislavS @ Dec 15 2017, 15:29)  Это не костыли!!! Это штатный механизм работы IAR. Просто для каких-то чипов в комплекте уже есть полноценные скрипты и flashloader, а для каких-то их надо сделать самому. Вот об этом я и говорю! Это и есть недоработки ИАРовцев. Это же не open-source проект IDE типа "сделай сам", а чудо шведской частной компании, за которое положено платить приличные деньги. Позиционируется как "купил-поставил-работаешь". Без недели плясок с бубном и дописывания поддержки нужного чипа. Цитата Ну откуда знать разработчикам IAR на какой порт SPI и какого типа флэшку вы повисите в своём проекте? А шить её всё равно надо. С этой мыслью тоже не согласен, все это так только для процесса разработки. Программировать чипы/платы на производстве никто ИАРом не будет. Только специализированный программатор, куда можно грузить всю нужную конфигурацию и прошивки из сохраненного проекта.
|
|
|
|
|
Dec 15 2017, 16:46
|

Знающий
   
Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663

|
Сам первое включение осуществлял после "STM32 ST-LINK Utility" - то, что нужно было положить в EEPROM "не целованного" контроллера. Цитата Это же не open-source проект IDE типа "сделай сам", а чудо шведской частной компании, за которое положено платить приличные деньги. Ну мы же их суппорт не теребим  Шведской? Ж8-\ Цитата Программировать чипы/платы на производстве никто ИАРом не будет. Для производства "STM32 ST-LINK Utility" вполне себе инструмент. PS: Оп-па, в натуре Ж8-/ "Headquarters: Uppsala, Sweden" Я-то, думал, что "амеров" граблю
Сообщение отредактировал Obam - Dec 15 2017, 16:49
--------------------
Пролетарий умственного труда.
|
|
|
|
|
Dec 15 2017, 18:45
|
Местный
  
Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140

|
Цитата(Baser @ Dec 15 2017, 16:53)  Только специализированный программатор А это что за зверь такой, можно пример? Цитата(Obam @ Dec 15 2017, 19:46)  Для производства "STM32 ST-LINK Utility" вполне себе инструмент. Хорошо вам там на STM, а остальным как быть?
|
|
|
|
|
Dec 15 2017, 22:13
|

Просто Che
    
Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881

|
Цитата(VladislavS @ Dec 15 2017, 20:45)  А это что за зверь такой, можно пример? Дык, любой софт для конкретного МК, который реализует только функции программирования. Вы же не будете на производство для наладчиков покупать ИАР Он там дорог, избыточен и очень неудобен. Для STM32, напр. уже упомянутый "STM32 ST-LINK Utility" Для опытного и мелкосерийного производства можно применять его GUI вариант, хотя мне не нравиться его окно редактора, которое навязчиво активно. Случайно мышью куда-нибудь щелкнешь, а он уже начинает без спроса флешь править - кто это только придумал А для серийного производства - его CLI вариант - консольное приложение. Задаешь батничек со всеми командами - оператор щелкает - и готово. Если плата/блок сложнее и есть серийность, так вообще самопальный тестер делаем, который автоматом все программирует, тестирует и логи пишет. Цитата Хорошо вам там на STM, а остальным как быть? Как всем. Для любого семейства МК есть или фирменный бесплатный или сторонний платный софт для программирования на производстве. Вам то это не знать
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|