51单片机IAP在线升级

51单片机IAP在线升级
爱矽半导体E85F3325单片机IAP在线升级教程,此处可查看更新及demo下载


前言

扩展-IAP 主要用于产品出厂后应用程序的更新作用 ,类似于其他引导装载升级程序的方法,在系统中必须始终
存在一段用于程序装载的代码(bootloader),该代码在启动时被运行。其基本功能是根据外部条件来判断是运
行现有版本的程序还是从主机下载新程序。可用于使用串口下载器替换专用下载器进行下载,硬件设备的软件
的远程升级等功能。


一、ROM资源

E85F3325FLASH空间示意图如图0x0000到0x3fff为程序空间,可将程序空间进行分配,此处分为两个空间分别存储两个程序,共两个工程,一段为BootLoader(引导加载程序),一段为application(用户程序),MCU启动先执行BootLoader程序,检测有无升级标志位,再跳转入application程序执行,因此将BootLoader程序放在MAIN FLASH 空间最前面,芯片上电既运行BootLoader程序,再由BootLoader程序跳转到app程序执行。例程程序为BootLoader,空间分配为0x0000-0x0A00,共2.5k程序空间作为BootLoader程序存放空间 。0x0A00-0x3FFF空间可用作app空间。

二、KEIL有关知识

本例程使用keil作为编译工具,keil已经为我们做好了程序空间分配的相关功能,并能使用相应的连接器连接程序代码,不同的连接方式储存空间的分配方式不同,下面介绍keil的两种链接器。
Keil连接器介绍:keil有两种连接器,一种为BL51是keil默认连接器,一种为LX51是BL51扩展连接器,两种连接器均可设置keil代码存放空间。以下图片均可作为例程APP代码配置。

1.BL51连接器:

在这里插入图片描述
在device选项卡中去掉LX51的√即选用BL51连接器,即可选用KEIL默认链接器BL。

在这里插入图片描述
在BL51locate选项卡中,Use memory layout from target dialog选项为使用默认代码存放位,代码存放地址为0x0000起始开始,去掉勾后可改变代码存放地址,code range为代码存放地址,即ROM空间,xdata为RAM空间分配,可默认,跳转后可重新分配,如:
在这里插入图片描述

2.LX51连接器:

在这里插入图片描述
在device选项卡中勾上LX51的√即选用LX51连接器

在这里插入图片描述
Use memory layout from target dialog选项为使用默认代码存放位,代码存放地址为0x0000起始开始,去掉勾后可改变代码存放地址,user classes分配代码空间,如:
在这里插入图片描述
分配代码空间为0x0A00-0x3FFF,具体可自己按格式定义。

三、Keil其他相关项说明:

在这里插入图片描述Memory model:默认变量分配,small默认分配变量为idata,large默认分配变量为xdata。 Code rom size:small程序代码最大2k,Large程序代码最大64k。
在这里插入图片描述Level:程序优化等级,考虑到程序优化时的分配,建议app程序优化等级不可超过8。
Interrupt vector at address:中断偏移地址。

四、MCU启动文件说明:

在这里插入图片描述
CSEG AT 0A00h
启动地址为0x0A00。
MCU程序跳转语句:
((void (code *) (void)) 0x0A00) ();定义函数指针指向0x0A00地址。

五、例程BOOTLOADER使用说明

程序占用空间:例程程序大小大约占0x0000-0x0900,因为flash分页设置及BootLoader余量考虑,BootLoader程序占用空间为0x0000-0x0A00。

程序运行顺序:
在这里插入图片描述
程序以P05脚为检测标志位,可自行更改,P05设置为上拉输入,拉低为需要更新程序,更新程序时先擦除flash,再写入,可写入的flash空间为0x0A00-0x3FFF。不可超出此空间。写入完成后会跳转到app程序执行。

六、例程使用可更改说明:

在这里插入图片描述
更改启动文件里中断偏移量,与app起始地址相同。

在这里插入图片描述
更改烧写地址,与app起始地址相同

在这里插入图片描述
定义触发升级IO口。其中串口定义为P03 (RX),P04(TX)脚。
完成程序更改。

七、程序使用通信方式:XMODEM

XModem是一种在串口通信中广泛使用的异步文件传输协议,分为XModem和1k-XModem协议两种,前者使用128字节的数据块,后者使用1024字节即1k字节的数据块。本例程限于RAM大小使用XModem协议。

