首页 » 科学 » 单片机经由进程串口进级固件_法式_状况

单片机经由进程串口进级固件_法式_状况

乖囧猫 2024-11-21 03:11:32 0

扫一扫用手机浏览

文章目录 [+]

我们在开拓阶段,调试单片机时改换程序,一样平常是通过下载器(仿真器),把保存程序的Flash擦除,再重新编程。

那如果到了量产阶段,已经组装好成品了,或者已经到用户手上了,须要再次更新程序时,就没办法通过下载器去更新了。
此时考虑通过外围的通信接口(UART/USB/SPI/I2C/CAN等)来实现升级。

单片机经由进程串口进级固件_法式_状况 科学

如何掌握升级过程?

为了担保升级的可重复性和安全性,从Flash中划分一小块区域作为升级利用,我们称之为Boot程序,或者Bootloader。
这个程序是浸染便是管理升级,判断是否须要升级,升级数据包的吸收及Flash编程,运用程序的跳转掌握,以及升级过程中的非常处理等。

运用程序保存在Flash中的另一区域,运用程序跟Boot程序是独立的。
实现在线升级的条件条件是Boot程序与运用程序可以相互跳转,或者可以通过软件掌握复位后先实行哪个程序。

须要考虑的问题:

怎么进入Boot程序?

设置复位后加载Boot程序

判断是否须要升级?

比如某个IO口电平(按住一个升级按键)触发时,或者通信握手成功等等,条件知足,等待升级。
当条件不知足时,跳转到运用程序运行。

数据包的吸收及Flash编程

根据数据协议分段吸收并写入到Flash,一定要担保传输的精确性及Flash操作的精确性,最好Flash编程后再次验证。
如果传输有误(校验码不匹配)就须要申请重发。

运用程序的跳转

当不知足升级条件时,或者升级完成后,设置复位后加载运用程序,然后重启。

下面以8051内核N76E003芯片先容下通过串口进行在线升级。

1 Flash划分(共18KB)

LDROM: 划分4KB作为Boot程序(该芯片可划分1KB/2KB/3KB/4KB,比较灵巧),新唐把这部分Flash叫做LDROM

APROM: 划分14KB作为运用程序,新唐把这部分Flash叫做APROM

2 Boot程序与运用程序的切换

在运用程序中,将BS位置1,然后软件复位。
复位后就从LDROM启动,加载Boot程序。

在Boot程序中,将BS位清0,然后软件复位。
复位后就从APROM启动,加载运用程序。
很大略。

3 升级数据包的吸收和APROM编程

数据传输这里我参考了下Xmodem文件传输协议,每次128字节有效负载,

末了一次传输不足128字节的,补0xFF。

再次解释下为什么参考Xmodem协议,由于N76E003的Flash将128字节作为1页,擦除是按页进行的。

串口吸收,采取中断办法,吸收完一包,如果校验成功,写入到Flash,并回答ACK,准备吸收下一包(如果有);如果校验失落败,回答NAK,向上位机申请重发。

4 非常处理

如果在升级过程中发生了非常,比如串口线脱落或者MCU掉电,怎么规复升级?

由于考虑到要获取掉电前的状态,因此升级状态须要保存在Flash中,在LDROM(4KB)的末了的128字节用于保存升级状态,共须要三种状态就可以了,默认值是0xFF(未编程)、升级失落败和升级完成。

在进入Boot程序时,先读取这个状态,如果不是升级完成,就等待上位机命令升级,如果已经是升级完成,等待一小段韶光,如果没有上位机升级命令,就切换到运用程序。

在升级过程中,升级状态始终为失落败,当数据包全部都精确写入到APROM后,升级状态修正为完成。

5 上位机软件

大略的选择串口,点击Connect,选择待升级的BIN文件,开始升级。
由于我开拓的产品都是内置锂电池供电的,通过Micro-USB接口充电,恰好将串口旗子暗记引出到Micro-USB插座,外部通过TTL-USB转接线连接到PC。
由于是内置电池,以是运用程序在吸收到升级命令后,再切换到Boot程序运行,进行升级。

标签:

相关文章

汇编语言表格,探索计算机编程的基石

汇编语言,作为计算机编程的基石,承载着计算机发展的历史与未来。在计算机科学领域,汇编语言表格作为一种重要的编程工具,扮演着不可或缺...

科学 2025-01-02 阅读0 评论0

汉字编码,传承千年的智慧结晶

自古以来,汉字就是中华民族智慧的象征,是中华民族文化传承的重要载体。汉字编码作为现代信息技术与汉字相结合的产物,不仅使汉字的存储、...

科学 2025-01-02 阅读0 评论0