找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3677|回复: 1
打印 上一主题 下一主题
收起左侧

基于IAR平台STC8A8K64S4A12单片机的一种bootloader实现更新程序

[复制链接]
跳转到指定楼层
楼主
    STC8A8K64S4A12单片机程序烧录一般用STC官方提供的stc-isp软件,其烧录原理是:STC8A8K64S4A12上电会先进入官方固化的ISP区执行代码,代码会对串口进行检测,一旦发现上位机(PC)有发送有效数据,STC8A8K64S4A12就可以执行程序烧录。每次程序烧录,都要重新上电,或者软件重启才能进入ISP区,也只要在ISP区,串口烧录才是有效的,而且官方在SP区固化的代码仅支持串口烧录,发送的串口数据要按照STC官网给的格式发送。
   另外一种烧录程序的方式就是自己写一个引导程序bootloader来实现程序的烧录,比如用bootloader接收串口数据、读取外挂flash的数据或者SD卡数据,然后一边读数据、一边烧录应用程序。STC8A8K64S4A12一上电就执行ISP区代码,超时后,会执行bootloader程序,bootloader会检查是否要更新程序,如果没有,就直接跳去执行应用程序。这种方法和好处是可以不用串口去更新程序,因为串口要再加一颗MCU,或者要用专用的上位机,多了成本。通过STC8A8K64S4A12主动拷贝数据来更新程序可以说是一种省成本的方式。
   下面我用一个简单的例子来说明一种简单BIM的更新程序方式。
   首先新建一个应用程序工程IMAGE_A,里面放一个点灯的操作。然后把代码的起始地址设在0x27FF。


编译后产生的hex文件用stc-isp软件打开,可以看到全部代码的数据。


   然后在IAR平台新建一个BIM工程来作为bootloader,把IMAGE_A的代码数据存放在一个hexfile[]数组里面,执行main函数的时候,会将数组写入到以0x27FF起点的内部flash中,然后跳转到0x27FF执行IMAGE_A代码。


编译BIM工程,产生的hex文件用stc-isp软件烧录到STC8A8K64S4A12中,打开串口可以看到写flash的过程


实物可以看到P5_5驱动的LED灯亮了,说明程序正常跳转。


本例子是简单的实现程序的烧录,后面可以完善一下BIM工程,添加从外部flash中拷贝程序到内部flash的功能。

评分

参与人数 1黑币 +100 收起 理由
admin + 100 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:642557 发表于 2019-12-22 17:21 | 只看该作者
感谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表