STM32 DFU через UART записывает неверные данные - PullRequest
0 голосов
/ 24 октября 2018

Я работаю над обновлением прошивки, чтобы основной контроллер системы мог программировать другие микросхемы 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 Ответ

0 голосов
/ 25 октября 2018

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

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

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

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

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

...