STM8 TinyBoot V5.3 源码

2020-01-03 19:07发布

<i class="pstatus"> 本帖最后由 way2888 于 2014-9-12 19:39 编辑 </i><br> <br><p> MCU里面的工程用CD-EWSTM8-1311编译生成,如果1422生成的代码估计有问题的,大致看了下反汇编,貌似1422版本下的把RET指令跳到FLASH里再返回的增加了用户程序和BOOTLOADER合并生成HEX文件,供下载器一次烧写完成完整编程大概介绍一下使用方法吧:</p><p> 合并HEX文件:</p><p> 打开用户的HEX文件,并设置好BOOTLOADER配置,然后点击文件菜单里的合并HEX固件即可让BOOTLOADER和用户程序合为一个文件</p><p> 用户程序下载:</p><p> 首先运行软件,根据自己的编程要求设置好Bootloader的选项,其中包括选择芯片型号,芯片容量,和使用的UART(针对S207,S208,因为它有2个UART),以及使用的通信波特率.</p><p> 如果使用UART自定义接口的,在未保证你的程序一定能响应就绪命令而跳转到Bootloader之前,建议保留使用IO状态进入Bootloader(只在芯片上电的时候,IO状态判定是否进入),如果你设置的Bootloader是禁止IO状态进入的话,而你的应用程序又未调通UART时,这样的情况下升级是会变砖的.因为Bootloader没有强制延时等待升级的功能.</p><p>当设置好你要求的Bootloader后,点击文件菜单里的保存Bootloader,这样就生成你刚才设置的Bootloader文件.再通过下载器(ST-LINK)下载到芯片中.</p><p> 此后,你若需要下载程序只需要打开本软件,打开你要下载的文件,确认当前的Bootloader设置与写进芯片里的设置要一致后,点击下载即可.</p><p> 如果是使用UART自定义接口跳转到Bootloader的话,在点击下载之前,先在帮助里的就绪文本框里输入你应用程序需要的十六进制数据.再点击下载即可.</p><p> Bootloader更新:</p><p> 首先设置好新的Bootloader设置,除CHIP和SIZE外,其余的可以和芯片里的设置可以不相同(CHIP和SIZE绝对要和写进芯片里的设置要一致)</p><p> 通信里的波特率(记住,不是Bootloader的BPS)必须与芯片内的设置一致,然后点击文件的更新Bootloader,则可更新新设置的Bootloader.</p><p> 更新Bootloader后,再下载用户程序即可(方法见上)</p><p> 举个例子吧:</p><p> &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;原来写到芯片的UART的BPS是115200,现在希望新Bootloader使用9600通信</p><p> &nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;1.先设置Bootloader的BPS为9600,选择通信的波特率要与芯片的115200一致,</p><p> &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;2.确认其他设置都匹配,和就绪命令都设置好了,点击更新Bootloader.</p><p> &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;3.当显示更新完成后,更改通信设置的波特率为9600,再打开你的应用程序升级即可 </p><p>链接:&nbsp;https://pan.baidu.com/s/1IeMhJHUHklh8DbBrdJR7_w&nbsp;提取码:&nbsp;veg7</p><p><br></p>
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
99条回答
way2888
1楼-- · 2020-01-05 18:34
dxslp 发表于 2014-9-16 10:02
我使用就绪码  显示下载引导程序。。。。过一会提示通讯失败,难道是ram区太小了 不够用了?  还有个问题是 ...

这种情况应该是升级过程中,usb转串口ic复位导致,你试试更换usb转串口线看看
dxslp
2楼-- · 2020-01-05 23:05
way2888 发表于 2014-9-16 12:10
这种情况应该是升级过程中,usb转串口ic复位导致,你试试更换usb转串口线看看 ...

恩 换了一个可以用了,但是我如果使用pin脚使能的话就没问题,还有一个问题,如果app程序本身使用了串口,正好接收了A4(就绪码),程序就停留在了bootloader的入口 死机了 上次跟你讨论过这个事,今天实践了一下,用串口调试软件给stm8发送一个就绪码,直接就死在那了。
qq11qqviki
3楼-- · 2020-01-06 05:04
感谢分享
dxslp
4楼-- · 2020-01-06 08:24
 精彩回答 2  元偷偷看……
way2888
5楼-- · 2020-01-06 11:31
dxslp 发表于 2014-9-16 12:46
恩 换了一个可以用了,但是我如果使用pin脚使能的话就没问题,还有一个问题,如果app程序本身使用了串口 ...

就绪跳转bootloader是用户程序决定,所以你可以设置就绪命令足够安全才跳转就好了,比如连续20个字节指定的数据,这样就不可能轻易碰巧触发进入bootloader
dxslp
6楼-- · 2020-01-06 12:14
way2888 发表于 2014-9-16 13:02
就绪跳转bootloader是用户程序决定,所以你可以设置就绪命令足够安全才跳转就好了,比如连续20个字节指定 ...

AAD08300204000000081C30543E404E7048581891E017B05F7858189F61A05F78581897B0543F4F7858189CC
                        :2081C3000543E404E7048581891E017B05F7858189F61A05F78581897B0543F4F7858189F5
上面一行是主机发送完bootloader给mcu后发送的数据,下面一行是我发送的hex文件的内容
其中AA和CC好理解  D08300204000000081C30这一段不知道怎么理解

AA4C4C000540FE000000000000000000CC
这一段是发完程序后发送的,也不好理解

楼主能解释下D08300204000000081C30各数的含义吗