|
Не стартует STM32F405 |
|
|
|
Jun 25 2017, 19:29
|
Местный
  
Группа: Участник
Сообщений: 421
Регистрация: 2-01-08
Пользователь №: 33 778

|
Сделал новую ревизию платы, в части МК изменилось только, что BOOT1 теперь идет на EN вход внешнего DC/DC. Вроде бы не должно никак мешать, когда контроллер в сбросе или загрузчике BOOT1 притянут к земле резистором 10К.
Однако, теперь после загрузки кода по USART через встроенный загрузчик, происходит странное. Сразу после загрузки МК работает как должно. Если снять питание и снова подать, то поведение как у чистого МК со стертым флешем. Но если не дергая питания, перейти в загрузчик сделав BOOT0=1 и сброс а затем (ничего на загружая) вернуть BOOT0=0 и снова сделать сброс, то стартует прошитый ранее код из флеш. Один только сброс не помогает.
Похоже, на то, что я что-то недоиницилизирую, но и здесь я изменял только настройки тактирования под новую частоту кварца. И раньше такого не было никогда.
Пробовал зажигать светодиоды перед всей инициализацией, прямо в обработчике reset прерывания. Ничего не увидел, даже туда не доходит.
Не знаю на что подумать, что проверить.
Сообщение отредактировал amaora - Jun 26 2017, 12:24
|
|
|
|
|
 |
Ответов
|
Jun 28 2017, 16:48
|
Местный
  
Группа: Участник
Сообщений: 421
Регистрация: 2-01-08
Пользователь №: 33 778

|
Перешел на GCC 7.1.0, попробовал разные варианты оптимизации, ничего не меняется. Сейчас постоянно падает при запуске из GDB. В пределах одной сборки падает стабильно в одном месте. Похоже неполадки в freertos/heap_4.c, pvPortMalloc возвращает некорректные адреса. Но как здесь вход в загрузчик мог повлиять непонятно. Все очень странно. Да и от чего бы этому коду сломаться. Код extern uint8_t ucHeap[ configTOTAL_HEAP_SIZE ]; ... static void prvHeapInit( void ) { BlockLink_t *pxFirstFreeBlock; uint8_t *pucAlignedHeap; size_t uxAddress; size_t xTotalHeapSize = configTOTAL_HEAP_SIZE;
/* Ensure the heap starts on a correctly aligned boundary. */ uxAddress = ( size_t ) ucHeap;
if( ( uxAddress & portBYTE_ALIGNMENT_MASK ) != 0 ) { uxAddress += ( portBYTE_ALIGNMENT - 1 ); uxAddress &= ~( ( size_t ) portBYTE_ALIGNMENT_MASK ); xTotalHeapSize -= uxAddress - ( size_t ) ucHeap; } ... Как можно здесь прочитать в uxAddress нулевое значение? Но получается именно так если верить GDB, с этого начинаются проблемы.
|
|
|
|
|
Jun 29 2017, 07:37
|

Частый гость
 
Группа: Свой
Сообщений: 167
Регистрация: 25-12-09
Из: Минск
Пользователь №: 54 460

|
Была подобная ситуация, только такое поведение наблюдалось когда BOOT1 был затянут в 1 (system memory), но ПО запускал через отладку, причина была в срабатывании необрабатываемого прерывании.
ИМХО, причина не в компиляторе, я бы на Вашем месте залогировал все обработчики прерываний, даже те которые не используете, и те которые не маскируемые.
Возможно Вы эти этапы уже прошли, но я бы прошелся по следующим шагам: 1. Временно выключил основной функционал прошивки, оставить только светодиодную индикацию, чтобы понимать, что ПО работает, частотой моргания диода подтвердить рабочую частоту. Если на плате нет диода, дергаем какой-либо пин, контролируем его каким либо осцилоскопом. 2. Зашить и проверить работоспособность ПО на первом устройстве, рабочем устройстве! 3. Зашить второе устройство убедиться в НЕ работоспособности. 3.1 Если вдруг случайно заработает, добавляем пошагово необходимый функционал, ищем причину. 4. Если Вы пишите что добавлен только резистор, чтобы убедиться что проблема в нем, демонтировав его, порезать линию управления EN (DC\DC) 4.1 Резистора нет, но ПО НЕ грузится искать другие отличия в схеме. 5. Без резистора ПО грузится? Снять и опубликовать на форуме осциллограммы сигналов: питание, reset, boot1.
|
|
|
|
Сообщений в этой теме
amaora Не стартует STM32F405 Jun 25 2017, 19:29 adnega Цитата(amaora @ Jun 25 2017, 22:29) Не зн... Jun 25 2017, 20:40 amaora Цитата(adnega @ Jun 25 2017, 23:40) Может... Jun 26 2017, 12:31 Genadi Zawidowski Кажется, внутренний pull-down это особенность BOOT... Jun 25 2017, 20:53 Obam Ну не бывает чудес.
" Если снять питание и сн... Jun 26 2017, 08:04 amaora Посмотрел через отладку по SWD, что там происходит... Jun 26 2017, 17:46 amiller Цитата(amaora @ Jun 25 2017, 23:29) Сдела... Jun 27 2017, 04:17 Obam Цитата(amiller @ Jun 27 2017, 08:17) Може... Jun 27 2017, 07:25 x893 В любом электротехникуме есть предмет на первом ку... Jun 29 2017, 08:59 Obam В конце июня (; актуальный совет, особенно участни... Jun 29 2017, 11:41 amaora Причина все таки в компиляторе, точнее в моем его ... Jun 30 2017, 16:24 amaora Новые версии GCC были собраны с --enable-default-p... Jul 1 2017, 16:59 esaulenka amaora, Вы их где берёте?
Вроде б на launchpad... Jul 3 2017, 07:35 amaora Цитата(esaulenka @ Jul 3 2017, 10:35) ama... Jul 3 2017, 11:41
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|