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

 
 
> Инициализация данных в IAR., Странное размещение инициализированных данных во flash-памяти.
helicopter
сообщение Mar 6 2013, 19:53
Сообщение #1





Группа: Новичок
Сообщений: 7
Регистрация: 20-10-10
Пользователь №: 60 302



Нужно написать полностью собственную первичную инициализацию вместо __iar_program_start.
Попытался сделать это, как делал в GCC - .bss от начала до конца забивается нулями, а .data_init (flash) копируется в .data (sram).
Тут обнаружилась первая странность - данные в .data_init начинаются не с начала секции, а с __section_begin(".data_init") + 1 байт.
(т.е. по выравненному адресу). Сдвиг начального адреса на этот один байт ситуацию улучшил, но не полностью. Большая часть
данных теперь инициализировалась нормально, но в некоторых структурах (связанных с usb) оказался какой-то жуткий мусор, в
результате чего прошивка стала падать в из прерывания usb в FaultISR из-за обращения по несуществующему адресу.
Пытался дизассемблировать встроенную иаровскую инициализацию, но там в части копирования данных какая-то жесть. Разобраться
полностью сходу не удалось. Может кто уже сталкивался ? По какому принципу у IAR уложены данные в память ?

Контроллер LM3S5R31
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 19:12
Рейтинг@Mail.ru


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