Не найден флэш-банк для адреса 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 работают без ошибок.