完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在使用最新的 STMCubeProgrammer/ST-Link-Utility 版本。我的目标是直接在 .elf/.hex 文件中提供选项字节,所以我们的制造部门只需要下载这个文件。
我已经设法将设置自动放入 .elf/.hex 文件中。但是当我尝试对设备进行编程时,出现验证错误。设备似乎(!)已正确编程,但我想确定一下。 该设备是 L011F4。调试和发布版本对应的选项字节有两种配置。对于调试版本,选项字节与工厂交付的空白设备相同。对于发布版本,RDP 级别为 1,并且引导加载程序引脚被禁用。两种配置都没有写保护。 即使对于没有 RDP 的调试版本,验证也会失败,我不知道为什么。这是我对 STM32_Programmer_CLI.exe 的调用: -c port=swd freq=4000 ap=0 index=0 mode=normal -vb 1 -rdu -e all -d %1 -v %1 替换为 .elf/.hex 文件的名称。我知道“ap=0”和“index=0”是默认值,这只是为了将来可能的扩展(并行编程等)。详细级别也一样,这是为了调试脚本。我不确定“-e all”是否多余,因为如果我理解正确的话,“-rdu”应该会自动完全擦除设备。-v 是明确验证下载。 这是应用程序数据区之后的调试 .hex 文件的内容: :020000041FF8E3 => 设置高地址字节(0x1FF8,选项字节的位置) :10000000 AA00 55FF 7080 8F7F0000FFFF0000FFFFF8 :040010000000FFFFEE :04000005080039A90D :00000001FF => 十六进制文件结束 这应该将 FLASH_OPTR@0x1FF8000/4 = 0x807000AA(默认值)和 FLASH_WRPROT1 和 2 寄存器 @0x1FF8008/C/10 设置为无写保护。还包括高半字中的反向位。 通过上面的脚本,根据STM32_Programmer_CLI.exe的输出,重置RDP级别,批量擦除和下载都可以,但是验证在第二个字节停止: 正在验证... 读取进度: ███▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ 6% 错误:在地址 0x08000001 处发现数据不匹配(字节 = 0x00 而不是 0x08) 错误:下载验证失败 由于 RDP 已重置,因此应该可以验证设备。 使用较旧的 ST-Link Utility 时,似乎无法轻松重置 RDP 级别,并且使用 STMCubeProgrammer 的 GUI 版本来验证我的脚本是否有错误会丢失连接(此外,似乎没有办法以通过 GUI 的设置禁止选项字节编程)。 所以,我有点不知所措可能会出什么问题:/有什么想法吗? |
|
相关推荐
1个回答
|
|
我想我找到了一个解决方案——不是使用 srecord,而是 objcopy。这是我的批处理文件:
|
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2413 浏览 1 评论
3129 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1698 浏览 1 评论
3511 浏览 6 评论
5867 浏览 21 评论
857浏览 4评论
1232浏览 4评论
在Linux上安装Atollic TRUEStudio的步骤有哪些呢?
501浏览 3评论
使用DMA激活某些外设会以导致外设无法工作的方式生成代码是怎么回事
1214浏览 3评论
1269浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-20 22:42 , Processed in 0.837775 second(s), Total 45, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号