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 не очень хорош в реальной разработке, так как он не обеспечивает двух основных функций.
он не обеспечивает расшифровку, и ваша прошивка может быть украдена кем-либо (поэтому защита устройства не имеет никакого смысла, так как вы должны публиковать "простое" незашифрованное двоичное изображение)
не проверяет целостность приложения во флеше
он не работает с защищенными устройствами
Самый простой способ - написать свой собственный загрузчик и реализовать все эти функции.