关于STM32烧录工具STMFlashLoader开发避坑指南

官方提供了一份V2.8的命令行源码版,API文档里本来也没几个函数,但是命令行的参数多到离谱,如果新手刚接触的话,最难的是理解它的整个烧录流程!

现在就只能根据命令行的所有参数,不断尝试测试出下正确的流程了!

只要串口打开过一次,关闭串口后芯片就得断电复位了,这是什么奇葩的规则!

经过一个小时的摸索,可以总结了以下几点:

1、先设置串口参数 (调用一次即可,不用的时候调COM_Close)

      TARGET_SetComInitType(0);

      SetCOMSettings

      STBL_SetFlowControl(FALSE)

      COM_Open

      SetTimeOut(1000)

      STBL_SetEcho(FALSE)

2、初始化芯片

      在使用擦除、添加读保护、去掉读保护操作后,需要再次初始化.

      STBL_ERASE

      STBL_READOUT_PROTECT

      STBL_READOUT_PERM_UNPROTECT

      通过发送0x7F值启动系统内存引导加载程序配置,发送一个ACK握手包?

      STBL_Init_BL();

3、联机读取芯片PID

      查询ini配置表得到参数首地址[stmap文件Sector0 / Address] ,默认0x08000000

      STBL_GET

      SetTimeOut(15000)

      STBL_GET_ID

      STBL_READ(0x08000000, 4, szProtect);

      如果无保护的话就是4个0xFF,否则就是已经加密的话将不能做任何操作,只能先擦

4、获取版本属性

       STBL_GET_VER_ROPS

       第一个字节有效,例如为0x92,那版本就是V9.2

5、读写BID版本号[stmap文件Product / BID]

      例如STM32F4_27_37_29_39_2048K文件中的芯片PID:0x0419,对应的BID为1FFF76DE

       STBL_READ(0x1FFF76DE, 2, szBid);

       第一个字节有效,例如为0x92,那版本就是V9.2

6. 下载固件流程

      查询ini配置表得到参数首地址[stmap文件Sector0 / Address] ,默认0x08000000

      查询ini配置表得到参数首地址[stmap文件Sector0 / Size] ,默认4000

      a.从0x08000000基地址开始,分包大小0x4000下载

      b.如果buff全部为0xFF则不需要下载,直接跳过

      c.使用STBL_DNLOAD下载,STBL_VERIFY验证

      d.最后使用STBL_GO(0x08000000)运行

7. 启用保护流程(只读)

     使用STBL_READOUT_PROTECT开启即可

这样的话,其他的接口函数暂时没什么用处,一个适合自己的烧录工具就做好了!

=========================================================================

另外还有下面三个节点的参数没有理解,而且每个MAP不一定有,也不一定相同节点名,因为没有用到它就暂时没有深入研究!

OptBytes

OptBytesB1

OptBytesB2

如果有哪位大佬看到了说一声,谢谢!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汪宁宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值