CN106020869B - 基于can总线的选择性烧录多个单片机节点程序的方法 - Google Patents
基于can总线的选择性烧录多个单片机节点程序的方法 Download PDFInfo
- Publication number
- CN106020869B CN106020869B CN201610311659.8A CN201610311659A CN106020869B CN 106020869 B CN106020869 B CN 106020869B CN 201610311659 A CN201610311659 A CN 201610311659A CN 106020869 B CN106020869 B CN 106020869B
- Authority
- CN
- China
- Prior art keywords
- burning
- program
- chip microcontroller
- node
- frame
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于CAN总线的选择性烧录多个单片机节点程序的方法,在相同类型单片机烧录程序时,采用广播式协议烧录程序,可以做到同时烧录,大大提高了效率,在相同类型单片机烧录不同程序时,采用应答式协议来烧录程序,能够确保烧写数据的正确性,而且具有烧录出错自行处理功能,保证了依次烧录的正确性和实用性。克服了传统的由硬件接口和烧写器来烧写所带来的装壳后无法烧写,安装位置带来的不方便烧写的问题。既能够满足相同类型的单片机节点同时烧录相同的程序,又能够满足相同类型的节点有选择性地依次烧录不同的程序,更加具有通用性。
Description
技术领域
本发明涉及,具体涉及一种基于CAN总线的选择性烧录多个单片机节点程序的方法。
背景技术
现有的单片机烧录方法主要包括以下两大类:
1.通过串口,JTAG等硬件接口通过ISP方式烧录程序。
2.通过单片机和上位机配合使用,通过USB,网口,串口,CAN接口甚至无线接口采用IAP方式烧录程序。
针对于以上第一种烧录程序方式,在电路板已经封装外壳后,或者装在人工难以触及的地方,给更新程序带来极大的不便,甚至无法再次烧录程序,无法进行软件的更新。
针对于以上第二种烧录程序的方式中的CAN接口烧录程序,现有的技术主要是对挂载在CAN总线上的单片机节点进行一对一地烧录程序,即上位机只能依次对每个单片机节点烧录程序,在单片机节点较多的情况下并且每个单片机节点只需要烧录相同程序,这种方式效率比较低。再者,现有技术下有多个单片机节点烧录程序的方法,但是针对多个单片机节点烧录的程序是一样的,在某些应用需求下,针对于多个单片机节点要求烧录不同的程序,在现有技术下遇到了难题。
发明内容
针对现有技术的不足,本发明的目的在于提供一种基于CAN总线的选择性烧录多个单片机节点程序的方法,既能够针对相同单片机节点烧录相同程序,又能针对不同单片机节点有区别地依次烧录程序。
为了实现上述目的,本发明采取的技术方案是:
一种基于CAN总线的选择性烧录多个单片机节点的程序的方法,包括步骤:
上位机和各个单片机上电后,各个单片机从E2PROM读取软件更新标志位;
若所述软件更新标志位为烧录公有程序,则通过CAN总线向上位机发送烧录公有程序请求帧,若所述软件更新标志位为烧录私有程序,则通过CAN总线向上位机发送烧录私有程序请求帧;
上位机收到烧录公有程序请求帧后,将预先存储的公有程序通过广播的形式发送到CAN总线上,发出烧录公有程序请求帧的单片机节点通过CAN总线接收公有程序并进行烧录,烧录完成后,将E2PROM的软件更新标志位更新为无需烧录程序;
上位机检测不到烧录公有程序请求帧时,检测是否接收到烧录私有程序请求帧,按照接收的顺序,通过CAN总线向对应的单片机节点发送相同的帧与该单片机节点握手,再根据烧录私有程序请求帧中的身份信息调出相应的私有程序,将调出的私有程序通过CAN总线发送给对应的单片机节点,对应的单片机进行私有程序的烧录并将软件更新标志位更新为无需烧录程序。
与现有技术相比,本发明的有益效果在于:
本发明是一种通过上位机和单片机节点配合使用的烧写技术,完全克服了传统的由硬件接口(串口,JTAG)和烧写器来烧写所带来的装壳后无法烧写,安装位置带来的不方便烧写的问题。既能够满足相同类型的单片机节点同时烧录相同的程序,又能够满足相同类型的节点有选择性地依次烧录不同的程序,更加具有通用性。在相同类型单片机烧录程序时,采用广播式协议烧录程序,可以做到同时烧录,大大提高了效率,在相同类型单片机烧录不同程序时,采用应答式协议来烧录程序,能够确保烧写数据的正确性,而且具有烧录出错自行处理功能,保证了依次烧录的正确性和实用性。
附图说明
图1为上位机处理单片机节点烧录请求帧的流程示意图;
图2为单片机节点进行程序烧录的流程示意图;
图3为上位机和单片机节点组成的系统的结构示意图。
具体实施方式
本发明提出了一种基于CAN总线的可选择性地对多个单片机节点烧录相同或不同程序的方法。其步骤包括:
1、如图1所示,上位机上存好CAN总线上各个单片机节点需要烧录的.bin程序,这些程序中不同类型的节点.bin程序作了区分,同类型节点有相同的.bin程序(公共程序)和不同的.bin程序(私有程序)。
2、如图2所示,单片机节点上电后从E2PROM特定地址处读出软件更新标志位,该软件更新标志位包含3种状态:1.无需烧录程序,2.需要烧录该类型节点公共程序,3.需要烧录该类型节点私有程序。每个单片机根据软件更新标志位状态判断若不需要烧录程序则跳转到指定应用程序处执行,若需要烧录程序,则通过CAN总线向上位机发送烧录公有程序请求帧或者私有程序请求帧,请求帧中包含了该单片机节点的身份信息,烧录程序类型(公共程序或私有程序)供上位机识别。
3、当上位机收到单片机节点的烧录公有程序请求帧时,统计出所有身份信息个数,然后将公有程序通过CAN帧发送到总线上。烧录完所有公有程序后(也可能无烧录公有程序请求),开始检测CAN总线上的烧录私有程序请求,根据接收到的请求先后顺序,首先通过发送与该请求相同的帧来与对应节点握手,握手成功后根据请求帧中的身份信息来决定将要烧写的私有程序。
4、上位机都是将.bin文件转换为CAN帧的形式烧录程序,在烧录公共程序的过程中,上位机直接以广播的形式将CAN帧发送到总线上,对应需要烧录的节点将自行收取该帧,在烧录私有程序的过程中,上位机与对应单片机节点之间通过一应一答的方式来通信,确保每帧数据的正确性。
5、在传输完最后一帧数据后,单片机节点将接受到的所有程序数据写入到对应的FLASH中,并且写E2PROM修改软件更新标志位(下次启动无需烧写),最后自行软件复位。
6、在烧录私有程序过程中,若上位机与单片机节点通信过程中出现错误,上位机则立马忽略该单片机节点,转而应答其他请求烧录节点或者等待重新收到该单片机节点烧录请求。单片机节点则自行软件复位,重新发送烧录请求。
下面以一个具体的实施例进一步解释上述步骤。
图3所示为上位机和单片机节点的系统结构示意图,其中,上位机是一台带有CAN控制卡的X86体系工控机,CAN总线上的节点都是具有CAN控制器的STM32F103系列单片机。上位机不仅具有CAN控制卡,还具备存储器用于存储需要烧写的.bin程序,包括各种类型节点的有公有程序和私有程序,每个单片机节点都需要一块外部E2PROM用于存储软件更新标志位。
1.首先将需要烧录的程序拷贝到上位机的存储器中,烧录的程序是由Keil编译器生成的.bin文件,然后根据每个单片机节点类型通过拨码开关设置对应的烧录请求码,拨码开关为4位,可设置数范围为0-15,将上位机和各个单片机节点通过CAN总线的连接方式连接起来。
2.当上位机和各个单片机节点上电后,上位机开始查询是否收到烧录请求帧,各单片机节点则从各自的E2PROM中特定地址读取软件更新标志位,特定地址自己设定,每个节点均从该地址读出,软件更新标志位设定共有三种取值,1.无需烧录程序;2.烧录该节点类型公有程序;3.烧录本节点私有程序。
3.在单片机整个的FLASH中包括两段代码,前面一段为BootLoader代码,这段代码就是烧录代码的引导程序,由出厂时候的厂家烧录,后面一段就是App代码,这段代码就是应用程序的代码,单片机节点出厂的时候没有这段代码,这段代码是通过CAN总线自行烧录进去。在BootLoader代码处单片机节点根据读取出来标志位的值判断是否需要烧录程序,若不需要烧写程序,则直接跳转到应用程序处执行。若需要烧录该类型节点的公有程序,则开始等待上位机烧录公有程序,此时所有需要烧录公有程序的节点均接收总线上的公有程序帧,烧写完毕后,将其写入FLASH中,并且修改软件更新标志位,下次启动无需烧录程序,然后重新启动。若需要烧录本节点私有程序,则首先从拨码开关接入引脚处,读取出当前发送请求码,范围0-15,然后将其作为CAN帧中第一个字节往总线上发送CAN帧,来请求上位机烧录程序,请求烧录帧通过定时器定时发送,一直到收到第一个字节与发出去第一个字节相同的帧时,即上位机正确回应时,停止发送请求帧,立马进入准备烧录状态,等待上位机发送烧录代码数据。由于可能有多个单片机节点需要烧录程序,上位机将根据最先收到的请求帧来决定烧录的优先权,上位机在接收到请求帧时,立马回应相同的帧,并且根据请求帧中的设备信息,选择对应的.bin烧录文件,然后解析出.bin的数据内容,打包成CAN帧的形式往总线上发送数据。在发送该.bin文件的过程中,不再响应其他的烧录请求,只有当烧录完该.bin文件后或者烧写出错后,才响应其他的烧录请求。
4.在烧录私有程序过程中,在上位机与某个单片机节点成功握手后并且传输数据的过程中,二者都会开启传输超时定时器,该定时器的定时时间为3秒,上位机在发送一帧数据后,3秒内没收到对应单片机节点的应答,则认为传输出错,将停止传输,此时可响应其他单片机节点的烧录请求。单片机节点在接收完一帧数据后,3秒内没有再次收到下一帧数据,则认为传输出错,出错后自行软件复位,复位后重新读取软件标志位和发送请求码,再次发送烧录请求帧。
5.上位机在烧录完一个单片机节点后,查询是否有其他烧录请求,直到没有其余烧录请求,认为烧路完毕,上位机显示烧录完毕信息。一个单片机节点在正确接收完数据后,将所有接收到数据写入到FLASH应用程序存放的地址处,然后在E2PROM处写入软件更新标志位,下次启动无需烧录程序,标志应用程序成功烧录,再次自行软件复位,复位后首先会从E2PROM中读取出软件更新标志位,此时读出的值为无需烧录程序,则直接跳转到应用程序处执行。
上列详细说明是针对本发明可行实施例的具体说明,该实施例并非用以限制本发明的专利范围,凡未脱离本发明所为的等效实施或变更,均应包含于本案的专利范围中。
Claims (5)
1.一种基于CAN总线的选择性烧录多个单片机节点的程序的方法,其特征在于,包括步骤:
上位机和各个单片机节点上电后,各个单片机节点从各自E2PROM读取软件更新标志位;
若所述软件更新标志位为烧录公有程序,则通过CAN总线向上位机发送烧录公有程序请求帧,若所述软件更新标志位为烧录私有程序,则通过CAN总线向上位机发送烧录私有程序请求帧;
上位机收到烧录公有程序请求帧后,将预先存储的公有程序通过广播的形式发送到CAN总线上,发出烧录公有程序请求帧的单片机节点通过CAN总线接收公有程序并进行烧录,烧录完成后,将各自E2PROM的软件更新标志位更新为无需烧录程序;
上位机检测不到烧录公有程序请求帧时,检测是否接收到烧录私有程序请求帧,按照接收的顺序,通过CAN总线向对应的单片机节点发送相同的帧与该单片机节点握手,再根据烧录私有程序请求帧中的身份信息调出相应的私有程序,将调出的私有程序通过CAN总线发送给对应的单片机节点,对应的单片机进行私有程序的烧录并将软件更新标志位更新为无需烧录程序。
2.根据权利要求1所述的基于CAN总线的选择性烧录多个单片机节点的程序的方法,其特征在于,
若软件更新标志位为烧录私有程序,则单片机节点从拨码开关接入处读取当前发送请求码,将该发送请求码作为烧录私有程序请求帧的第一个字节发送至上位机。
3.根据权利要求2所述的基于CAN总线的选择性烧录多个单片机节点的程序的方法,其特征在于,
单片机节点发送烧录私有程序请求帧时,通过定时器定时发送,直至收到上位机发来的与发出的烧录私有程序请求帧相同的帧。
4.根据权利要求3所述的基于CAN总线的选择性烧录多个单片机节点的程序的方法,其特征在于,
在上位机与单片机节点成功握手后并且传输私有程序的过程中,二者都会开启传输超时定时器,上位机在发送一帧数据后,预定时间内没收到对应单片机节点的应答,则认为传输出错,将停止传输,此时可响应其他单片机节点的烧录请求;
单片机节点在接收完一帧数据后,预定时间内没有再次收到下一帧数据,则认为传输出错,出错后自行软件复位,复位后重新读取软件标志位和发送烧录私有程序请求帧。
5.根据权利要求4所述的基于CAN总线的选择性烧录多个单片机节点的程序的方法,其特征在于,
所述预定时间为3秒。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610311659.8A CN106020869B (zh) | 2016-05-09 | 2016-05-09 | 基于can总线的选择性烧录多个单片机节点程序的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610311659.8A CN106020869B (zh) | 2016-05-09 | 2016-05-09 | 基于can总线的选择性烧录多个单片机节点程序的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106020869A CN106020869A (zh) | 2016-10-12 |
CN106020869B true CN106020869B (zh) | 2019-05-31 |
Family
ID=57100452
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610311659.8A Active CN106020869B (zh) | 2016-05-09 | 2016-05-09 | 基于can总线的选择性烧录多个单片机节点程序的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106020869B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391209B (zh) * | 2017-08-11 | 2020-11-27 | 宿迁市创盈知识产权服务有限公司 | 一种led灯控制程序烧录方法及装置 |
CN109871223A (zh) * | 2019-01-17 | 2019-06-11 | 南京品畅科技发展有限公司 | 一种基于stm32单片机的IAP方法及系统 |
CN110045968B (zh) * | 2019-04-16 | 2022-06-28 | 广东欧谱曼迪科技有限公司 | 一种stm32跨单片机烧录程序的方法 |
CN114281392A (zh) * | 2022-03-04 | 2022-04-05 | 季华实验室 | 一种多mcu从站的串口升级方法及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101673209A (zh) * | 2009-10-28 | 2010-03-17 | 广东威创视讯科技股份有限公司 | 一种升级多个单片机程序的方法 |
CN102298526A (zh) * | 2011-06-08 | 2011-12-28 | 厦门雅迅网络股份有限公司 | 一种基于无外扩存储器单片机的外设设备程序升级机制 |
CN103034506A (zh) * | 2011-09-30 | 2013-04-10 | 鸿富锦精密工业(深圳)有限公司 | 对电源pwm控制器进行软件烧录的方法及烧录装置 |
CN103838591A (zh) * | 2012-11-20 | 2014-06-04 | 海尔集团公司 | 一种基于串行总线的多单片机升级方法及装置 |
CN104915219A (zh) * | 2014-03-12 | 2015-09-16 | 奇点新源国际技术开发(北京)有限公司 | 单片机程序升级方法及装置 |
CN104951341A (zh) * | 2015-06-18 | 2015-09-30 | 烟台东方威思顿电气股份有限公司 | 一种采集器的远程升级方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2825812B1 (fr) * | 2001-06-12 | 2003-12-05 | St Microelectronics Sa | Procede de programmation/reprogrammation parallele de memoire flash embarquee par bus can |
-
2016
- 2016-05-09 CN CN201610311659.8A patent/CN106020869B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101673209A (zh) * | 2009-10-28 | 2010-03-17 | 广东威创视讯科技股份有限公司 | 一种升级多个单片机程序的方法 |
CN102298526A (zh) * | 2011-06-08 | 2011-12-28 | 厦门雅迅网络股份有限公司 | 一种基于无外扩存储器单片机的外设设备程序升级机制 |
CN103034506A (zh) * | 2011-09-30 | 2013-04-10 | 鸿富锦精密工业(深圳)有限公司 | 对电源pwm控制器进行软件烧录的方法及烧录装置 |
CN103838591A (zh) * | 2012-11-20 | 2014-06-04 | 海尔集团公司 | 一种基于串行总线的多单片机升级方法及装置 |
CN104915219A (zh) * | 2014-03-12 | 2015-09-16 | 奇点新源国际技术开发(北京)有限公司 | 单片机程序升级方法及装置 |
CN104951341A (zh) * | 2015-06-18 | 2015-09-30 | 烟台东方威思顿电气股份有限公司 | 一种采集器的远程升级方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106020869A (zh) | 2016-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106020869B (zh) | 基于can总线的选择性烧录多个单片机节点程序的方法 | |
CN105573743B (zh) | 一种芯片烧录系统及方法、电子设备 | |
CN105354070B (zh) | 一种通过i2c升级设备固件的方法 | |
CN105607939B (zh) | 一种烧录系统及其烧录方法 | |
CN109002310A (zh) | 固件升级方法 | |
CN100511148C (zh) | 一种cpu系统的启动方法及系统 | |
CN105786573B (zh) | 快速升级智能家居中ZigBee控制器的方法及系统 | |
CN105955764A (zh) | 一种stm32单片机iap串口程序烧录的改进方法 | |
CN103365688A (zh) | 一种安卓智能设备间软件自动安装与同步方法 | |
CN109408097A (zh) | 一种固件升级方法、装置、系统及一种电子设备 | |
CN104077166B (zh) | 基于fpga中ip核的epcs与epcq存储器在线升级方法 | |
CN109783340B (zh) | SoC的测试代码烧写方法、IP测试方法及装置 | |
CN109189434A (zh) | 一种电能表的在线升级方法 | |
JP5932947B2 (ja) | ホスト及びシステム | |
CN109388413A (zh) | 一种fpga程序更新方法及系统 | |
CN106201896A (zh) | 一种嵌入式环境下基于检查点的调试方法、系统及装置 | |
CN103885885A (zh) | 一种使用WiFi对嵌入式软件进行仿真调试的方法 | |
CN103793263A (zh) | 一种基于PowerPC处理器的DMA事务级建模方法 | |
CN116302141B (zh) | 串口切换方法、芯片及串口切换系统 | |
CN108536458A (zh) | 一种fpga在线升级方法、装置、设备及存储介质 | |
CN111897560A (zh) | 基于NB-IoT模块的程序升级系统、方法、设备以及存储介质 | |
CN110401585B (zh) | 可中断串行总线通讯方法、系统及介质 | |
CN102955701B (zh) | 使用Bootloader程序的应用程序更新方法 | |
CN110888656A (zh) | 一种多功能烧写器及烧写方法 | |
CN111078255A (zh) | 一种软件升级方法和软件升级系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: 510530 No. 8 Shenzhou street, Science City, Guangzhou hi tech Industrial Development Zone, Guangdong, Guangzhou Patentee after: Guangzhou Kangsheng Biotechnology Co., Ltd Address before: 510530 No. 8 Shenzhou street, Science City, Guangzhou hi tech Industrial Development Zone, Guangdong, China Patentee before: Guangzhou Kang Huai Biology Science and Technology Co., Ltd. |
|
CP03 | Change of name, title or address |