Могу ли я использовать загрузчик ПЗУ STM32F303RDTx с защитой от чтения флэш-памяти уровня 1?
ST предоставляет загрузчик ПЗУ в STM32F303RDTx. Я могу перейти в загрузчик из своего приложения и обновить флеш-память, когда защита от чтения (RDP) отключена (уровень 0). Когда RDP установлен на уровень 1, все попытки отключить RDP (который стирает флэш-память) терпят неудачу. Все, что я пробовал до сих пор, похоже, запускает сброс устройства, возвращая меня в мое приложение.
В документации ST (AN2606 и AN3155) говорится, что это должно быть возможно, но ничего из того, что я пробовал, не работает. Я пробовал демо-прошивальщик графического интерфейса ST. Я также пробовал массово стереть данные с устройства и отключить защиту от чтения через клиент командной строки ST.
Единственное, о чем я могу думать, это то, что я прыгаю в загрузчик, а не использую загрузочные штифты для включения загрузчика. Однако даже это, похоже, учла ST, поскольку они заявляют, что они периодически обновляют сторожевой таймер (IWD), если он был включен вызовом кода.
Попытка отключить защиту считывания:
C:\Program Files (x86)\STMicroelectronics\Software\Flash Loader Demo>STMFlashLoader.exe -c --pn 6 --br 115200 --db 8 --pr EVEN -i STM32F3_03_02_512K -p --drp
Opening Port [OK]
Activating device [KO]
Unrecognized device... Please, reset your device then try again
Please, reset your device then press any key to continue
Press any key to continue ...
Попытка массового стирания:
C:\Program Files (x86)\STMicroelectronics\Software\Flash Loader Demo>STMFlashLoader.exe -c --pn 6 --br 115200 --db 8 --pr EVEN -i STM32F3_03_02_512K -e --all
Opening Port [OK]
Activating device [KO]
Unrecognized device... Please, reset your device then try again
Please, reset your device then press any key to continue
Press any key to continue ...
Вышеупомянутые команды выполняются без ошибок, когда защита считывания не включена.
Попытка отключить защиту считывания (когда она уже отключена):
C:\Program Files (x86)\STMicroelectronics\Software\Flash Loader Demo>STMFlashLoader.exe -c --pn 6 --br 115200 --db 8 --pr EVEN -i STM32F3_03_02_512K -p --drp
Opening Port [OK]
Activating device [OK]
disabling read protection [OK]
reseting device [KO]
Как было предложено в комментариях, я попробовал STMCubeProgrammer с уровнем детализации 3 (макс.). Вот ошибки, которые я получаю:
10:27:43:749 : Serial Port COM6 is successfully opened.
10:27:43:749 : Port configuration: parity = even, baudrate = 115200, data-bit = 8, stop-bit = 1.0, flow-control = off
10:27:43:750 : No Init bits value is : 0
10:27:43:750 : Sending init command:
10:27:43:750 : byte 0x7F sent successfully to target
10:27:43:765 : Wait ends after 1 loop, dataready = 1, delay = 18
10:27:43:765 : Received response from target: 0x43
10:27:43:766 : byte 0x7F sent successfully to target
10:27:43:782 : Wait ends after 1 loop, dataready = 1, delay = 16
10:27:43:783 : Received response from target: 0x6f
10:27:43:783 : Error: Activating device: KO. Please, verify the boot mode configuration and check the serial port configuration. Reset your device then try again...
10:27:43:979 : Disconnected from device.
10:27:44:018 : Serial Port COM6 is successfully opened.
10:27:44:018 : Port configuration: parity = even, baudrate = 115200, data-bit = 8, stop-bit = 1.0, flow-control = off
10:27:44:018 : No Init bits value is : 0
10:27:44:019 : Sending init command:
10:27:44:019 : byte 0x7F sent successfully to target
10:27:45:019 : Wait ends after 1 loop, dataready = 0, delay = 1001
10:27:45:019 : Timeout error occured while waiting for acknowledgement.
10:27:45:020 : No response from target received
10:27:45:020 : byte 0x7F sent successfully to target
10:27:45:120 : Wait ends after 1 loop, dataready = 0, delay = 101
10:27:45:120 : Timeout error occured while waiting for acknowledgement.
10:27:45:121 : No response from target received
10:27:45:121 : Error: Activating device: KO. Please, verify the boot mode configuration and check the serial port configuration. Reset your device then try again...
Я также разместил это на сайте сообщества ST здесь.