一种双芯片程序更新装置的制作方法

文档序号:19890288发布日期:2020-02-11 10:44阅读:154来源:国知局
一种双芯片程序更新装置的制作方法

本实用新型属于嵌入式系统技术领域,涉及一种双芯片程序更新装置。



背景技术:

为了存储运行数据或可靠升级程序,嵌入式平台中一般会使用外扩flash作为非易失性存储设备。通用型平台中包含一个主控芯片和一个外扩flash,有的也会扩展并口外扩sdram。常用的方案是一个主控芯片与一个外扩flash进行数据交互或者程序升级。图1示出了现有技术中的一种常规的外扩flash使用方式,在该系统中,若芯片2若需要升级程序,则需要通过芯片1读取外扩flash3的数据然后再传递给芯片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管脚。

在一些实施例中,所述第一芯片具有用于连接外部数据传输模块以获取所述需要更新的程序数据的对外通讯接口。

在一些实施例中,所述第二芯片具有输入监测单元,所述输入监测单元连接所述非门电路的输入端。输入监测单元主要用于检测第一芯片与第二芯片当前对外扩存储器的工作状态。

本实用新型采用以上方案,相比现有技术具有如下优点:

本实用新型的双芯片程序更新装置中,能够利用外扩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及用于存储需要更新的程序数据的外扩存储器,外扩存储器具体为外扩flash3。该双芯片程序更新装置还包括:第一缓冲电路4,其连接于所述第一芯片1和所述外扩flash3之间;第二缓冲电路5,其连接于所述第二芯片2和所述外扩flash3之间。所述双芯片程序更新装置具有第一芯片更新状态和第二芯片更新状态。当所述双芯片程序更新装置在所述第一芯片更新状态时,所述第一芯片1通过所述第一缓冲电路4和所述外扩flash3连通以获取所述需要更新的程序数据,所述第二芯片2和所述外扩存储器断开;当所述双芯片程序更新装置在第二芯片更新状态时,所述第二芯片2通过所述第二缓冲电路5和所述外扩flash3连通以获取所述需要更新的程序数据,所述第一芯片1和所述外扩flash3断开。所述双芯片程序更新装置进一步包括用于在所述第一芯片更新状态和所述第二芯片更新状态之间切换的非门电路。能够利用外扩flash的非易失特性支持芯片程序的备份与安全升级,两个芯片均直接与外扩flash进行数据读写,可以避免芯片间数据透传引入的时间延迟以及可能的数据传输解析错误。

本实施例中,第一芯片1及第二芯片2为微控制器、数字处理器、单片机中的一种,其具有spi接口(串行外设接口,serialperipheralinterface);外扩flash3,是一种非易失性存储器,断电时数据不会丢失,本实施例中使用的是包含spi接口的外扩flash3;第一缓冲电路4和第二缓冲电路5由逻辑控制ic实现,用于决定是第一芯片1与外扩flash3通讯,还是第二芯片2与外扩flash3通讯,具体通过oe管脚来控制数据是否可从其ax端口传递到yx端口;非门电路具体为非门ic6,通过非门ic6控制第一芯片1与第二芯片2不能同时连接外扩flash3。

所述第一芯片1、所述第一缓冲电路4和所述第二缓冲电路5分别具有一个oe管脚。所述第一芯片1的oe管脚15连接于所述第一缓冲电路4的oe管脚41,所述非门ic6连接于所述第一芯片1的oe管脚15和所述第二缓冲电路5的oe管脚51之间。具体地,非门ic6的输入端连接至第一芯片1的oe管脚15,输出端连接至第二缓冲电路5的oe管脚51。第一芯片1上的oe管脚15主要是指第一芯片1的一个通用io管脚,可以稳定输出高低电平,第一缓冲电路4和第二缓冲电路5是否导通ax与yx的连接由其自身的oe管脚处电平决定。缓冲电路又称buffer,有的缓冲电路是低电平表示buffer开通,也有的是高电平表示buffer开通;本实施例第一缓冲电路4和第二缓冲电路5使用的是相同规格功能的buffer。非门ic6的主要功能是将送至第一缓冲电路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及外扩flash3分别具有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,外扩flash3具有miso连接端口31、mosi连接端口32、clk连接端口33及slave_set连接端口34。第一芯片1的mosi连接端口12和第二芯片2的mosi连接端口22分别连接于外扩flash3的mosi连接端口32;外扩flash3的miso连接端口31分别连接于第一芯片1的miso连接端口11和第二芯片2的miso连接端口21。利用逻辑控制ic仅连接芯片与外扩flash的clk管脚和slave_set管脚,能够减少逻辑控制ic的使用,降低通讯线路的延迟。

