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

 
 
> Инициализация данных в 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
 
Start new topic
Ответов
helicopter
сообщение Mar 9 2013, 18:54
Сообщение #2





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



Может существует способ как-то заставить его укладывать данные в память по человечески ? В скрипте линкера указать или ещё как-нибудь ?

Кажется нашёл: http://en.wikipedia.org/wiki/PackBits
Вопрос: "Можно ли это как-то отключить ?", - остаётся в силе. Если у кого-то есть готовая реализация на си, тоже буду благодарен.

Сообщение отредактировал helicopter - Mar 9 2013, 18:56
Go to the top of the page
 
+Quote Post



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

 


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


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