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

 
 
> Не стартует STM32F405
amaora
сообщение Jun 25 2017, 19:29
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 421
Регистрация: 2-01-08
Пользователь №: 33 778



Сделал новую ревизию платы, в части МК изменилось только, что BOOT1 теперь идет на EN вход внешнего DC/DC. Вроде бы не должно никак мешать, когда контроллер в сбросе или загрузчике BOOT1 притянут к земле резистором 10К.

Однако, теперь после загрузки кода по USART через встроенный загрузчик, происходит странное. Сразу после загрузки МК работает как должно. Если снять питание и снова подать, то поведение как у чистого МК со стертым флешем. Но если не дергая питания, перейти в загрузчик сделав BOOT0=1 и сброс а затем (ничего на загружая) вернуть BOOT0=0 и снова сделать сброс, то стартует прошитый ранее код из флеш. Один только сброс не помогает.

Похоже, на то, что я что-то недоиницилизирую, но и здесь я изменял только настройки тактирования под новую частоту кварца. И раньше такого не было никогда.

Пробовал зажигать светодиоды перед всей инициализацией, прямо в обработчике reset прерывания. Ничего не увидел, даже туда не доходит.

Не знаю на что подумать, что проверить.

Сообщение отредактировал amaora - Jun 26 2017, 12:24
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
amaora
сообщение Jun 28 2017, 16:48
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 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, с этого начинаются проблемы.

Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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
|- - Integro   Была подобная ситуация, только такое поведение наб...   Jun 29 2017, 07:37
- - 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


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 15:55
Рейтинг@Mail.ru


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