1

Тема: Прошивка stm32

Добрго дня.
З'явилася проблема з прошивкою мікроконтролера stm32. Видає помилки при верифікації (якщо прошивати через keil). ПЗ складається з бутлоадера та основної програми. Якщо видалити і бутлоадер і програму, то в перший раз прошивається без проблем. Також це проявляється тільки для дебагу - у релізі таких проблем не побачив. Перевірив відмінності налаштування для дебагу і релізу, то не побачив щось, що могло спричинити такі проблеми.
Це то що видає keil:

Erase Done.
Programming Done.
Contents mismatch at: 08080000H  (Flash=15H  Required=55H) !
Contents mismatch at: 08080001H  (Flash=26H  Required=6EH) !
Contents mismatch at: 08080002H  (Flash=23H  Required=63H) !
Contents mismatch at: 08080003H  (Flash=28H  Required=6FH) !
Contents mismatch at: 08080004H  (Flash=31H  Required=75H) !
Contents mismatch at: 08080005H  (Flash=20H  Required=68H) !
Contents mismatch at: 08080007H  (Flash=00H  Required=20H) !
Contents mismatch at: 08080008H  (Flash=40H  Required=43H) !
Contents mismatch at: 08080018H  (Flash=00H  Required=10H) !
Contents mismatch at: 08080020H  (Flash=00H  Required=10H) !
Contents mismatch at: 08080024H  (Flash=00H  Required=08H) !
Contents mismatch at: 0808002CH  (Flash=00H  Required=43H) !
Contents mismatch at: 08080038H  (Flash=00H  Required=10H) !
Contents mismatch at: 0808003CH  (Flash=03H  Required=13H) !
Contents mismatch at: 08080044H  (Flash=00H  Required=10H) !
Contents mismatch at: 08080048H  (Flash=00H  Required=01H) !
Contents mismatch at: 08080050H  (Flash=00H  Required=10H) !
Contents mismatch at: 08080054H  (Flash=00H  Required=02H) !
Contents mismatch at: 0808005CH  (Flash=00H  Required=10H) !
Contents mismatch at: 08080060H  (Flash=10H  Required=14H) !
Contents mismatch at: 08080068H  (Flash=00H  Required=2DH) !
Contents mismatch at: 08080074H  (Flash=00H  Required=11H) !
Contents mismatch at: 08080080H  (Flash=00H  Required=10H) !
Contents mismatch at: 08080084H  (Flash=10H  Required=12H) !
Contents mismatch at: 0808008CH  (Flash=00H  Required=14H) !
Contents mismatch at: 08080090H  (Flash=00H  Required=2BH) !
Contents mismatch at: 08080098H  (Flash=00H  Required=31H) !
Contents mismatch at: 080800A4H  (Flash=00H  Required=14H) !
Contents mismatch at: 080800A8H  (Flash=21H  Required=2BH) !
Contents mismatch at: 080800B0H  (Flash=00H  Required=14H) !
Contents mismatch at: 080800B4H  (Flash=00H  Required=22H) !
Contents mismatch at: 080800BCH  (Flash=00H  Required=14H) !
Contents mismatch at: 080800C0H  (Flash=00H  Required=23H) !
Contents mismatch at: 080800C8H  (Flash=00H  Required=14H) !
Contents mismatch at: 080800CCH  (Flash=00H  Required=2BH) !
Contents mismatch at: 080800D4H  (Flash=00H  Required=14H) !
Contents mismatch at: 080800D8H  (Flash=00H  Required=22H) !
Contents mismatch at: 080800E0H  (Flash=00H  Required=14H) !
Contents mismatch at: 080800E4H  (Flash=00H  Required=2BH) !
Contents mismatch at: 080800ECH  (Flash=00H  Required=1BH) !
Contents mismatch at: 080800F8H  (Flash=00H  Required=14H) !
Contents mismatch at: 080800FCH  (Flash=0BH  Required=0FH) !
Contents mismatch at: 08080104H  (Flash=00H  Required=14H) !
Contents mismatch at: 08080108H  (Flash=14H  Required=17H) !
Contents mismatch at: 08080110H  (Flash=00H  Required=14H) !
Contents mismatch at: 08080114H  (Flash=00H  Required=2BH) !
Contents mismatch at: 0808011CH  (Flash=00H  Required=14H) !
Contents mismatch at: 08080120H  (Flash=14H  Required=17H) !
Contents mismatch at: 08080128H  (Flash=00H  Required=14H) !
Contents mismatch at: 0808012CH  (Flash=14H  Required=17H) !
Contents mismatch at: 08080134H  (Flash=00H  Required=14H) !
Contents mismatch at: 08080138H  (Flash=14H  Required=17H) !
Contents mismatch at: 08080140H  (Flash=00H  Required=4BH) !
Contents mismatch at: 0808014CH  (Flash=00H  Required=14H) !
Contents mismatch at: 08080150H  (Flash=02H  Required=16H) !
Contents mismatch at: 08080158H  (Flash=00H  Required=14H) !
Contents mismatch at: 0808015CH  (Flash=10H  Required=1BH) !
Contents mismatch at: 08080164H  (Flash=00H  Required=4BH) !
Contents mismatch at: 08080170H  (Flash=00H  Required=14H) !
Contents mismatch at: 08080174H  (Flash=0BH  Required=1BH) !
Contents mismatch at: 0808017CH  (Flash=00H  Required=14H) !
Contents mismatch at: 08080180H  (Flash=04H  Required=0FH) !
Contents mismatch at: 08080188H  (Flash=00H  Required=14H) !
Contents mismatch at: 0808018CH  (Flash=10H  Required=1AH) !
Contents mismatch at: 08080194H  (Flash=00H  Required=4BH) !
Contents mismatch at: 080801A0H  (Flash=00H  Required=14H) !
Contents mismatch at: 080801A4H  (Flash=0AH  Required=1EH) !
Contents mismatch at: 080801ACH  (Flash=00H  Required=14H) !
Contents mismatch at: 080801B0H  (Flash=14H  Required=1FH) !
Contents mismatch at: 080801B8H  (Flash=00H  Required=14H) !
Contents mismatch at: 080801BCH  (Flash=04H  Required=0FH) !
Contents mismatch at: 080801C4H  (Flash=00H  Required=14H) !
Contents mismatch at: 080801C8H  (Flash=00H  Required=29H) !
Contents mismatch at: 080801D0H  (Flash=00H  Required=14H) !
Contents mismatch at: 080801D4H  (Flash=00H  Required=2BH) !
Contents mismatch at: 080801DCH  (Flash=00H  Required=14H) !
Contents mismatch at: 080801E0H  (Flash=00H  Required=2AH) !
Contents mismatch at: 080801E8H  (Flash=00H  Required=24H) !
Contents mismatch at: 080801F4H  (Flash=00H  Required=14H) !
Contents mismatch at: 080801F8H  (Flash=20H  Required=29H) !
Contents mismatch at: 08080200H  (Flash=00H  Required=24H) !
Contents mismatch at: 0808020CH  (Flash=00H  Required=24H) !
Contents mismatch at: 0808022CH  (Flash=00H  Required=80H) !
Contents mismatch at: 0808022DH  (Flash=00H  Required=02H) !
Contents mismatch at: 08080230H  (Flash=00H  Required=18H) !
Contents mismatch at: 0808023CH  (Flash=80H  Required=D8H) !
Contents mismatch at: 0808023DH  (Flash=00H  Required=34H) !
Contents mismatch at: 0808023EH  (Flash=00H  Required=08H) !
Contents mismatch at: 0808023FH  (Flash=00H  Required=08H) !
Contents mismatch at: 08080254H  (Flash=00H  Required=0AH) !
Contents mismatch at: 08080260H  (Flash=00H  Required=0FH) !
Contents mismatch at: 0808026CH  (Flash=00H  Required=23H) !
Contents mismatch at: 08080278H  (Flash=00H  Required=23H) !
Contents mismatch at: 08080284H  (Flash=00H  Required=55H) !
Contents mismatch at: 08080290H  (Flash=00H  Required=12H) !
Contents mismatch at: 0808029CH  (Flash=00H  Required=14H) !
Contents mismatch at: 080802A8H  (Flash=00H  Required=13H) !
Contents mismatch at: 080802B4H  (Flash=00H  Required=15H) !
Contents mismatch at: 080802C0H  (Flash=00H  Required=11H) !
Contents mismatch at: 080802E0H  (Flash=00H  Required=C0H) !
Too many errors to display !
Error: Flash Download failed  -  "Cortex-M4"

