Не найден флэш-банк для адреса 0x00000000

Я пытаюсь прошить мою прошивку в STM32L152, но вместо этого у меня есть:

Open On-Chip Debugger 0.10.0 + dev-00312-g1a3cbbf3 (2018-03-02-20: 11)
Лицензия под GNU GPL v2
Для отчетов об ошибках, прочитайте
    http://openocd.org/doc/doxygen/bugs.html
Скорость адаптера: 300 кГц
адаптер_nsrst_delay: 100
Информация: выбранный транспорт взял на себя контроль цели низкого уровня. Результаты могут отличаться по сравнению с простым JTAG/SWD
не отдельный
Информация: Невозможно соответствовать запрошенной скорости 300 кГц, используя 240 кГц
Информация: Невозможно соответствовать запрошенной скорости 300 кГц, используя 240 кГц
Информация: тактовая частота 240 кГц
Информация: STLINK v2 JTAG v28 API v2 SWIM v6 VID 0x0483 PID 0x3748
Информация: используя stlink api v2
Информация: Целевое напряжение: 1.769170
Информация: stm32l1.cpu: аппаратное обеспечение имеет 6 точек останова, 4 точки наблюдения
Информация: прослушивание порта 3333 для соединений GDB
Информация: Невозможно соответствовать запрошенной скорости 300 кГц, используя 240 кГц
Информация: Невозможно соответствовать запрошенной скорости 300 кГц, используя 240 кГц
Скорость адаптера: 240 кГц
цель остановлена ​​из-за запроса отладки, текущий режим: поток
xPSR: 0x01000000 pc: 0x0800b324 msp: 0x20007ffc
STM32L: Включение HSI
Информация: Невозможно соответствовать запрошенной скорости 2000 кГц, используя 1800 кГц
Информация: Невозможно соответствовать запрошенной скорости 2000 кГц, используя 1800 кГц
Скорость адаптера: 1800 кГц
** Программирование началось **
автоматическое стирание включено
Информация: Устройство: STM32L1xx (Кат.3 - Средняя + Плотность)
Информация: Размер флэш-памяти STM32L - 256 КБ, базовый адрес - 0x8000000.Предупреждение: флэш-банк не найден для адреса 0x00000000 записал 0 байт из файла build/firmware.bin за 0,003700 с (0,000 КиБ / с)
** Программирование завершено **
** Проверка началась **
цель остановлена ​​из-за точки останова, текущий режим: поток
xPSR: 0x61000000 ПК: 0x2000002e msp: 0x20007ffc
Ошибка: несоответствие контрольной суммы - попытка двоичного сравнения
diff 0 address 0x00000004. Был 0x25 вместо 0xb5
адрес diff 1 0x00000005. Был 0xb3 вместо 0xa7~~~~ Лота тех ~~~~ Более 128 ошибок, остальные не распечатаны.
** Проверить не удалось **
команда выключения вызвана

firmware.cfg

источник [найти интерфейс /stlink.cfg]

установить WORKAREASIZE 0x8000
транспортный выбор hla_swd

источник [найти цель /stm32l1.cfg]

init_reset halt

программа build/firmware.bin проверить сброс выхода

Самое смешное, когда пытаешься программировать firmware.elf, все отлично. Конечно, firmware.bin генерируется из firmware.elfпоэтому они используют один и тот же скрипт компоновщика (или я ошибаюсь в этой части?):

MEMORY { FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 256K RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 32K } ...

Я также пробовал OpenOCD 0.10.0 а также 0.9.0,

2 ответа

Решение

написал 0 байт из файла build/firmware.bin

Файл firmware.bin потерял информацию о смещении, так как он находится в необработанном двоичном формате. Вам лучше попытаться прошить файл firmware.elf напрямую.

В качестве альтернативы вы можете попробовать ввести правильное смещение флэш-памяти в команду OpenOCD:

program build/firmware.bin 0x08000000 verify reset exit

Я указываю адрес, но все равно получаю сообщение об ошибке: Предупреждение: для адреса 0x08010000 не найден флэш-банк, и проверка не удалась. Пользуюсь 0.12.0 от 02.10.23.

Примечание. Те же файлы в Linux работают без ошибок.

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