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条回答
yanyi103
1楼-- · 2020-01-11 11:18
顶一下,楼主能将boot做这么小
lzchuo
2楼-- · 2020-01-11 11:29
 精彩回答 2  元偷偷看……
hecat
3楼-- · 2020-01-11 16:33
测试成功,真好用。

谢谢楼主。
hecat
4楼-- · 2020-01-11 19:30
本帖最后由 hecat 于 2015-9-3 23:12 编辑

非常感谢楼主设计的Tinyboot,非常好用。

这两天,把作者的关于Tinyboot相关的帖子翻了个遍,阅读了每个网友的回复,整理了下面的说明文档,方便新人入手。

概述:
  Tinyboot是一个适用于STM8S系列的微小Bootloader,单片机端仅占用256B Flash空间。
  Flash中的这256B代码,和上位机程序配合,实现完整的引导加载程序功能。

  256B的Flash代码,我们称它为Bootloader,实际是一个加载器。它从上位机接收真正的
  引导加载程序,放入RAM中运行。RAM中的引导加载程序与上位机通讯,实现用户程序及
  Bootloader自身的更新。
  
  "TinyBoot For STM8 Vx.x.exe"是上位机程序,负责生成单片机端的256B Bootloader
  HEX文件、下载引导加载程序到RAM中,下载用户程序和Bootloader到单片机。还可以将
  用户程序与Bootloader合并成一个HEX文件,适合批量生产。

使用方法:
1.生成Bootloader HEX文件,并写入单片机
  A.运行上位机程序,配置“设置Bootloader”区域的信息。
    a.CHIP,选择单片机型号。
    b.SIZE,选择单片机Flash容量。
    c.UART,选择使用哪个串口作为Bootloader通讯端口。
    d.BPS,串口波特率
    e.使能PIN进入BOOT,上电时,对应端口与这里配置一致时,进入Bootloader
    f.使能PIN控制RS485
  B.菜单-文件-Bootloader-保存Bootloader,即生成Bootloader HEX文件。
  C.使用ST Visual Programmer或其他方法将HEX文件写入单片机。

2.下载用户程序
  用户程序与Bootloader的配合说明:
  A.Bootloader会自己初始化串口。参数在上位机生成HEX文件时设置,使用该参数与上位
    机程序通讯,与用户程序对串口的初始化无关。
  B.Bootloader修改了复位向量,使复位向量指向自己。单片机每次上电都首先运行
    Bootloader。下载用户程序时,不会更新复位向量,用户的复位向量保存在
    Bootloader的256B内,不会丢失。Bootloader由这个入口运行用户程序。
  C.Bootloader会判断上次用户程序下载状态,如果上次没有正常更新完成,不再跳转到
    用户程序,保持在Bootloader,等待再次下载用户程序。
  D.如果配置了“使能PIN进入BOOT”,Bootloader会在上电时检测对应端口状态,满足条
    件会进入用户程序下载状态,等待下载用户程序,否则跳转到用户程序。这种模式是
    刷不死模式,不会因为用户程序出问题导致不能启动Bootloader。
  E.Bootloader开放了入口,可以由用户程序直接进入。上位机程序,菜单-帮助,汇编代
    码“asm("JPF $8ffc");”等,就是进入方法。用户将这个入口代码放在程序合适的位
    置,就可以启动Bootloader。这种方式比较灵活,可以放在菜单里面,或检测组合键
    等,完全由用户自由发挥。
  F.上位机也提供了自定义的就绪命令,仅通过串口就可以触发启动Bootloader。预设一
    个就绪命令字串,在用户程序串口接收处设置代码,一旦检测到这个字串就启动
    Bootloader。上位机在菜单-帮助-就绪命令文本框,输入预设的就绪命令字串,联机
    下载的时候,上位机会发送这个字串,触发单片机启动Bootloader。这时候要求用户
    程序串口设置的波特率与Bootloader一致,否则无法正常下载用户程序。

  下载用户程序:

  A.首次写入的Bootloader
    a.运行上位机程序,菜单-文件-打开HEX固件,载入用户程序HEX文件。通讯设置,COM
      选对应的端口号,BPS设成与Bootloader一致。
    b.给单片机上电。
    c.上位机程序,菜单-下载,即开始下载用户程序。
    注:首次写入的Bootloader,单片机上电之后无条件直接进入Bootloader。
  
  B.Bootloader配置为“使能PIN进入BOOT”
    a.运行上位机程序,菜单-文件-打开HEX固件,载入用户程序HEX文件。通讯设置,COM
      选对应的端口号,BPS设成与Bootloader一致。
    b.将使能PIN设置为有效状态,给单片机上电。(单片机会进入Bootloader)
    c.上位机程序,菜单-下载,即开始下载用户程序。
  
  C.Bootloader使用就绪命令下载
    a.运行上位机程序,菜单-文件-打开HEX固件,载入用户程序HEX文件。通讯设置,COM
      选对应的端口号,BPS设成与Bootloader一致。
    b.设置上位机就绪命令,菜单-帮助-就绪命令文本框,输入就绪命令
    c.给单片机上电,让单片机能检测到就绪命令。(单片机会进入Bootloader)
    d.上位机程序,菜单-下载,即开始下载用户程序。
  
  D.用户程序直接进入Bootloader下载
    a.运行上位机程序,菜单-文件-打开HEX固件,载入用户程序HEX文件。通讯设置,COM
      选对应的端口号,BPS设成与Bootloader一致。
    c.给单片机上电,操作单片机(菜单或按键组合等),进入Bootloader
    d.上位机程序,菜单-下载,即开始下载用户程序。

3.Bootloader的更新
  由于片内已经有Bootloader,Bootloader的更新与下载用户程序差不多,只要单片机以
  任何一种方式进入Bootloader,通过上位机直接更新。
  A.运行上位机程序,配置新的Bootloader。
    a.CHIP,选择单片机型号,与之前保持一致。
    b.SIZE,选择单片机Flash容量,与之前保持一致。
    c.UART,可修改。
    d.BPS,可修改
    e.使能PIN进入BOOT,可修改
    f.使能PIN控制RS485,可修改
  B.通讯设置,COM选对应的端口号,BPS设成与旧版本(单片机内)的Bootloader一致。
  C.用“2下载用户程序”的任意一种方法使单片机进入Bootloader。
  D.菜单-文件-Bootloader-更新Bootloader,Bootloader就更新完成了。
  E.按照“2下载用户程序”即可用新的Bootloader下载用户程序。

4.用户程序与Bootloader的合并
  A.开打上位机软件,菜单-文件-打开HEX固件,载入用户的HEX文件
  B.设置好BOOTLOADER配置
  C.菜单-文件-合并HEX固件,保存合并文件即可

其他问题:
  1.用编译器,如IAR、STVP或下载器等直接写入程序,会冲掉Bootloader。
  2.Bootloader调用用户程序之前,不会初始化CPU寄存器。为防止非掉电系统多次下载造
    成用户程序崩溃(比如堆栈溢出),用户程序需要自己初始化CPU寄存器。一般的C编译
    器都会自动做这个工作,汇编用户需要自己初始化。
radeson1
5楼-- · 2020-01-12 01:14
这个也是要mark
way2888
6楼-- · 2020-01-12 05:56
hecat 发表于 2015-9-3 14:36
非常感谢楼主设计的Tinyboot,非常好用。

这两天,把作者的关于Tinyboot相关的帖子翻了个遍,阅读了每个网 ...

哈哈,使用方法还是你写的有水平。

一周热门 更多>