Може хтось стикався з такою проблемою? Це також не дозволяє прошивати віддалено через бутлоадер - видає помилку запису (коли копіюємо дані до флеш).

2 Востаннє редагувалося ReAl (07.05.2024 20:31:37)

Re: Прошивка stm32

знущальний жарт

Зверніться у підтримку Keil

Важко допомогти, бо кайлом вперше і востаннє користувався для якихось експериментів років так 25 тому. Для Cortex-M точно не пробував.
Але лог виглядає так, наче кристал насправді не був стертий. Пробігся по числах — у правій частині (Required) скрізь не вистачає одиничок, тобто в кристалі вже щось було, а 0→1 записатися не може, потрібне стирання.
Можливо, повне стирання («Якщо видалити і бутлоадер і програму») спрацьовує.
А далі щось не дає, може карта захисту секторів в option bytes (nWRP) не дає писати.
Це на етапі запису не видно, лише коли верифікацію робити.
Якщо є можливість у кайлі провести верифікацію чистоти (~"blank check") після стирання, можна подивитися.

Користуюся

gcc що по роботі, що для себе (хоча по роботі вилазить пропрієтарщина то Metaware, то Renesas, але то по роботі, тому є підтримка). Прошиваю openocd, в опенсорсному можна хоча б намагатися щось пофіксити, і як показує досвід, опенсорсна спільнота швидше реагує на баг-репорти, ніж виробник мікросхем на тих, хто купує мікроконтролери великими коробками а не маленькими контейнерами, чи виробник компіляторів на тих, хто купив парочку ліцензій, а не кілька десятків

3

Re: Прошивка stm32

Доброго дня. Так, стирав пам'ять декілька разів. Після очищення прошивка завантажується без проблем, але далі знову теж саме. Кайло використовує на роботі, бо коли прийшов, то його вже використовували. На майбутнє хочу проекти переробити на gcc. Дома використовую gcc + cmake. Дякую.

4

Re: Прошивка stm32

Є можливість після отого "Erase Done" вставити перевірку чистоти?

Erase Done.
Programming Done.
Contents mismatch at: 08080000H  (Flash=15H  Required=55H) !
Contents mismatch at: 08080001H  (Flash=26H  Required=6EH) !
Contents mismatch at: 08080002H  (Flash=23H  Required=63H) !

Є можливість після першого програмування подивитися всі option bytes?
Бо, повторюся, виглядає наче "Erase Done" нічого не зробило