16+
Четверг
23 ноября
Вход |Карта сайта | |Upload |codebook | PARTS

 О смысле всего сущего 0xFF

 Средства и методы разработки

 Мобильная и беспроводная связь

 Блошиный рынок Объявления

caxapa

Микроконтроллеры ARM 

AVR PIC MSP PLD,FPGA,DSP 

Кибернетика Технологии 

Схемы, платы, компоненты 

ARM-контроллеры

 
   Новая тема Правила Регистрация Поиск »» Архив
Вернуться в конференциюТопик полностью
ROBINZONE  (06.09.2017 10:50, просмотров: 3085)
Прошу помощи телепатов: проект на иаре, STM32F429IIT6, размер кода чуть больше мегабайта, в начале (256кб) - бут-загрузчик. LCD 7", сеггеровская GUI 5.32, ETHERNET, 32 мБ SDRAM.  
"Плавающий" глюк, связанный со структурой массива. Один из массивов около 60кБ (в памяти), как только еще добавляю несколько элементов - программа перестаёт адекватно работать. На 7.7 ИРА-е это проявлялось в полном отсутствии старта основной программы, на последней версии ИАР-а: постоянное срабатывание блока пересброса PHY ETHERNET (есть процедура, проверяющая состояние регистров LAN7820 и "дергающая" ресет при неадеквате). Однако под дебуггером код рабочий! Переход из бутлоадера стандартный (код ниже), сама странность именно в том, что добавляешь одну строку в массиве (массив вырастает на 32 байта), и перестаёт работать адекватно. Вполне возможно, что, когда массив чуть меньше, данные начинают "портиться" в другой ячейке памяти, которая, скажем, не так важна и нет возможности это отследить ( под отладчиком всё идеально!). Если бы это был глюк моей программы (где-то пишу лишнее в память) - логично, что влияние ИАР-овскгого отладчика никоим образом не повлияло бы. Нашел примерно аналогичную проблему у человека, но непонятно, как они её решили: translate.google.ru/translate?hl=ru& …s/f/312/p/386078/1361767&prev=search Если это какой-то глюк именно ИАР-а, может, стоит скомпилировать на чём-то другом? Может, кто сталкивался или хотя-бы есть направления на поиск глюка... #define APPLICATION_ADDRESS_GO 0x08040000 void JMP_TO_APP_08040000 (void) { // __disable_irq (); __set_MSP( *(uint32_t*)(APPLICATION_ADDRESS_GO) ); SCB->VTOR = (APPLICATION_ADDRESS_GO & (uint32_t)0x1FFFFF80); (*(void(*)(void))( *(uint32_t*)(APPLICATION_ADDRESS_GO+4) ))(); };
Главная | Карта сайта | О проекте | Проекты | Файлообменник | Регистрация | Вебмастер | RSS
Лето 7526 от сотворения мира. При использовании материалов сайта ссылка на caxapу обязательна.
MMI © MMXVII