1. XModem信息包格式
XModem协议最早由Ward Christensen在20世纪70年代提出并实现的,传输数据单位为信息包,信息包格式如下:
在这里插入图片描述
2. 校验和的计算
所有的数据字节都将参与和运算,由于校验和只占一个字节,如果累加的和超过255将从零开始继续累加。
3. 字段定义
01H
04H
06H
15H
18H
4. 校验和方式的XModem传输流程
传输流程如图所示:
在这里插入图片描述对于发送方仅仅支持校验和的传输方式,接收方应首先发送NAK信号来发起传输,如果发送方没有数据发送过来,需要超时等待3秒之后再发起NAK信号来进行数据传输。对于数据传输正确,接收方需要发送ACK信号来进行确认,如果数据传输有误,则发送NAK信号,发送方在接收到NAK信号之后需要重新发起该次数据传输,如果数据已近传输完成,发送方需要发送EOT信号,来结束数据传输。
5. 如何取消数据传输
当接收方发送CAN表示无条件结束本次传输过程,发送方收到CAN后,无需发送EOT来确认,直接停止数据的发送。

八、APP程序说明

App程序主要注意以下几点
1. 定义代码存放位置,详见上面连接器有关知识。
2. 中断偏移,详见keil其他相关项说明
3. 代码启动位置,详见启动项说明。
4. 代码空间,注意不能超出剩余代码空间,否则程序烧写不完整。

九、APP代码升级说明

一般代码升级有两种方式,PC端软件升级或通过另一模块升级。升级前要下载BootLoader程序到芯片并置位相应的脚触发升级信号。

PC端升级
在这里插入图片描述使用支持xmodem协议的串口助手。

十、代码合并烧写

考虑到出厂时要先烧写IAP 再烧写APP应用程序要烧写2次增加工人劳动力的基础上写了“ IAP+APP ==>双剑合一,减少烧写次数,增加烧写效率。 代码合并软件,此处使用Notepad++。

在这里插入图片描述
直接打开两个工程生成的HEX文件
在这里插入图片描述滑到文件最下方可以看到:00000001FF 这句话,这句话为文件结束语句,删除,然后Copy另一文件全部数据,加入到文件后方,如图:

在这里插入图片描述
即完成两个hex的合并,可以使用量产编程器下载验证。

程序等在我的资源里可下载,已打包好。程序下载

### 回答1: 51单片机iap(In-Application Programming)在线升级是一种在单片机系统中通过编程的方式对在线设备进行升级的技术。 通过IAP技术,在单片机系统运行的过程中,对内部存储器进行读取和修改,并将新的程序代码下载到内存中,从而实现在线升级IAP不需要擦除内存,能够有效地避免数据丢失,提高系统的稳定性和安全性。 51单片机IAP在线升级技术可以在系统运行时进行程序升级,更新新的功能,增强系统性能,并具有快速、灵活、方便的特点。但是,IAP技术需要对硬件进行支持,如双系统设计和FLASH存储器等。 因此,在进行51单片机IAP在线升级时,需要根据硬件支持条件选择不同的技术实现方案。同时,在进行在线升级时,需要注意保护程序的完整性和安全性,以免出现不良影响。 总之,51单片机IAP在线升级技术是一种便捷、灵活、高效、先进的升级方式,广泛应用于各类嵌入式系统中,有利于实现软件功能的快速升级和系统的优化。 ### 回答2: 51单片机指的是一种基于Intel 8051指令集的单片机,它是广泛应用于嵌入式系统中的一种芯片。而IAP(In-Application Programming)在线升级则是指在不需要任何外部设备的情况下,通过程序自身对芯片中的代码进行更新。 在51单片机中,实现IAP在线升级需要结合程序设计和硬件电路设计两个方面。首先,程序中需要预留出一定的存储空间,用于存储升级程序的代码。其次,需要设计一个与单片机相连的串行接口,如UART或SPI等,以便实现与外界通信,接收升级程序的数据。 整个IAP升级的流程如下:首先,单片机在运行过程中通过串口接收到升级程序的数据,将数据暂存至内部存储器。然后,单片机停止当前程序执行,切换到专门的IAP程序,读取内部存储器中的升级程序数据,并将其写入到指定的程序存储区。最后,单片机重新启动程序执行,完成升级。 通过IAP在线升级技术,可以大大简化芯片升级的操作流程,并节省升级的时间和成本,适用于各种嵌入式场景的应用。 ### 回答3: 51单片机iap在线升级是通过网络或串口实现对51单片机程序的在线更新和升级。它可以通过服务器端的推送或客户端的请求,将新的程序固件通过网络传送到目标单片机,然后在单片机中通过IAP(In-Application Programming)实现程序的自我升级。这种在线升级方式可以极大地简化单片机的维护和升级,提升单片机的灵活性和可用性。它适用于广泛的应用场景,如远程设备控制、智能家居、远程医疗等。同时,为了保证在线升级的安全性和准确性,需要特别注意数据传输的可靠性和过程的安全性。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值