芯课堂 | 通过ISP升级芯片固件方法及框架

图片

一、升级原理

芯片在应用前,是一颗裸片,内部没有任何驱动或应用程序。芯片在贴上PCB板子后,会实现各种功能,这是时候会开发对应的驱动或者应用程序,在芯片上面运行的程序,一般称之为固件(Firmware)。

把固件烧录进芯片,一般通过J-link、DAP、UART、Bluetooth等途径,我们公司芯片支持J-link、UART两个途径升级芯片固件,本文档主要说明通过UART升级芯片固件。

通过UART(也叫ISP)升级芯片固件,分以下两种模式:

A. 双线模式,即TX+RX模式,需要6根接线:TX、RX、VDD、GND、RESET、BOOT。

B. 单线模式,即TX&RX&BOOT模式,即TX、RX、BOOT共用一根线,需要4根接线:TX&RX&BOOT、VDD、GND、RESET。

升级方法:芯片上电,拉低RESET引脚,然后拉高BOOT引脚,等5-10mS,再拉高RESET引脚,保持BOOT引脚为高电平并持续5mS以上,芯片即进入ISP升级模式。当芯片进入ISP模式后,既可按照ISP协议(一般为自定义协议,非国标)进行升级。

二、升级框架

ISP升级框架:

图片

ISP底层:为芯片出厂前已固化的ISP code,不占用MCU 的FLASH空间,专门用于通过ISP接口给MCU烧录(或升级)应用&驱动固件。

三、升级协议

1.命令格式说明 

上位机和下位机发送和接收的命令采用字符形式,每个命令后面都有“\r\n”;收发数据的格式采用 UUcode 编解码格式;

2.通信错误类型分类: 

a) “E0”:表示接收到非法命令或者下位机解析命令失败; 

b) “E1”:表示擦除 FLASH 操作失败; 

c) “E2”:表示写入 FLASH 操作失败; 

d) “E3”:表示写入 SRAM 操作失败;

e) “E4”:表示待写入 FLASH 的数据不是 1 页或者写入 SRAM 的数据超过 1 页。

3.具体命令格式说明: 

a) 波特率同步命令:M->"sync\r\n",S->"sync\r\n";

b) 设置波特率命令:M-> "baudrate 000000\r\n",S-> "OK\r\n";

c) 获取版本号命令:M-> "version\r\n",S-> "SWM24V20\r\n"; 

d) 擦除 FLASH 命令:M-> "erase 0000 0000\r\n",S->"OK\r\n"; 

e) 写入 FLASH 命令:M->"copy 00000\r\n",S->"OK\r\n"; 

f) 写 SRAM 命令 1:M->"write\r\n",S->"OK\r\n"; 

g) 写 SRAM 命令 2:M->"W UUencode Checksum\r\n",S->"OK\r\n"; 

4.说明 

a) 上位机开发的时候可以预置各个芯片 Flash 的 sector 以及 page 大小,也可以下载的时候选择,并以此计算来下发读写命令。

b) 上位机操作 flash 单位为 sector 和 page,下载不满一个 page 时候填充 FF。 

c) 下位机的写入 FLASH 命令是固定 1 个页大小的数据。 

d) 下载文件时,分小包编码传输给下位机,下位机接收到后把多个小包文件解码组合 成一个大包(一个 page),等待上位机传输 copy 命令,再写入 flash。具体编码格 式见文件末尾。

四、升级流程

本节主要说明MCU端(被动应答)ISP升级流程:

1. 获取MCU型号

图片

说明:

A.上位机发送“version\r\n”。

B.下位机回复芯片版本号。

2. 配置波特率

图片

说明:

A.以目的波特率为9600为例。

B.上位机先以4800波特率发送"sync\r\n"命令,等待下位机以4800波特率回复"sync\r\n"。

C.上位机以4800波特率发送"baudrate 000000\r\n",000000格式如下:

a) SWM120、SWM160、SWM181、SWM220、SWM260芯片,000000 = 24M/16/Baud。

b) SWM190芯片,000000 = 24M / Baud;

c) SWM320芯片,000000 = 20M / 16 / Baud;

d)例如SWM181 需要设置9600波特率,则000000 = 24M / 16 / 9600 = 000156,则此步骤需要发送"baudrate 000156\r\n"。

D.下位机收到后回复"OK\r\n",然后切换波特率到9600。

E.上位机接收到"OK\r\n"后,延时5~10ms,改变波特率到9600,然后发送"sync\r\n"。

F.下位机接收正常后返回"sync\r\n"。

G.上位机接收到"sync\r\n"后提示握手成功。

3. 擦除flash流程

图片

说明:

A.上位机先发送"erase 0000 0000\r\n"命令(其中0000 0000表示发送字符形式的擦除起始扇区和要擦除的扇区个数,例如要擦除下位机第8扇区开始的4个扇区则发送"erase 0008 0004\r\n")。

B.等待下位机回复"OK\r\n",表明擦除FLASH成功;下位机回复"E1\r\n",表示擦除FLASH失败。

4. 写SRAM流程

图片

说明:

A.上位机先发送"write\r\n"命令,等待下位机回复"OK\r\n"。

B.上位机发送"W UUencode Checksum\r\n",等待下位机回复"OK\r\n",表明一帧数据写入SRAM成功。

a) UUencode 表示编码后的数据。

b) Checksum表示编码前数据的校验和。

c) 具体格式参见文章末尾编码说明。

5. 写FLASH流程

图片

说明:

A.上位机发送"copy 00000\r\n"命令(其中00000表示字符形式的起始页,例如要写入第8页起始的1页数据则发送"copy 00008\r\n")。

B.下位机回复"OK\r\n",表明写入FLASH成功。

五、通过ISP升级(烧录)的优缺点

优点:

1. 一芯片的SWD引脚一般跟GPIO引脚复用,如果需要扩展GPIO,就需要禁用SWD功能,这种情况下升级就可以通过ISP接口。

2. 单线ISP模式,只需要一个ISP引脚、一个RESET引脚、一个GND,为精简接口模式。

缺点:

如果产品已装机,用ISP升级,也需要拆机进行。


  • 18
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值