我正在尝试将我的固件刷入 STM32L152,但我有:
打开片上调试器 0.10.0+dev-00312-g1a3cbbf3 (2018-03-02-20:11) 在 GNU GPL v2 下获得许可 有关错误报告,请阅读 http://openocd.org/doc/doxygen/bugs.html 适配器速度:300 kHz 适配器_nsrst_delay:100 信息:选定的传输接管低级目标控制。与普通 JTAG/SWD 相比,结果可能有所不同 没有分开的 信息:无法匹配请求的速度 300 kHz,使用 240 kHz 信息:无法匹配请求的速度 300 kHz,使用 240 kHz 信息:时钟速度 240 kHz 信息:STLINK v2 JTAG v28 API v2 SWIM v6 VID 0x0483 PID 0x3748 信息:使用 stlink api v2 信息:目标电压:1.769170 信息:stm32l1.cpu:硬件有 6 个断点,4 个观察点 信息:在端口 3333 上侦听 gdb 连接 信息:无法匹配请求的速度 300 kHz,使用 240 kHz 信息:无法匹配请求的速度 300 kHz,使用 240 kHz 适配器速度:240 kHz 目标因调试请求而停止,当前模式:线程 xPSR:0x01000000 pc:0x0800b324 msp:0x20007ffc STM32L:启用 HSI 信息:无法匹配请求的速度 2000 kHz,使用 1800 kHz 信息:无法匹配请求的速度 2000 kHz,使用 1800 kHz 适配器速度:1800 kHz **编程开始** 启用自动擦除 信息:设备:STM32L1xx(Cat.3 - 中等+密度) 信息:STM32L 闪存大小为 256kb,基地址为 0x8000000 警告:找不到地址 0x00000000 的闪存库 在 0.003700s (0.000 KiB/s) 内从文件 build/firmware.bin 写入 0 个字节 **编程完成** **验证开始** 目标因断点而暂停,当前模式:线程 xPSR:0x61000000 pc:0x2000002e msp:0x20007ffc 错误:校验和不匹配 - 尝试二进制比较 差异 0 地址 0x00000004。是 0x25 而不是 0xb5 差异 1 地址 0x00000005。是 0xb3 而不是 0xa7 ~~~~~~~~~~~~~~~~~~~~~~~~ 超过128个错误,其余不打印。 ** 验证失败 ** 调用的关机命令
固件.cfg
来源[查找接口/stlink.cfg] 设置 WORKAREASIZE 0x8000 运输选择 hla_swd 源 [查找目标/stm32l1.cfg] init_reset 停止 程序 build/firmware.bin 验证重置退出
有趣的是,在尝试编程时firmware.elf
,一切正常。当然,firmware.bin
是从 生成的firmware.elf
,所以它们共享相同的链接器脚本(或者我在这部分错了?):
MEMORY
{
FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 256K
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 32K
}
...
我也尝试过 OpenOCD0.10.0
和0.9.0
.