第一缓冲电路4具有连接第一芯片1的a端口、连接外扩flash3的y端口及用于切换控制a端口能否将数据传递到y端口的oe管脚41。第一缓冲电路4中,a端口包括a1端口和a2端口,y端口包括y1端口和y2端口。第一芯片1的clk连接端口13和slave_set连接端口14分别连接于第一缓冲电路4的a1端口和a2端口,外扩flash3的clk连接端口33和slave_set连接端口34分别连接于第一缓冲电路4的y1端口和y2端口。

第二缓冲电路5具有连接第二芯片2的a端口、连接外扩flash3的y端口及用于切换控制a端口能否将数据传递到y端口的oe管脚51。第二缓冲电路5中,a端口包括a1端口和a2端口,y端口包括y1端口和y2端口。第二芯片2的clk连接端口23和slave_set连接端口24分别连接于第二缓冲电路5的a1端口和a2端口,外扩flash3的clk连接端口33和slave_set连接端口34分别连接于第二缓冲电路5的y1端口和y2端口。

第一芯片1还具有用于连接外部数据传输模块7的对外通讯接口16。该对外通讯接口16具体为ethernet接口、rs422接口、rs485接口中的一种。外部数据传输模块7是有线传输模块或无线传输模块,如wifi或gprs装置。

第二芯片2还具有输入监测单元25,其是第二芯片2的其中一个管脚,输入监测单元25连接非门ic6的输入端,用于检测第二芯片2是否获取外扩flash3的控制权。输入监测单元主要用于检测第一芯片1与第二芯片2当前对外扩flash3的工作状态。若输入监测单元25第一芯片1的oe管脚15输出高电平,则第二芯片2通过该输入监测单元25可以知道当前是第一芯片1在与外扩flash3通信;当输入监测单元25检测到低电平,则表明第一芯片1当前未与外扩flash3工作,第二芯片2可以与外扩flash3进行数据读写。

外扩flash3主要包括全局管理信息区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(即第一个字节与第二个字节为0xa50x5a),紧跟着为数据长度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(即第一个字节与第二个字节为0xa50x5a),紧跟着为数据长度0xff,最后为16位crc检验码,对数据帧进行校验。

程序数据每帧校验:

对应到第二芯片程序暂存区b中每个数据帧传递的程序数据与0xff进行异或操作,然后与第二芯片程序暂存区a中每个数据帧传递的程序数据进行数据位加法,若所得结果均为0xff,则判定程序数据正确。否则提示程序数据出错,设定标志位。

第二芯片对接收到的数据进行16位crc校验,若计算结果与传递的crc数据一致则判定该帧数据有效,写入第二芯片的rom区域。

5)、若第二芯片程序更新完成,则更新对应的状态并将第二芯片程序暂存区a的程序数据复制到第二芯片程序备份区。

6)、若在程序更新过程发现程序暂存区数据出错,则将程序备份区的内容传递到对应的rom区域。

上述双芯片程序更新装置及双芯片程序更新方法中,适用于两个主控芯片和一个外扩flash的情形,能够利用外扩flash的非易失特性支持芯片程序的备份与安全升级,两个芯片均直接与外扩flash进行数据读写,可以避免芯片间数据透传引入的时间延迟以及可能的数据传输解析错误。减少了一个外扩flash,且整个更新装置的对外通讯端口只需一个。

上述实施例只为说明本实用新型的技术构思及特点,是一种优选的实施例,其目的在于熟悉此项技术的人士能够了解本实用新型的内容并据以实施,并不能以此限定本实用新型的保护范围。凡根据本实用新型的精神实质所作的等效变换或修饰,都应涵盖在本实用新型的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1