STM32 DFU через UART записывает неверные данные

Я работаю над обновлением прошивки, чтобы основной контроллер системы мог программировать другие микросхемы STM32. Я использую UART на скорости 115200 бит / с с 8E1, как написано в примечаниях к приложениям AN2606 и AN3155. В настоящее время я пытаюсь прошить STM32F429. Я могу читать флэш без проблем.

Чтобы проверить функциональность записи, я записываю 8 байтов по адресам, кратным 4, как предложено в AN3155. Я проверил строки данных с помощью логического анализатора, и все отправлено правильно, и STM отвечает ACK на все.

Когда я пытаюсь прочитать его, я получаю случайные значения в этих местах. Значения всегда одинаковы при записи на один и тот же базовый адрес, но они изменяются при записи в другом месте.

Я установил регистр конфигурации диапазона напряжения ( AN2606 стр. 30) на 0x03, потому что мой источник питания 3,3В. Объяснение этого регистра довольно запутанное, поэтому я даже не уверен, что этот параметр правильный, и я не смог найти ничего другого, что могло бы пойти не так.

ОБНОВИТЬ:

Я попытался записать все 4-байтовые выровненные адреса, а затем прочитать их для сравнения. Я сделал это с различными размерами данных. Все записи неверны по базовому адресу сектора. Неудачные адреса имеют следующие шаблоны:

Bytes   Incorrect write addresses
  4     0, 10, 20, 30, ...
  8     0, 0C, 1C, 2C, 3C, ...
 12     0, 08, 18, 28, 38, ...
 16     0, 04, 14, 24, 34, ...
 32     0  04, 14, 24, 34, ...
 64     0, 04, 08, 0C, 14, 18, 1C, 24, ...
128     all 
256     all 

РЕШЕНИЕ:

Doh! Была проблема со стиранием вспышки, которую я не заметил.

1 ответ

Оригинальный загрузчик STM не очень хорош в реальной разработке, так как он не обеспечивает двух основных функций.

  • он не обеспечивает расшифровку, и ваша прошивка может быть украдена кем-либо (поэтому защита устройства не имеет никакого смысла, так как вы должны публиковать "простое" незашифрованное двоичное изображение)

  • не проверяет целостность приложения во флеше

  • он не работает с защищенными устройствами

Самый простой способ - написать свой собственный загрузчик и реализовать все эти функции.

Другие вопросы по тегам