CN103559066B - 基于canopen协议的嵌入式软件升级方法 - Google Patents
基于canopen协议的嵌入式软件升级方法 Download PDFInfo
- Publication number
- CN103559066B CN103559066B CN201310581178.5A CN201310581178A CN103559066B CN 103559066 B CN103559066 B CN 103559066B CN 201310581178 A CN201310581178 A CN 201310581178A CN 103559066 B CN103559066 B CN 103559066B
- Authority
- CN
- China
- Prior art keywords
- host computer
- slave computer
- program
- computer
- online
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Abstract
本发明涉及一种基于CANOPEN协议的嵌入式软件升级方法,该方法应用于通过CAN总线网络连接的上位机和下位机所组成的系统中,包括以下步骤:上位机与下位机进行联机,联机成功后进行编程地址有效性的确认,当确认有效后,采用SDO协议中的块传送机制,分包发送块数据直至应用程序的数据全部发送完成,然后跳转到存储器的应用程序区执行应用程序,程序升级结束。与现有技术相比,本发明具有抗干扰能力强、传送速率高、适用范围广、后续拓展方便等优点。
Description
技术领域
本发明涉及一种,尤其是涉及一种基于CANOPEN协议的嵌入式软件升级方法。
背景技术
Bootloader又称引导加载程序,它是系统加电后运行的第一段软件代码,它能实现用户程序的引导启动和固件自更新两个功能。其中固件自更新需要向芯片提供额外的数据传输介质使得芯片能将接收到的机器代码写入自身的Flash中。传统的方法是使用UART的接口实现Bootloader的更新功能,通讯速率低,通常只有几十KBPS,升级效率低;由于采用UART通讯方式,通讯信号抗干拢能力差,特别是在电磁干拢严重的汽车运行环境。传统的方法不适合现场总线升级,特别是在多个终端在同一个网络中工作的情况,升级时需要把要升级的终端从整个网络总线系统中断开进行单独升级,不适合进行现场升级,特别是在汽车上,因汽车空间紧凑,各终端安装位置空间狭窄,不易拆卸;并且,传统方法中的通讯协议都是自定义的,使用范围小,不通用。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种基于CANOPEN协议的嵌入式软件升级方法。
本发明的目的可以通过以下技术方案来实现:
一种基于CANOPEN协议的嵌入式软件升级方法,该方法应用于通过CAN总线网络连接的上位机和下位机所组成的系统中,包括以下步骤:
1)上位机与下位机进行联机,联机成功后执行步骤2);
2)上位机与下位机进行编程地址有效性的确认,当确认有效后,分包发送块数据;
3)下位机收到块数据的最后一包后回复确认,上位机收到下位机最后一包的回复后,发送包含CRC校验码的块结束命令给下位机,;
4)下位机收到块结束命令后,进行CRC校验,若CRC校验成功,下位机把收到的数据写入存储器中,回复块结束命令给上位机;若CRC校验失败,下位机回复下载错误报文,上位机收到下载错误报文,结束程序升级;
5)上位机收到块结束命令后,判断应用程序的数据是否全部发送完成,若应用程序的所有数据都发送成功后,上位机发送编程结束命令给下位机,下位机收到后,回复编程结束应答给上位机,并跳转到存储器的应用程序区执行应用程序,程序升级结束;若应用程序的数据未发送完毕,则返回步骤2)。
2.根据权利要求1所述的一种基于CANOPEN协议的嵌入式软件升级方法,其特征在于,所述步骤1)具体包含以下步骤:
11)上位机软件解析要发送的应用程序文件,并等待下位机的联机请求。
12)下位机重新上电,进行初始化,然后发送Boot-up报文,通知上位机当前处于预操作状态,上位机收到下位机发送的Boot-up报文,发送联机请求报文给下位机;
13)下位机收到联机请求报文后,回复联机应答,若上位机收到该联机应答,则联机成功;若上位机未收到下位机的联机应答,则联机失败,结束程序升级。
3.根据权利要求2所述的一种基于CANOPEN协议的嵌入式软件升级方法,其特征在于,步骤12)中的初始化包括:首先初始化RAM基址,接着初始化堆栈,关闭看门狗,随后初始化全局变量,接着初始化CAN通讯接口,以完成Bootloader自身环境初始化。
4.根据权利要求1所述的一种基于CANOPEN协议的嵌入式软件升级方法,其特征在于,执行步骤2)之前,还需要执行如下步骤:
A)联机成功后,上位机向下位机发送擦除请求,下位机收到擦除请求后执行擦除操作;
B)下位机擦除成功后,向上位机回复擦除成功应答,下位机擦除失败,则回复擦除失败应答;若上位机收到擦除失败应答,则结束程序升级;
C)若上位机收到擦除成功应答,则进行继续执行步骤2)。
5.根据权利要求1所述的一种基于CANOPEN协议的嵌入式软件升级方法,其特征在于,步骤2)具体包括以下步骤:
21)上位机向下位机发送编程地址报文;
22)下位机收到编程地址报文,对其编程地址进行确认,若有效,则向上位机回复编程地址有效报文;若无效,则回复编程地址无效报文,上位机收到编程地址无效报文后,结束程序升级;
23)上位机收到编程地址有效报文后,向下位机发送下载启动命令,下位机收到下载启动命令后,回复下载启动应答;
24)上位机收到下位机回复的下载启动应答后,开始分包发送块数据。
与现有技术相比,本发明具有以下优点:
1、采用CAN通讯,通讯信号抗干拢能力强。
2、采用CAN通讯,通讯速率高,可达到1MBPS。
3、需要升及的终端本身带CAN接口,直接把PC机接到CAN网络就可对网络上的任何节点进行升级,终端不需要拆下,适合现场总线升级。
4、采用标准的CANOPEN通讯协议,适用范围广,后续扩展方便。
附图说明
图1为本发明所适用的系统的拓扑图;
图2为本发明中下位机存储器中存储区域的划分图;
图3为本发明的流程图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。
实施例
一种基于CANOPEN协议的嵌入式软件升级方法,该方法应用于通过CAN总线网络连接的上位机和下位机所组成的系统中。上述系统的拓扑结构如图1所示,包括上位机1、CAN总线网络3以及多个下位机2,其中上位机1为下载程序的PC机通过USBCAN适配器4连接到CAN总线网络3。上位机1运行着上位机程序,主要作用是解析应用程序文件,如HEX、BIN、S19文件,并向下位机发送有用的数据字节,同时还能显示传输过程和传输的结果。下位机2为接收上位机数据并进行程序更新的终端,通过CAN总线网3连接上位机1。
该方法的通讯协议采用CANopen协议,CANopen是CAN-in-Automation(CiA)定义的标准之一,并且在发布后不久就获得了广泛的承认。尤其是在欧洲,CANopen协议被认为是在基于CAN的工业系统中占领导地位的标准。大多数重要的设备类型,例如数字和模拟的输入输出模块、驱动设备、操作设备、控制器、可编程控制器或编码器,都在称为“设备描述”的协议中进行描述;“设备描述”定义了不同类型的标准设备及其相应的功能。依靠CANopen协议的支持,可以对不同厂商的设备通过总线进行配置。
下位机存储器的程序存储区域划分如图2所示,下位机复位时从中断向量表取Bootloader程序首地址,跳转到Bootloader执行Bootloader程序,Bootloader接收上位机发送的应用程序数据,并写到应用程序区,应用程序接收完后Bootloader程序重定位中断向量表,把中断向量表定位到应用程序区,接着跳转到应用程序区执行应用程序。
本发明的数据通讯主要采用CANOPEN协议中的Boot-up、SDO协议,Boot-up协议用于下位机复位后通知上位机当前处于预操作状态(pre-operational);SDO用于传送控制命令以及应用程序的数据块。
SDO协议用来访问一个设备的对象字典。访问者被称作客户(client),对象字典被访问且提供所请求服务的CANopen设备别称作服务器(server)。客户的CAN报文和服务器的应答CAN报文总是包含8字节数据(尽管不是所有的数据字节都一定有意义)。一个客户的请求一定有来自服务器的应答。
SDO协议有3种传送机制:
加速传送(Expedited transfer):最多传输4字节数据
分段传送(Segmented transfer):传输数据长度大于4字节
块传送(Block transfer):当传送数据长度大于4字节时,多个分段只由1个确认报文应答(如果是下载,则由服务器启动传送,如果是上传,则由客户启动传送)以增加总线吞吐量。
其中,本发明中的控制命令采用了加速传送机制,这些控制命令包括联机请求、擦除、编程地址、编程结束,而应用程序数据块的下载采用了块传送机制,包括启动块下载、块分段下载、块下载结束。
采用本发明对嵌入式软件进行升级时,具体的实施步骤如图3所示:
S1、升级时先运行上位机中的上位机软件,上位机软件解析要发送的应用程序文件,如HEX、BIN、S19文件,并等待下位机联机请求。
S2、给下位机重新上电,下位机上电复位后直接执行Bootloader程序,首先初始化RAM基址,接着初始化堆栈,关闭看门狗,随后初始化全局变量,接着初始化CAN通讯接口,以完成Bootloader自身环境初始化的过程,接着发送Boot-up报文,通知上位机当前处于预操作状态(pre-operational),上位机收到下位机发送的Boot-up报文,发送联机请求报文。
S3、下位机收到联机请求报文后回复联机应答,联机成功。若上位机长时间未收到下位机的联机应答,联机超时,联机失败,程序升级失败。
S4、上位机收到下位机的联机应答后发送擦除请求,下位机收到擦除请求后执行擦除操作。
S5、下位机擦除成功后回复擦除成功应答,下位机擦除失败则回复擦除失败应答。上位机收到擦除失败应答后,结束程序升级,程序升级失败。
S6、若上位机收到擦除成功应答后,发送编程地址报文。
S7、下位机收到编程地址报文,确认地址有效后回复编程地址有效报文,若地址无效则回复地址无效报文。上位机收到编程地址无效应答后,结束程序的升级,升级失败。
S8、上位机收到编程地址有效报文,发送块下载启动命令,下位机收到下载启动命令后,回复下载启动应答。
S9、上位机收到下位机回复的下载启动命令,接着开始分包发送块数据。
S10、下位机收到块数据的最后一包后回复确认,上位机收到下位机最后一包的回复后,发送块结束命令给下位机(数据报文含CRC校验码)。
S11、下位机收到块结束命令后,进行校验CRC校验,校验成功后,下位机把收到的数据写入存储器中,回复块结束命令。若CRC校验失败则回复下载错误报文,上位机收到下载错误报文,程序升级失败。
S12、上位机收到块结束命令后,判断应用程序的数据是否全部发送完成,若应用程序的所有数据都发送成功后,上位机发送编程结束命令给下位机,下位机回复编程结束应答给上位机,并跳转到应用程序区执行应用程序,程序升级结束。若应用程序的数据未发送完毕,则重复上述7~12步骤。
Claims (2)
1.一种基于CANOPEN协议的嵌入式软件升级方法,该方法应用于通过CAN总线网络连接的上位机和下位机所组成的系统中,其特征在于,包括以下步骤:
1)上位机与下位机进行联机,联机成功后执行步骤2),
2)上位机与下位机进行编程地址有效性的确认,当确认有效后,分包发送块数据,
3)下位机收到块数据的最后一包后回复确认,上位机收到下位机最后一包的回复后,发送包含CRC校验码的块结束命令给下位机,
4)下位机收到块结束命令后,进行CRC校验,若CRC校验成功,下位机把收到的数据写入存储器中,回复块结束命令给上位机;若CRC校验失败,下位机回复下载错误报文,上位机收到下载错误报文,结束程序升级,
5)上位机收到块结束命令后,判断应用程序的数据是否全部发送完成,若应用程序的所有数据都发送成功后,上位机发送编程结束命令给下位机,下位机收到后,回复编程结束应答给上位机,并跳转到存储器的应用程序区执行应用程序,程序升级结束;若应用程序的数据未发送完毕,则返回步骤2),
所述步骤2)具体包括以下步骤:
21)上位机向下位机发送编程地址报文,
22)下位机收到编程地址报文,对其编程地址进行确认,若有效,则向上位机回复编程地址有效报文;若无效,则回复编程地址无效报文,上位机收到编程地址无效报文后,结束程序升级,
23)上位机收到编程地址有效报文后,向下位机发送下载启动命令,下位机收到下载启动命令后,回复下载启动应答,
24)上位机收到下位机回复的下载启动应答后,开始分包发送块数据;
其中,所有命令采用加速传送机制传输,应用程序的数据采用块传送机制传输;
所述步骤1)具体包含以下步骤:
11)上位机软件解析要发送的应用程序文件,并等待下位机的联机请求,
12)下位机重新上电,进行初始化,然后发送Boot-up报文,通知上位机当前处于预操作状态,上位机收到下位机发送的Boot-up报文,发送联机请求报文给下位机;
13)下位机收到联机请求报文后,回复联机应答,若上位机收到该联机应答,则联机成功;若上位机未收到下位机的联机应答,则联机失败,结束程序升级;
步骤12)中的初始化包括:首先初始化RAM基址,接着初始化堆栈,关闭看门狗,随后初始化全局变量,接着初始化CAN通讯接口,以完成Bootloader自身环境初始化,下位机从中断向量表取Bootloader程序首地址,跳转到Bootloader执行Bootloader程序,Bootloader接收上位机发送的应用程序数据,并写到应用程序区,应用程序接收完后Bootloader程序重定位中断向量表,把中断向量表定位到应用程序区,接着跳转到应用程序区执行应用程序。
2.根据权利要求1所述的一种基于CANOPEN协议的嵌入式软件升级方法,其特征在于,执行步骤2)之前,还需要执行如下步骤:
A)联机成功后,上位机向下位机发送擦除请求,下位机收到擦除请求后执行擦除操作;
B)下位机擦除成功后,向上位机回复擦除成功应答,下位机擦除失败,则回复擦除失败应答;若上位机收到擦除失败应答,则结束程序升级;
C)若上位机收到擦除成功应答,则进行继续执行步骤2)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310581178.5A CN103559066B (zh) | 2013-11-19 | 2013-11-19 | 基于canopen协议的嵌入式软件升级方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310581178.5A CN103559066B (zh) | 2013-11-19 | 2013-11-19 | 基于canopen协议的嵌入式软件升级方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103559066A CN103559066A (zh) | 2014-02-05 |
CN103559066B true CN103559066B (zh) | 2017-03-08 |
Family
ID=50013320
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310581178.5A Active CN103559066B (zh) | 2013-11-19 | 2013-11-19 | 基于canopen协议的嵌入式软件升级方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103559066B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108196870A (zh) * | 2017-12-29 | 2018-06-22 | 北京臻迪科技股份有限公司 | 升级方法及装置 |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104216745A (zh) * | 2014-08-29 | 2014-12-17 | 万向钱潮股份有限公司 | 一种半主动悬架ecu控制器软件在线升级系统与方法 |
CN105468389A (zh) * | 2014-09-04 | 2016-04-06 | 中兴通讯股份有限公司 | 基于cpld的远程升级控制方法和装置 |
CN105630477B (zh) * | 2014-11-28 | 2019-03-01 | 奇点新源国际技术开发(北京)有限公司 | 车载终端应用程序的升级方法及装置 |
CN105187287A (zh) * | 2015-09-16 | 2015-12-23 | 中航锂电(洛阳)有限公司 | 一种基于can总线的电池管理系统软件升级方法 |
WO2017049557A1 (zh) * | 2015-09-24 | 2017-03-30 | 广东欧珀移动通信有限公司 | 为适配器升级的方法、移动终端和适配器 |
CN106713142B (zh) * | 2015-11-17 | 2019-12-24 | 陕西重型汽车有限公司 | 在can总线上传输ip报文的方法及利用can总线网络构建的ip局域网 |
CN105677428A (zh) * | 2016-01-12 | 2016-06-15 | 北京小米移动软件有限公司 | 终端的升级方法、装置及终端 |
CN105959166A (zh) * | 2016-07-15 | 2016-09-21 | 深圳市沃特玛电池有限公司 | 一种使用3g/gps车载终端升级bms主机固件的方法 |
CN106789210A (zh) * | 2016-12-12 | 2017-05-31 | 中国船舶重工集团公司第七0五研究所 | 一种基于can总线的多dsp智能节点软件在线升级方法 |
CN106648803A (zh) * | 2016-12-30 | 2017-05-10 | 南京科远自动化集团股份有限公司 | 一种dsp芯片在线升级方法 |
CN107678792A (zh) * | 2017-09-06 | 2018-02-09 | 中国航空工业集团公司西安飞行自动控制研究所 | 一种基于can总线的多余度目标机在线加载方法 |
CN107844316A (zh) * | 2017-11-17 | 2018-03-27 | 中国航空工业集团公司北京航空精密机械研究所 | 一种转台控制系统程序升级的方法及其装置 |
CN108132898A (zh) * | 2018-01-15 | 2018-06-08 | 东莞博力威电池有限公司 | 多路通讯控制方法及通讯盒 |
CN109189461B (zh) * | 2018-11-27 | 2022-01-18 | 上海辛格林纳新时达电机有限公司 | 电梯控制系统的程序升级方法和电梯控制系统及电梯设备 |
CN110244970A (zh) * | 2019-05-16 | 2019-09-17 | 芜湖智久机器人有限公司 | 一种单片机及其升级系统、升级方法 |
CN110837385A (zh) * | 2019-11-07 | 2020-02-25 | 北京特种机械研究所 | 一种基于CANopen协议的DSP应用程序在线升级方法 |
CN111638887A (zh) * | 2020-05-27 | 2020-09-08 | 重庆航天工业有限公司 | 一种用于fpga芯片的程序固化方法 |
CN111913699B (zh) * | 2020-08-14 | 2023-04-28 | 电子科技大学中山学院 | 一种实现兼容aisg-v3和aisg-v2协议的电调天线控制器软件设计方法 |
CN113760332A (zh) * | 2021-08-30 | 2021-12-07 | 青岛信芯微电子科技股份有限公司 | 软件升级方法和电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103092647A (zh) * | 2012-12-29 | 2013-05-08 | 聚光科技(杭州)股份有限公司 | 嵌入式系统的在线升级方法 |
CN103336701A (zh) * | 2013-06-20 | 2013-10-02 | 深圳麦克维尔空调有限公司 | 智能型引导升级方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN201335955Y (zh) * | 2009-01-16 | 2009-10-28 | 深圳市浚海仪表设备有限公司 | 一种基于CANopen协议的CAN总线智能电动装置 |
CN102833141B (zh) * | 2012-08-23 | 2015-06-03 | 天津瑞能电气有限公司 | 一种基于DSP28335的CANopen从站系统 |
-
2013
- 2013-11-19 CN CN201310581178.5A patent/CN103559066B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103092647A (zh) * | 2012-12-29 | 2013-05-08 | 聚光科技(杭州)股份有限公司 | 嵌入式系统的在线升级方法 |
CN103336701A (zh) * | 2013-06-20 | 2013-10-02 | 深圳麦克维尔空调有限公司 | 智能型引导升级方法 |
Non-Patent Citations (2)
Title |
---|
基于DSP的CAN总线在变频器控制中的应用;于伟峰;《工业控制计算机》;20100430(第4期);第58页 * |
基于底层网络协议的嵌入式系统内核更新;蔡恒 等;《杭州电子科技大学学报》;20110415;第31卷(第2期);第15页 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108196870A (zh) * | 2017-12-29 | 2018-06-22 | 北京臻迪科技股份有限公司 | 升级方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103559066A (zh) | 2014-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103559066B (zh) | 基于canopen协议的嵌入式软件升级方法 | |
CN106201563B (zh) | 启动参数的配置方法和装置、主板启动的方法和装置 | |
CN109656593B (zh) | 基于zynq芯片实现fpga程序远程升级的方法 | |
CN105373407A (zh) | 嵌入式系统dsp和fpga在线升级方法 | |
US20070067506A1 (en) | Multimedia program download control system and method of apparatus equipped with multimedia processor | |
CN102272723A (zh) | 用于快速启动usb装置的系统、设备及方法 | |
CN104063257A (zh) | 一种fpga自动加载系统及方法 | |
CN107015914B (zh) | 数据标定方法及系统 | |
CN101662838B (zh) | 一种实现免驱上网的装置、方法及usb数据卡 | |
CN113553081A (zh) | 一种基于zynq芯片的fpga加载方法 | |
CN104503814A (zh) | 一种usb3.0数据采集模块自动下载固件程序的方法 | |
CN113010470B (zh) | 边缘节点远程控制系统、方法、设备及存储介质 | |
CN105094877A (zh) | 一种固件升级的方法和主机端装置及系统 | |
CN113778739B (zh) | 一种一体机的系统修复方法、系统、设备及存储介质 | |
CN104461589A (zh) | 单片机升级方法及升级系统 | |
CN105488000A (zh) | 实现usb设备快速访问的方法和系统 | |
CN102981675B (zh) | 一种多点触摸数据处理方法及其系统 | |
CN103003033A (zh) | 机器人系统的控制方法和装置 | |
CN109002306A (zh) | 软件升级方法、升级终端、激光打标机以及激光打标系统 | |
CN104484205A (zh) | 一种io设备固件的升级装置及方法 | |
CN109039765B (zh) | 网络配置方法及装置 | |
CN109697077B (zh) | 硬盘固件启动方法、装置及设备 | |
CN113986357B (zh) | 建立通信链路的方法、装置和存储介质 | |
CN111880819B (zh) | 一种存储设备固件升级方法、系统、设备及计算机介质 | |
CN111371799B (zh) | Mctp控制器收发数据的控制方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |