芯课堂 | 通过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升级,也需要拆机进行。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/345243.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

线程池高手进阶:揭秘ThreadPoolExecutor的小妙招!

RejectedExecutionHandler总结 ThreadPoolExecutor 是 Java 中用于创建和管理线程池的接口,当线程池中的任务队列已满,并且线程池中的线程数量已经达到最大时,如果再有新的任务提交,就需要一个策略来处理这些无法执行的任务。它 …

antd 日期选择框增加季度预设范围

测试同学说想要有个季度的预设选择框,方便快速选择季度的开始和结束日期。 antd 的rangepicker是支持预设的 日期选择框 DatePicker - Ant Design 实现方法很简单,按照官网示例用moment初始化一下即可 获取当前一季度的开始日期时间: mom…

系统移植 day2 bootloader->u-boot 移植

一、栈的复习 1、满栈:当堆栈指针SP总是指向最后压入堆栈的数据,称为满栈; 2、空栈:当堆栈指针SP总是指向下一个将要放入数据的空位置,称为空栈; 满栈状态下,先移动指针,后赋值. 空…

量化交易学习1

一、股票数据基本分类 可分为(1)技术面数据和(2)基本面数据 (1)技术面数据 技术面数据是通过股票的历史价格和交易量等市场数据进行计算和分析得出的指标。常用的技术指标包括移动平均线、相对强弱指标、…

服务器数据恢复—EVA存储raid5硬盘离线的数据恢复案例

服务器数据恢复环境: 某品牌EVA某型号存储,底层是RAID5阵列,划分了若干lun。 服务器故障&分析: 该存储设备中raid5阵列有两块硬盘掉线,存储中的lun丢失。 将故障服务器存储中的所有磁盘编号后取出,硬件…

磁盘d盘满了怎么清理?几个步骤轻松搞定!

当您的电脑D盘快满了的时候,需要对电脑D盘进行清理,以节省空间并使电脑运转更加流畅。下面是一些电脑清理的方法和工具介绍。 一、清理磁盘 1、首先我们打开此电脑 2、然后找到我们要清理的磁盘 3、接着我们右键单击属性选项 4、然后我们点击磁盘清理 …

locust快速入门--自定义用户增长形状

背景: locust 默认的用户增长模式,不方便分析不同用户量大对服务器的压力影响。因此,需要对用户增加的图形进行自定义。 locust官网说明:https://docs.locust.io/en/stable/custom-load-shape.html 自定义不同时间段用户的数量…

Linux 驱动开发基础知识——Hello驱动程序(一)

个人名片: 🦁作者简介:一名喜欢分享和记录学习的在校大学生 🐯个人主页:妄北y 🐧个人QQ:2061314755 🐻个人邮箱:2061314755qq.com 🦉个人WeChat:V…

CentOS安装Flume

CentOS安装Flume 一、简介二、安装1、下载2、解压3、创建配置文件4、启动flume agent5、验证 一、简介 Flume is a distributed, reliable, and available service for efficiently collecting, aggregating, and moving large amounts of log data. It has a simple and flexi…

防火墙接口配置实验

1、搭建拓扑 2、给云端添加网络,来实现真机与虚拟机的连接 3、 给防火墙g0/0/0口配置IP,由于我云端绑定的是192.168.100.10,所以这里IP配置为192.168.100.1/24,使用命令开启防火墙远程连接的服务,之后便可通过web远程登陆防火墙 …

JavaScript——forEach()方法

代码示例&#xff1a;数组变量.forEach(值变量名 > {代码块}) //每遍历一个值&#xff0c;就作为形参传入给代码块&#xff0c;执行一次该函数头&#xff0c;继续遍历 举例说明&#xff1a; <script>let arr [1, 2, 3, 4];//arr.forEach(val > {});arr.forEach(v…

OceanBase创建租户

租户是集群之上的递进概念&#xff0c;OceanBase 数据库采用了多租户架构。 集群偏部署层面的物理概念&#xff0c;是 Zone 和节点的集合&#xff0c;租户则偏向于资源层面的逻辑概念&#xff0c;是在物理节点上划分的资源单元&#xff0c;可以指定其资源规格&#xff0c;包括…

大数据平台红蓝对抗 - 磨利刃,淬精兵!

背景 目前大促备战常见备战工作&#xff1a;专项压测&#xff08;全链路压测、内部压测&#xff09;、灾备演练、降级演练、限流、巡检&#xff08;监控、应用健康度&#xff09;、混沌演练&#xff08;红蓝对抗&#xff09;&#xff0c;如下图所示。随着平台业务越来越复杂&a…

滚动条样式修改

对于 Chrome 和 Safari 用户 如果正在使用基于 WebKit 的浏览器&#xff0c;如 Chrome 或 Safari&#xff0c;可以使用以下代码来自定义滚动条样式。将此代码加入到你的 CSS 文件中&#xff1a; /* 设置滚动条的宽度 */ ::-webkit-scrollbar {width: 6px; }/* 设置滚动条轨道…

C++设计模式之迭代器模式

【声明】本题目来源于卡码网&#xff08;https://kamacoder.com/&#xff09; 【提示&#xff1a;如果不想看文字介绍&#xff0c;可以直接跳转到C编码部分】 【设计模式大纲】 【简介】 --什么是迭代器模式&#xff08;第19种设计模式&#xff09; 迭代器模式是⼀种行为设计模…

蓝桥杯---三羊献瑞

观察下面的加法算式: 其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。 请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。 答案 代码 public class _03三羊献瑞 {public static void main(String[] args) {//c 生 b 瑞 g 献 d 辉…

算法练习-螺旋矩阵(思路+流程图+代码)

难度参考 难度&#xff1a;中等 分类&#xff1a;数组 难度与分类由我所参与的培训课程提供&#xff0c;但需要注意的是&#xff0c;难度与分类仅供参考。以下内容均为个人笔记&#xff0c;旨在督促自己认真学习。 题目 给定一个正整数n&#xff0c;生成一个包含1到 n^2 所有元…

BACnet网关BL121BN 实现稳定可靠、低成本、简单的楼宇自控协议BACnet转OPC UA解决方案

随着楼宇自控系统的迅猛发展&#xff0c;人们深刻认识到在楼宇暖通行业中&#xff0c;实时、可靠、安全的数据传输至关重要。在此背景下&#xff0c;高性能的楼宇暖通数据传输解决方案——协议转换网关应运而生&#xff0c;广泛应用于楼宇自控和暖通空调系统应用中。 钡铼技术…

【数据结构】 循环队列的基本操作 (C语言版)

目录 一、顺序队列 1、顺序队列的定义&#xff1a; 2、顺序队列的优缺点&#xff1a; 二、循环队列 1、循环队列的定义&#xff1a; 2、循环队列的优缺点&#xff1a; 三、循环队列的基本操作算法&#xff08;C语言&#xff09; 1、宏定义 2、创建结构体 3、循环队…

PPO学习

openai用tf实现的真的看不懂&#xff0c;大佬的世界… PPO的详细细节 1. 奖励模型和策略的价值头将 query 和 response 的连接作为输入 奖励模型和策略的价值头 不 仅仅查看响应。相反&#xff0c;它将 query 和 response 连接在一起&#xff0c;作为 query_response def ge…