CN110286935B - 一种双芯片程序更新装置及方法 - Google Patents
一种双芯片程序更新装置及方法 Download PDFInfo
- Publication number
- CN110286935B CN110286935B CN201910710725.2A CN201910710725A CN110286935B CN 110286935 B CN110286935 B CN 110286935B CN 201910710725 A CN201910710725 A CN 201910710725A CN 110286935 B CN110286935 B CN 110286935B
- Authority
- CN
- China
- Prior art keywords
- chip
- program
- data
- temporary storage
- storage area
- 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
- 238000000034 method Methods 0.000 title claims abstract description 26
- 239000000872 buffer Substances 0.000 claims abstract description 83
- 230000005540 biological transmission Effects 0.000 claims abstract description 20
- 230000009977 dual effect Effects 0.000 claims abstract description 15
- 238000012544 monitoring process Methods 0.000 claims description 12
- 238000004891 communication Methods 0.000 claims description 8
- 230000008569 process Effects 0.000 claims description 8
- 238000004364 calculation method Methods 0.000 claims description 2
- 238000004458 analytical method Methods 0.000 abstract description 5
- 235000015429 Mirabilis expansa Nutrition 0.000 description 14
- 244000294411 Mirabilis expansa Species 0.000 description 14
- 235000013536 miso Nutrition 0.000 description 14
- 238000013500 data storage Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000013524 data verification Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
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)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种双芯片程序更新装置及方法,其能够避免芯片间数据透传引入的时间延迟以及可能的数据传输解析错误。一种双芯片程序更新装置,包括:第一芯片、第二芯片及外扩存储器;还包括:第一缓冲电路,其连接于第一芯片和外扩存储器之间;第二缓冲电路,其连接于第二芯片和外扩存储器之间;在第一芯片更新状态时,第一芯片通过第一缓冲电路和外扩存储器连通以获取需要更新的程序数据,第二芯片和外扩存储器断开;在第二芯片更新状态时,第二芯片通过第二缓冲电路和外扩存储器连通以获取需要更新的程序数据,第一芯片和外扩存储器断开;双芯片程序更新装置还包括用于在第一芯片更新状态和第二芯片更新状态之间切换的非门电路。
Description
技术领域
本发明属于嵌入式系统技术领域,涉及一种双芯片程序更新装置及方法。
背景技术
为了存储运行数据或可靠升级程序,嵌入式平台中一般会使用外扩Flash作为非易失性存储设备。通用型平台中包含一个主控芯片和一个外扩Flash,有的也会扩展并口外扩SDRAM。常用的方案是一个主控芯片与一个外扩Flash进行数据交互或者程序升级。图1示出了现有技术中的一种常规的外扩Flash使用方式,在该系统中,若芯片2若需要升级程序,则需要通过芯片1读取外扩Flash 3的数据然后再传递给芯片2,时间上延迟较多且传递过程易出现数据干扰或解析问题。
发明内容
为了解决上述技术问题,本发明的目是提供一种双芯片程序更新装置及方法,其能够避免芯片间数据透传引入的时间延迟以及可能的数据传输解析错误。
为达到上述目的,本发明采用的一种技术方案为:
一种双芯片程序更新装置,包括:第一芯片、第二芯片及用于存储需要更新的程序数据的外扩存储器;所述双芯片程序更新装置还包括:
第一缓冲电路,其连接于所述第一芯片和所述外扩存储器之间;
第二缓冲电路,其连接于所述第二芯片和所述外扩存储器之间;
所述双芯片程序更新装置具有第一芯片更新状态和第二芯片更新状态,当所述双芯片程序更新装置在所述第一芯片更新状态时,所述第一芯片通过所述第一缓冲电路和所述外扩存储器连通以获取所述需要更新的程序数据,所述第二芯片和所述外扩存储器断开;当所述双芯片程序更新装置在所述第二芯片更新状态时,所述第二芯片通过所述第二缓冲电路和所述外扩存储器连通以获取所述需要更新的程序数据,所述第一芯片和所述外扩存储器断开;
所述双芯片程序更新装置还包括用于在所述第一芯片更新状态和所述第二芯片更新状态之间切换的非门电路。
具体地,第一芯片及第二芯片为微控制器、数字处理器、单片机中的一种;外部存储器为外扩Flash;第一缓冲电路和第二缓冲电路分别为逻辑控制芯片;非门电路为非门逻辑IC。
在一些实施例中,所述第一芯片、所述第一缓冲电路和所述第二缓冲电路分别具有OE管脚,所述第一芯片的OE管脚连接于所述第一缓冲电路的OE管脚,所述非门电路连接于所述第一芯片的OE管脚和所述第二缓冲电路的OE管脚之间。
在一些实施例中,所述第一芯片、所述第二芯片及所述外扩存储器分别具有SPI接口,各所述SPI接口分别包括MISO连接端口、MOSI连接端口、CLK连接端口及Slave_Set连接端口;所述第一芯片的CLK连接端口和Slave_Set连接端口连接于所述第一缓冲电路,所述第二芯片的CLK连接端口和Slave_Set连接端口连接于所述第二缓冲电路,所述外扩存储器的CLK连接端口和Slave_Set连接端口均连接于所述第一缓冲电路和所述第二缓冲电路。利用第一缓冲电路和第二缓冲电路仅连接芯片和外扩存储器的CLK连接端口及Slave_Set连接端口,可以减少逻辑控制芯片的使用,降低通讯线路的延迟。
优选地,所述第一芯片的MOSI连接端口和所述第二芯片的MOSI连接端口分别连接于所述外扩存储器的MOSI连接端口;所述外扩存储器的MISO连接端口分别连接于所述第一芯片的MISO连接端口和所述第二芯片的MISO连接端口。
在一些实施例中,所述第一缓冲电路具有接所述第一芯片的A端口、连接所述外扩存储器的Y端口及用于切换控制所述A端口能否将数据传递到所述Y端口的OE管脚。
在一些实施例中,所述第二缓冲电路具有接所述第二芯片的A端口、连接所述外扩存储器的Y端口及用于切换控制所述A端口能否将数据传递到所述Y端口的OE管脚。
在一些实施例中,所述第一芯片具有用于连接外部数据传输模块以获取所述需要更新的程序数据的对外通讯接口。
在一些实施例中,所述第二芯片具有输入监测单元,所述输入监测单元连接所述非门电路的输入端。输入监测单元主要用于检测第一芯片与第二芯片当前对外扩存储器的工作状态。
本发明采用的另一种技术方案为:
一种如上所述的双芯片程序更新装置的双芯片程序更新方法,包括第一芯片更新步骤和第二芯片更新步骤,在执行所述第一芯片更新步骤时,所述第一芯片获得所述外扩存储器的控制权;在执行所述第二芯片更新步骤时,所述第二芯片获得所述外扩存储器的控制权。
在一些实施例中,所述双芯片程序更新方法还包括需要更新的程序数据的获取及存储步骤,该获取及存储步骤具体包括:通过第一芯片获取外部传输的需要更新的程序数据,并将所述需要更新的程序数据传递到所述外扩存储器并存储到所述外扩存储器的相应区域;其中,所述外扩存储器具有第一芯片存储信息标记区、第一芯片程序暂存区、第一芯片程序备份区、第二芯片存储信息标记区、第二芯片程序暂存区及第二芯片程序备份区;当获得的所述需要更新的程序数据为第一芯片的程序,则存储在所述第一芯片程序暂存区,当获得的所述需要更新的程序数据为第二芯片的程序,则存储在所述第二芯片程序暂存区。
优选地,所述第一芯片更新步骤具体如下:
S401、使能第一缓冲电路的OE管脚,使第一芯片获取外扩存储器的控制权;
S402、第一芯片获取外扩存储器的第一芯片存储信息标记区的信息;
S403、擦除第一芯片的ROM区域中的数据;
S404、将外扩存储器的第一芯片程序暂存区的数据传递到第一芯片的ROM区域;
S405、若第一芯片程序更新完成,则更新对应的状态并将第一芯片程序暂存区的数据复制到第一芯片程序备份区;
所述第二芯片更新步骤具体如下:
S501、使能第二缓冲电路的OE管脚,使第二芯片获取外扩存储器的控制权;
S502、第二芯片获取外扩存储器的第二芯片存储信息标记区的信息;
S503、擦除第二芯片的ROM区域中的数据;
S504、将外扩存储器的第二芯片程序暂存区的数据传递到第二芯片的ROM区域;
S505、若第二芯片程序更新完成,则更新对应的状态并将第二芯片程序暂存区的数据复制到第一芯片程序备份区。
优选地,所述第一芯片程序暂存区包括第一芯片程序暂存区A和第一芯片程序暂存区B,所述第一芯片程序暂存区A和所述第一芯片程序暂存区B均存储有第一芯片的所述需要更新的程序数据;所述步骤S404的传递过程中,将所述第一芯片程序暂存区A和所述第一芯片程序暂存区B的数据分成若干数据帧,设定每个数据帧的数据长度和CRC检验码;对应到第一芯片程序暂存区B中每个数据帧传递的程序数据与所述数据长度进行异或操作,然后与第一芯片程序暂存区A中的每个数据帧传递的程序数据进行数据位加法,若所得结果均为所述数据长度,则判定程序数据正确;否则判定程序数据出错,设定标志位;第一芯片对接收到的数据进行CRC校验,若计算结果与传递的CRC检验码一致,则判定该帧数据有效,写入第一芯片的ROM区域;
所述第二芯片程序暂存区包括第二芯片程序暂存区A和第二芯片程序暂存区B,所述第二芯片程序暂存区A和所述第二芯片程序暂存区B均存储有第二芯片的所述需要更新的程序数据;所述步骤S504的传递过程中,将所述第二芯片程序暂存区A和所述第二芯片程序暂存区B的数据分成若干数据帧,设定每个数据帧的数据长度和CRC检验码;对应到第二芯片程序暂存区B中每个数据帧传递的程序数据与所述数据长度进行异或操作,然后与第二芯片程序暂存区A中的每个数据帧传递的程序数据进行数据位加法,若所得结果均为所述数据长度,则判定程序数据正确;否则判定程序数据出错,设定标志位;第二芯片对接收到的数据进行CRC校验,若计算结果与传递的CRC检验码一致,则判定该帧数据有效,写入第二芯片的ROM区域。
优选地,所述数据帧的第三个字节为数据长度,最后16位字节为CRC检验码。
在一些实施例中,所述需要更新的程序数据的获取及存储步骤中,使能第一芯片的OE管脚,将获取的程序数据传递到所述外扩存储器。
在一些实施例中,所述双芯片程序更新方法还包括位于所述第一芯片更新步骤和所述第二芯片更新步骤之前的如下步骤:所述第一芯片读取所述外扩存储器中的信息以获取当前外扩存储器的分区结构信息、外扩存储器数据版本信息及状态信息;若所述外扩存储器的状态信息显示外扩存储器当前的程序未烧录,则执行所述第一芯片更新步骤或所述第二芯片更新步骤。
本发明采用以上方案,相比现有技术具有如下优点:
本发明的双芯片程序更新装置及双芯片程序更新方法中,能够利用外扩Flash的非易失特性支持芯片程序的备份与安全升级,两个芯片均直接与同一个外扩Flash进行数据读写,减少了一个外扩Flash,可以避免芯片间数据透传引入的时间延迟以及可能的数据传输解析错误。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一种常规的外扩Flash和双芯片的连接示意图;
图2为实施例的一种双芯片程序更新装置的结构示意图;
图3为实施例的双芯片和外扩Flash的连接示意图;
图4为外扩Flash的分区示意图;
图5为实施例的一种数据帧格式。
1、第一芯片;11、MISO连接端口;12、MOSI连接端口:13、CLK连接端口;14、Slave_Set连接端口;15、OE管脚;16、对外通讯接口;
2、第二芯片;21、MISO连接端口;22、MOSI连接端口:23、CLK连接端口;24、Slave_Set连接端口;25、输入监测单元;
3、外扩Flash;31、MISO连接端口;32、MOSI连接端口:33、CLK连接端口;300、全局管理信息区;301、第一芯片存储信息标记区;302、第一芯片程序暂存区A;303、第一芯片程序暂存区B;304、第一芯片程序备份区;305、第一芯片数据存储区;306、第二芯片存储信息标记区;307、第二芯片程序暂存区A;308、第二芯片程序暂存区B;309、第二芯片程序备份区;310、第二芯片数据存储区;
4、第一缓冲电路;41、OE管脚;
5、第二缓冲电路;51、OE管脚;
6、非门逻辑IC;
7、数据传输模块。
具体实施方式
下面结合附图对本发明的较佳实施例进行详细阐述,以使本发明的优点和特征能更易于被本领域的技术人员理解。在此需要说明的是,对于这些实施方式的说明用于帮助理解本发明,但并不构成对本发明的限定。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以互相结合。
参照图2和图3所示,本实施例提供的一种双芯片程序更新装置包括第一芯片1、第二芯片2及用于存储需要更新的程序数据的外扩存储器,外扩存储器具体为外扩Flash 3。该双芯片程序更新装置还包括:第一缓冲电路4,其连接于所述第一芯片1和所述外扩Flash3之间;第二缓冲电路5,其连接于所述第二芯片2和所述外扩Flash 3之间。所述双芯片程序更新装置具有第一芯片更新状态和第二芯片更新状态。当所述双芯片程序更新装置在所述第一芯片更新状态时,所述第一芯片1通过所述第一缓冲电路4和所述外扩Flash 3连通以获取所述需要更新的程序数据,所述第二芯片2和所述外扩存储器断开;当所述双芯片程序更新装置在得到第二芯片更新状态时,所述第二芯片2通过所述第二缓冲电路5和所述外扩Flash 3连通以获取所述需要更新的程序数据,所述第一芯片1和所述外扩Flash 3断开。所述双芯片程序更新装置进一步包括用于在所述第一芯片更新状态和所述第二芯片更新状态之间切换的非门电路。能够利用外扩Flash的非易失特性支持芯片程序的备份与安全升级,两个芯片均直接与外扩Flash进行数据读写,可以避免芯片间数据透传引入的时间延迟以及可能的数据传输解析错误。
本实施例中,第一芯片1及第二芯片2为微控制器、数字处理器、单片机中的一种,其具有SPI接口(串行外设接口,Serial Peripheral Interface);外扩Flash 3,是一种非易失性存储器,断电时数据不会丢失,本实施例中使用的是包含SPI接口的外扩Flash 3;第一缓冲电路4和第二缓冲电路5由逻辑控制IC实现,用于决定是第一芯片1与外扩Flash 3通讯,还是第二芯片2与外扩Flash 3通讯,具体通过OE管脚来控制数据是否可从其Ax端口传递到Yx端口;非门电路具体为非门IC 6,通过非门IC 6控制第一芯片1与第二芯片2不能同时连接外扩Flash 3。
所述第一芯片1、所述第一缓冲电路4和所述第二缓冲电路5分别具有一个OE管脚。所述第一芯片1的OE管脚15连接于所述第一缓冲电路4的OE管脚41,所述非门IC 6连接于所述第一芯片1的OE管脚15和所述第二缓冲电路5的OE管脚51之间。具体地,非门IC 6的输入端连接至第一芯片1的OE管脚15,输出端连接至第二缓冲电路5的OE管脚51。第一芯片1上的OE管脚15主要是指第一芯片1的一个通用IO管脚,可以稳定输出高低电平,第一缓冲电路4和第二缓冲电路5是否导通Ax与Yx的连接由其自身的OE管脚处电平决定。缓冲电路又称Buffer,有的缓冲电路是低电平表示Buffer开通,也有的是高电平表示Buffer开通;本实施例第一缓冲电路4和第二缓冲电路5使用的是相同规格功能的Buffer。非门IC 6的主要功能是将送至第一缓冲电路4和第二缓冲电路5的OE管脚信号取反,这样第一缓冲电路4和第二缓冲电路5不能同时使能并工作。例如:第一缓冲电路4和第二缓冲电路5的OE管脚均在接收到高电平才能够使能工作,则当第一芯片1的OE管脚15输出高电平时,第一缓冲电路4的OE管脚41使能,第一缓冲电路4开通,表示第一芯片1可与外扩Flash连接工作;由于非门IC的存在,所以第二缓冲电路5的OE管脚51收到的是低电平,第二缓冲电路5不会使能。若第二芯片2需要与外部Flash连接工作则第一芯片1的OE管脚15输出低电平,通过非门IC6则第二缓冲电路5的OE接收到的是高电平。
第一芯片1、第二芯片2及外扩Flash 3分别具有SPI接口(包括MISO连接端口、MOSI连接端口、CLK连接端口及Slave_Set连接端口四种)。具体地,第一芯片1具有MISO连接端口11、MOSI连接端口12、CLK连接端口13及Slave_Set连接端口14,第二芯片2具有MISO连接端口21、MOSI连接端口22、CLK连接端口23及Slave_Set连接端口24,外扩Flash 3具有MISO连接端口31、MOSI连接端口32、CLK连接端口33及Slave_Set连接端口34。第一芯片1的MOSI连接端口12和第二芯片2的MOSI连接端口22分别连接于外扩Flash 3的MOSI连接端口32;外扩Flash 3的MISO连接端口31分别连接于第一芯片1的MISO连接端口11和第二芯片2的MISO连接端口21。利用逻辑控制IC仅连接芯片与外扩Flash的CLK管脚和Slave_Set管脚,能够减少逻辑控制IC的使用,降低通讯线路的延迟。
第一缓冲电路4具有连接第一芯片1的A端口、连接外扩Flash 3的Y端口及用于切换控制A端口能否将数据传递到Y端口的OE管脚41。第一缓冲电路4中,A端口包括A1端口和A2端口,Y端口包括Y1端口和Y2端口。第一芯片1的CLK连接端口13和Slave_Set连接端口14分别连接于第一缓冲电路4的A1端口和A2端口,外扩Flash 3的CLK连接端口33和Slave_Set连接端口34分别连接于第一缓冲电路4的Y1端口和Y2端口。
第二缓冲电路5具有连接第二芯片2的A端口、连接外扩Flash 3的Y端口及用于切换控制A端口能否将数据传递到Y端口的OE管脚51。第二缓冲电路5中,A端口包括A1端口和A2端口,Y端口包括Y1端口和Y2端口。第二芯片2的CLK连接端口23和Slave_Set连接端口24分别连接于第二缓冲电路5的A1端口和A2端口,外扩Flash 3的CLK连接端口33和Slave_Set连接端口34分别连接于第二缓冲电路5的Y1端口和Y2端口。
第一芯片1还具有用于连接外部数据传输模块7的对外通讯接口16。该对外通讯接口16具体为Ethernet接口、RS422接口、RS485接口中的一种。外部数据传输模块7是有线传输模块或无线传输模块,如wifi或GPRS装置。
第二芯片2还具有输入监测单元25,其是第二芯片2的其中一个管脚,输入监测单元25连接非门IC 6的输入端,用于检测第二芯片2是否获取外扩Flash 3的控制权。输入监测单元主要用于检测第一芯片1与第二芯片2当前对外扩Flash 3的工作状态。若输入监测单元25第一芯片1的OE管脚15输出高电平,则第二芯片2通过该输入监测单元25可以知道当前是第一芯片1在与外扩Flash3通信;当输入监测单元25检测到低电平,则表明第一芯片1当前未与外扩Flash3工作,第二芯片2可以与外扩Flash3进行数据读写。
外扩Flash 3主要包括全局管理信息区300、第一芯片存储区和第二芯片存储区。具体如图4所示,外扩存储器具有第一芯片存储信息标记区301、第一芯片程序暂存区(包括第一芯片程序暂存区302和第一芯片程序暂存区303)、第一芯片程序备份区304、第一芯片数据存储区305、第二芯片存储信息标记区306、第二芯片程序暂存区(包括第二芯片程序暂存区307和第二芯片程序暂存区308)、第二芯片程序备份区309及第二芯片数据存储区310,各个区均包含数据校验码。
本实施例还提供一种上述双芯片程序更新装置搭载的双芯片程序更新方法。该双芯片程序更新方法具体过程如下。
1、第一芯片与外部数据传输模块进行数据交互,第一芯片的OE使能并通过SPI接口将程序数据传递到外扩Flash的对应区域。具体地,第一芯片负责将需要更新的程序数据传递到外扩Flash。若接收到的是第一芯片的程序,则将获取的第一芯片的程序传递到第一芯片程序暂存区A和第一芯片程序暂存区B,即写入两份同样的程序数据。若接收到的是第二芯片的程序,则传递到第二芯片程序暂存区A和第二芯片程序暂存区B,写入两份同样的程序数据。通过程序暂存区A和B对程序数据进行双备份,一旦程序数据出错,可以恢复一个正确的版本。此外,还能够方便进行数据校验。
2、第一芯片读取外扩Flash的全局管理信息区信息,获取当前外扩Flash的分区结构信息、Flash数据版本信息以及状态信息。
3、若Flash数据的状态信息显示当前外扩Flash的区域的程序未烧录,则进行程序更新。
4、更新第一芯片程序:
1)、进入第一芯片的boot程序,使能第一缓冲电路的OE管脚。
2)、获取第一芯片存储信息标记区的信息。
3)、擦除第一芯片的ROM中的数据。
4)、将Flash中第一芯片程序暂存区的数据传递到第一芯片的ROM区域。
传递过程中,将第一芯片程序暂存区A与第一芯片程序暂存区B的数据按照规则分成若干数据帧。
对同样的数据帧进行校验处理:一个数据帧传递的数据内容包含若干个字节。如图5所示,本例设定程序字节数为256字节,字节头使用0xA5和0x5A(即第一个字节与第二个字节为0xA5 0x5A),紧跟着为数据长度0xFF,最后为16位CRC检验码,对数据帧进行校验。
程序数据每帧校验:
对应到第一芯片程序暂存区B中每个数据帧传递的程序数据与0xFF进行异或操作,然后与第一芯片程序暂存区A中每个数据帧传递的程序数据进行数据位加法,若所得结果均为0xFF,则判定程序数据正确。否则提示程序数据出错,设定标志位。
第一芯片对接收到的数据进行16位CRC校验,若计算结果与传递的CRC数据一致则判定该帧数据有效,写入第一芯片的ROM区域。
5)、若第一芯片程序更新完成,则更新对应的状态并将第一芯片程序暂存区A的程序数据复制到第一芯片程序备份区。
6)、若在程序更新过程发现程序暂存区数据出错,则将程序备份区的内容传递到对应的ROM区域。
5、更新第二芯片程序:
1)、第一芯片的OE管脚关闭,使能第二缓冲电路的OE管脚,此时外部Flash控制权由第二芯片管理。第二芯片通过输入监测单元检测第二芯片是否获得外部Flash控制权。
2)、获取第二芯片存储信息标记区的信息。
3)、擦除第二芯片的ROM中的数据。
4)、将Flash中第二芯片程序暂存区的数据传递到第二芯片的ROM区域。
传递过程中,将第二芯片程序暂存区A与第二芯片程序暂存区B的数据按照规则分成若干数据帧。
对同样的数据帧进行校验处理:一个数据帧传递的数据内容包含若干个字节。如图5所示,本例设定程序字节数为256字节,字节头使用0xA5和0x5A(即第一个字节与第二个字节为0xA5 0x5A),紧跟着为数据长度0xFF,最后为16位CRC检验码,对数据帧进行校验。
程序数据每帧校验:
对应到第二芯片程序暂存区B中每个数据帧传递的程序数据与0xFF进行异或操作,然后与第二芯片程序暂存区A中每个数据帧传递的程序数据进行数据位加法,若所得结果均为0xFF,则判定程序数据正确。否则提示程序数据出错,设定标志位。
第二芯片对接收到的数据进行16位CRC校验,若计算结果与传递的CRC数据一致则判定该帧数据有效,写入第二芯片的ROM区域。
5)、若第二芯片程序更新完成,则更新对应的状态并将第二芯片程序暂存区A的程序数据复制到第二芯片程序备份区。
6)、若在程序更新过程发现程序暂存区数据出错,则将程序备份区的内容传递到对应的ROM区域。
上述双芯片程序更新装置及双芯片程序更新方法中,适用于两个主控芯片和一个外扩Flash的情形,能够利用外扩Flash的非易失特性支持芯片程序的备份与安全升级,两个芯片均直接与外扩Flash进行数据读写,可以避免芯片间数据透传引入的时间延迟以及可能的数据传输解析错误。减少了一个外扩Flash,且整个更新装置的对外通讯端口只需一个。
上述实施例只为说明本发明的技术构思及特点,是一种优选的实施例,其目的在于熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限定本发明的保护范围。凡根据本发明的精神实质所作的等效变换或修饰,都应涵盖在本发明的保护范围之内。
Claims (8)
1.一种双芯片程序更新装置,包括:第一芯片、第二芯片及用于存储需要更新的程序数据的外扩存储器;其特征在于,所述双芯片程序更新装置还包括:
第一缓冲电路,其连接于所述第一芯片和所述外扩存储器之间;
第二缓冲电路,其连接于所述第二芯片和所述外扩存储器之间;
所述双芯片程序更新装置具有第一芯片更新状态和第二芯片更新状态,当所述双芯片程序更新装置在所述第一芯片更新状态时,所述第一芯片通过所述第一缓冲电路和所述外扩存储器连通以获取所述需要更新的程序数据,所述第二芯片和所述外扩存储器断开;当所述双芯片程序更新装置在所述第二芯片更新状态时,所述第二芯片通过所述第二缓冲电路和所述外扩存储器连通以获取所述需要更新的程序数据,所述第一芯片和所述外扩存储器断开;
所述双芯片程序更新装置还包括用于在所述第一芯片更新状态和所述第二芯片更新状态之间切换的非门电路;
所述第一芯片、所述第一缓冲电路和所述第二缓冲电路分别具有OE管脚,所述第一芯片的OE管脚连接于所述第一缓冲电路的OE管脚,所述非门电路连接于所述第一芯片的OE管脚和所述第二缓冲电路的OE管脚之间;
所述第一芯片、所述第二芯片及所述外扩存储器分别具有SPI接口,各所述SPI接口分别包括MISO连接端口、MOSI连接端口、CLK连接端口及Slave_Set连接端口;所述第一芯片的CLK连接端口和Slave_Set连接端口连接于所述第一缓冲电路,所述第二芯片的CLK连接端口和Slave_Set连接端口连接于所述第二缓冲电路,所述外扩存储器的CLK连接端口和Slave_Set连接端口均连接于所述第一缓冲电路和所述第二缓冲电路;所述第一芯片的MOSI连接端口和所述第二芯片的MOSI连接端口分别连接于所述外扩存储器的MOSI连接端口;所述外扩存储器的MISO连接端口分别连接于所述第一芯片的MISO连接端口和所述第二芯片的MISO连接端口。
2.根据权利要求1所述的双芯片程序更新装置,其特征在于:所述第一缓冲电路具有接所述第一芯片的A端口、连接所述外扩存储器的Y端口及用于切换控制所述A端口能否将数据传递到所述Y端口的OE管脚;所述第二缓冲电路具有接所述第二芯片的A端口、连接所述外扩存储器的Y端口及用于切换控制所述A端口能否将数据传递到所述Y端口的OE管脚。
3.根据权利要求1所述的双芯片程序更新装置,其特征在于:所述第一芯片具有用于连接外部数据传输模块以获取所述需要更新的程序数据的对外通讯接口;所述第二芯片具有输入监测单元,所述输入监测单元连接所述非门电路的输入端。
4.一种如权利要求1-3任一项所述的双芯片程序更新装置的双芯片程序更新方法,包括第一芯片更新步骤和第二芯片更新步骤,其特征在于,在执行所述第一芯片更新步骤时,所述第一芯片获得所述外扩存储器的控制权;在执行所述第二芯片更新步骤时,所述第二芯片获得所述外扩存储器的控制权。
5.根据权利要求4所述的双芯片程序更新方法,其特征在于,所述双芯片程序更新方法还包括需要更新的程序数据的获取及存储步骤,该获取及存储步骤具体包括:通过第一芯片获取外部传输的需要更新的程序数据,并将所述需要更新的程序数据传递到所述外扩存储器并存储到所述外扩存储器的相应区域;其中,所述外扩存储器具有第一芯片存储信息标记区、第一芯片程序暂存区、第一芯片程序备份区、第二芯片存储信息标记区、第二芯片程序暂存区及第二芯片程序备份区;当获得的所述需要更新的程序数据为第一芯片的程序,则存储在所述第一芯片程序暂存区,当获得的所述需要更新的程序数据为第二芯片的程序,则存储在所述第二芯片程序暂存区。
6.根据权利要求5所述的双芯片程序更新方法,其特征在于,所述第一芯片更新步骤具体如下:
S401、使能第一缓冲电路的OE管脚,使第一芯片获取外扩存储器的控制权;
S402、第一芯片获取外扩存储器的第一芯片存储信息标记区的信息;
S403、擦除第一芯片的ROM区域中的数据;
S404、将外扩存储器的第一芯片程序暂存区的数据传递到第一芯片的ROM区域;
S405、若第一芯片程序更新完成,则更新对应的状态并将第一芯片程序暂存区的数据复制到第一芯片程序备份区;
所述第二芯片更新步骤具体如下:
S501、使能第二缓冲电路的OE管脚,使第二芯片获取外扩存储器的控制权;
S502、第二芯片获取外扩存储器的第二芯片存储信息标记区的信息;
S503、擦除第二芯片的ROM区域中的数据;
S504、将外扩存储器的第二芯片程序暂存区的数据传递到第二芯片的ROM区域;
S505、若第二芯片程序更新完成,则更新对应的状态并将第二芯片程序暂存区的数据复制到第一芯片程序备份区。
7.根据权利要求5所述的双芯片程序更新方法,其特征在于,所述第一芯片程序暂存区包括第一芯片程序暂存区A和第一芯片程序暂存区B,所述第一芯片程序暂存区A和所述第一芯片程序暂存区B均存储有第一芯片的所述需要更新的程序数据;所述步骤S404的传递过程中,将所述第一芯片程序暂存区A和所述第一芯片程序暂存区B的数据分成若干数据帧,设定每个数据帧的数据长度和CRC检验码;对应到第一芯片程序暂存区B中每个数据帧传递的程序数据与所述数据长度进行异或操作,然后与第一芯片程序暂存区A中的每个数据帧传递的程序数据进行数据位加法,若所得结果均为所述数据长度,则判定程序数据正确;否则判定程序数据出错,设定标志位;第一芯片对接收到的数据进行CRC校验,若计算结果与传递的CRC检验码一致,则判定该帧数据有效,写入第一芯片的ROM区域;
所述第二芯片程序暂存区包括第二芯片程序暂存区A和第二芯片程序暂存区B,所述第二芯片程序暂存区A和所述第二芯片程序暂存区B均存储有第二芯片的所述需要更新的程序数据;所述步骤S504的传递过程中,将所述第二芯片程序暂存区A和所述第二芯片程序暂存区B的数据分成若干数据帧,设定每个数据帧的数据长度和CRC检验码;对应到第二芯片程序暂存区B中每个数据帧传递的程序数据与所述数据长度进行异或操作,然后与第二芯片程序暂存区A中的每个数据帧传递的程序数据进行数据位加法,若所得结果均为所述数据长度,则判定程序数据正确;否则判定程序数据出错,设定标志位;第二芯片对接收到的数据进行CRC校验,若计算结果与传递的CRC检验码一致,则判定该帧数据有效,写入第二芯片的ROM区域。
8.根据权利要求7所述的双芯片程序更新方法,其特征在于,所述数据帧的第三个字节为数据长度,最后16位字节为CRC检验码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910710725.2A CN110286935B (zh) | 2019-08-02 | 2019-08-02 | 一种双芯片程序更新装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910710725.2A CN110286935B (zh) | 2019-08-02 | 2019-08-02 | 一种双芯片程序更新装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110286935A CN110286935A (zh) | 2019-09-27 |
CN110286935B true CN110286935B (zh) | 2024-03-26 |
Family
ID=68024749
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910710725.2A Active CN110286935B (zh) | 2019-08-02 | 2019-08-02 | 一种双芯片程序更新装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110286935B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102567039A (zh) * | 2010-12-30 | 2012-07-11 | 上海三旗通信科技股份有限公司 | 一种双核终端的批量升级方法 |
CN109117205A (zh) * | 2018-07-23 | 2019-01-01 | 北京大恒图像视觉有限公司 | 一种基于mcu和fpga的双芯片加载方法 |
CN109358893A (zh) * | 2018-12-10 | 2019-02-19 | 武汉精立电子技术有限公司 | 一种fpga程序的在线升级方法、装置及系统 |
CN210052151U (zh) * | 2019-08-02 | 2020-02-11 | 爱士惟新能源技术(扬中)有限公司 | 一种双芯片程序更新装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10831641B2 (en) * | 2016-09-08 | 2020-11-10 | At&T Intellectual Property I, L.P. | Method and apparatus for determining a performance impact by a software upgrade of a mobile user endpoint device |
-
2019
- 2019-08-02 CN CN201910710725.2A patent/CN110286935B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102567039A (zh) * | 2010-12-30 | 2012-07-11 | 上海三旗通信科技股份有限公司 | 一种双核终端的批量升级方法 |
CN109117205A (zh) * | 2018-07-23 | 2019-01-01 | 北京大恒图像视觉有限公司 | 一种基于mcu和fpga的双芯片加载方法 |
CN109358893A (zh) * | 2018-12-10 | 2019-02-19 | 武汉精立电子技术有限公司 | 一种fpga程序的在线升级方法、装置及系统 |
CN210052151U (zh) * | 2019-08-02 | 2020-02-11 | 爱士惟新能源技术(扬中)有限公司 | 一种双芯片程序更新装置 |
Non-Patent Citations (1)
Title |
---|
一种卫星存储器纠错检错系统设计;向春清;谭培勇;;淮阴工学院学报(第03期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110286935A (zh) | 2019-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2019136595A1 (zh) | 处理i2c总线死锁的方法、电子设备和通信系统 | |
US9235546B2 (en) | System and method for data read of a synchronous serial interface NAND | |
US9798684B2 (en) | Bus communications with multi-device messaging | |
US8464020B2 (en) | Non-volatile storage device, host device, storage system, data communication method and program | |
US9423972B2 (en) | Error recovery in a data processing system which implements partial writes | |
US20160306593A1 (en) | Method for reading data from nonvolatile memory | |
JP6225431B2 (ja) | マイクロプログラムを更新可能な光トランシーバ | |
WO2010069045A1 (en) | Error detection method and a system including one or more memory devices | |
US9495178B2 (en) | Electronics apparatus able to revise micro-program and algorithm to revise micro-program | |
CN112148629A (zh) | 用于在总线上寻址集成电路的方法和对应设备 | |
US9367482B2 (en) | Systems and methods to extend ROM functionality | |
CN210052151U (zh) | 一种双芯片程序更新装置 | |
KR20080080799A (ko) | 메모리의 직렬 인터페이스 방법 및 장치 | |
CN110286935B (zh) | 一种双芯片程序更新装置及方法 | |
US20150237145A1 (en) | Information processing system and method | |
US11853736B2 (en) | Module, information processing device equipped with same, and method for updating program data to update program data in module | |
US6334165B1 (en) | Address type determination for an I2C EEPROM | |
US20200194844A1 (en) | Daisy-chain battery cells system with differential communication interfaces | |
US8074023B2 (en) | In-system programming to switch memory access from one area to another in memory cards | |
US20080082704A1 (en) | Data processing apparatus for data transmission and reception and data transfer method for data transfer system including the data processing apparatus | |
JP2001290764A (ja) | データ転送システム装置及びそのデータ転送方法 | |
US20230032989A1 (en) | Serial data communication with in-frame response | |
US20240212743A1 (en) | Integrated circuit memory devices with unidirectional ports for concurrent interface operations | |
CN112394964A (zh) | 一种多核芯片的程序更新方法及系统 | |
JP2008009521A (ja) | 携帯型電子装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |