一种嵌入式设备程序更新方法
技术领域
本发明属于程序更新领域。具体涉及一种嵌入式设备中更新固件远程传输方法。
背景技术
随着技术的进步,嵌入式设备得到了广泛的应用。因为嵌入式固件的可编程特性,对于产品的更新换代提供了方便,特别是在生态环境远程监测领域的数字信号处理场合中,能否便于现场更新,是否能够灵活性使用更是作为一项关键因素。嵌入式设备中连接的服务器对子板块的高速设备进行控制,这个时候固件的配置一般利用ROM存储二进制文件然后上电自动加载,而更新二进制文件到配置ROM中利用专用更新线,速度非常慢,如果产品定型后,很不容易更新,一般要拆开产品再利用更新线进行更新,更新很不方便,而且不利于远程控制,人为的增加了产品的设计与制造成本。
因此,针对相关技术中所存在的上述问题,目前尚未提出有效的解决方案。
发明内容
为解决上述现有技术所存在的问题,本发明1.一种嵌入式设备程序更新方法,其特征在于,
服务器与嵌入式设备相连接,所述嵌入式设备包括通过专用电路接口连接的NAND FLASH;
服务器通过固件的烧写文件与NAND FLASH通信,并实现固件更新程序的远程传输;
固件烧写文件加载在功能程序中预先更新,在需要远程传输固件的更新程序时启动,与服务器连接实现固件更新程序的远程传输。
优选地,该方法进一步包括:
a)利用专用传输线传输固件烧写文件到NAND FLASH中;
b)需要更新固件程序的时候,启动服务器,把需要传输的更新程序放入服务器中;
c)服务器中计算出要该固件更新程序的大小,服务器把数据大小的值通过底层驱动发给固件,固件通过这个值来判断解锁与擦写的NAND FLASH存储空间;
d)控制底层驱动启动控制信号有效,通过底层驱动读出解锁状态;
e)擦写所需的NAND FLASH空间,直到所需存储空间都擦写;
f)发送配置数据;
g)读出正确的写数据状态,清除状态寄存器,判断是否达到数据大小的值,是则进入h),否则转回到f);
h)服务器进行CRC校验,然后判断是否校验完毕,若校验未完成则继续校验,若完成并且校验失败,则进入e),否则进入下一步;
i)服务器判断是否需要立即把NAND FLASH中远程传输的固件更新程序配置到固件中,若是则通过底层驱动发送相应的固件加载指令,立即加载固件的程序,否则无效启动控制信号直接结束远程传输。
优选地,所述的NAND FLASH的片选输出、锁存输出、读信号输出、写信号输出由固件烧写文件的控制信号程序模块产生,地址输出输出由固件烧写文件的整体控制程序模块产生,数据接口与NAND FLASH进行数据交互,启动控制信号启动配置信号,地址控制程序模块将由整体控制程序模块产生的上述输出按照NAND FLASH的接口时序要求送出。
优选地:所述的启动控制信号由服务器控制,启动有效后作为数据接口,传递需要更新的程序数据给固件,同时传递从NAND FLASH中读出的状态数据给服务器,该状态数据保护解锁完毕、擦写完毕、写数据成功、等待写数据状态码,服务器根据这些状态码进行下一步的操作。
本发明相比现有技术,具有以下优点:
充分结合了嵌入式设备产品在实际固件的使用,满足对设计的保密性和设计的更新便利性要求,为嵌入式设备的更新提供了一种可靠的途径,避免了因为拆装原因使得产品质量不能保证的情况,可以随时随地方便快捷的更新固件,提升产品性能,并且节省了通常远程配置所用的嵌入式CPU,节省了设计成本,降低了设计复杂度,有效减轻了设计的工作量。
附图说明
图1为本发明的嵌入式设备中固件远程更新方法的流程图
具体实施方式
下文与图示本发明原理的附图一起提供对本发明一个或者多个实施例的详细描述。结合这样的实施例描述本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求书限定,并且本发明涵盖诸多替代、修改和等同物。在下文描述中阐述诸多具体细节以便提供对本发明的透彻理解。出于示例的目的而提供这些细节,并且无这些具体细节中的一些或者所有细节也可以根据权利要求书实现本发明。
图1为本发明的嵌入式设备中固件远程更新方法的流程图。如图1所示,实施本发明的具体步骤如下:服务器与嵌入式设备的通信总线包括串口总线、PCI总线、ISA总线、所有能使得服务器与嵌入式设备进行数据通信的总线,NANDFLASH完成固件配置文件的存储功能,功能接口是有固件完成其算法处理与控制功能的接口,电是给整个系统提供满足需求。
在固件中先利用各个厂商提供的开发套件或专用开发套件开发出第一次更新所用的固件烧写文件,该固件烧写文件起配置作用的,在以后的设计代码中加入固件烧写文件的源代码利用固件开发软件生成二进制可更新文件则就可以在产品更新中进行和该固件烧写文件一样的重配置功能而不会影响固件的正常功能,这里对固件烧写文件进行分析其实就是对其源代码进行分析。
固件烧写文件包含服务器与固件的通信接口或者固件与其他固件(该固件与服务器相连)的接口、片选输出、锁存输出、读信号输出、写信号输出、地址输出、与NAND FLASH数据接口、启动控制信号、控制信号程序模块、地址控制程序模块、NAND FLASH数据控制模块、整体控制程序模块、输出数据程序模块、输入数据程序模块,服务器与固件的通信接口或者固件与其他固件(该固件与服务器相连)的接口是发送服务器给的配置数据给NAND FLASH数据控制模块,片选输出是输出由控制信号程序模块产生的NAND FLASH片选控制信号,锁存输出是输出由控制信号程序模块产生的NAND FLASH锁存控制信号,读信号输出是输出由控制信号程序模块产生的NAND FLASH读控制信号,写信号输出输出由控制信号程序模块产生的NAND FLASH写控制信号,地址输出输出由整体控制程序模块产生的与相应擦模块及与写数据对应的地址,与NAND FLASH数据接口把对NAND FLASH的数据进行读写,启动控制信号是由固件其他接口或者由服务器中的服务器发送的启动配置信号,地址控制程序模块把由整体控制程序模块产生的地址给NAND FLASH的程序结合数据按照NAND FLASH的时序要求送出。
上述的NAND FLASH一般选择Altera及其他第三方的平台FLASH,接口时序完全一样,只是名称不一样,时序控制按照嵌入式设备设计所选的NAND FLASH的时序接口要求设计。
只有当启动控制信号有效的时候,才会启动配置,由于用专用固件更新线一般采用同步模式,而NAND FLASH上电启动即为同步状态,所以必须为其配置为异步读写方式,否则无法进行操作,然后进行解锁,因为NAND FLASH内部分块的,可以根据需要更新程序需要的大小进行内部存储块的解锁,此时需要地址控制程序模块对地址接口输入存储块地址,解锁完毕后,进行擦写处理,即只擦刚才解锁的存储块,没有解锁的块无法擦写,擦写也是需要地址的,所有的块擦写完毕后即可对其进行固件的更新程序数据更新了,此时通过NAND FLASH数据控制模块把数据都写入NAND FLASH中即可,写入完毕后通过CRC进行数据校验,检验完毕并正确即可结束更新程序的更新,否则,需要重新更新。
判断擦写成功以及是否写成功都是靠读该存储块的状态寄存器的值来判断的,如果读出的状态寄存器错误,则需要从新读取,而且每次在重新读取状态寄存器的时候都要清除状态寄存器,否则所读的值还是与上次的状态寄存器一样。
产生所述的固件烧写文件的程序是VHDL代码或者verilogHDL代码,这些代码在附在所用实际程序里作为一个模块即可为下次的程序更新做出接口。
读数据程序可以用来读取NAND FLASH的数据,读取写状态、擦写状态等,要进行数据读取的都可以用该程序。
所述的启动控制信号由服务器及外部人为控制,服务器接口种类比较多,在设计的时候需要进行串并转换等,在固件中,与服务器接口是数据接口与控制接口,控制接口是启动控制信号,启动有效后就可以作为数据接口,传递固件程序数据给固件以及把固件从NAND FLASH中读出的状态转换成服务器能够操作的简单状态通过这些即可传递给服务器,这些简单状态如解锁完毕、擦写完毕、写数据成功、等待写数据等状态,这些传输给服务器的状态都用0和1编码表示,这些编码表示的状态传递给服务器,服务器根据这些状态码进行下一步的操作。
在本发明中,人机交互层、逻辑控制层、控制与算法层、底层驱动层组成了服务器端的配置,人机交互界面用来进行固件程序更新远程传输指令的启动与配置状态的显示,逻辑控制层与控制与算法层实现与底层驱动的通信,并控制底层驱动向固件接口发送相应指令以及数据,同时还接收相关的更新状态。
需要进行更新固件更新程序时,人为操作人机交互界面,然后人机交互界面利用服务器中计算出所要更新的程序的大小,通过利用把这个数据大小的值通过底层驱动发给固件,固件通过这个值来判断需要解锁与擦写的NAND FLASH存储空间的大小,然后再控制底层驱动给固件发送更新程序更新的启动命令,即使得启动控制信号有效,然后通过底层驱动读出解锁状态,直到第一次发送对应数据大小的NAND FLASH的空间都被解锁后,继续读取擦写状态,直到所需存储空间都擦写,然后发送固件的数据,发送配置数据,发送一次配置数据后就需要读一次写状态,读到写状态后要利用判断是否发送数据完毕,若不是则继续发送、读写状态、判断是否发送完毕,若是则进入数据校验,数据校验利用服务器中进行CRC校验,然后利用判断是否校验完毕,若没有完毕则根据实际情况进行操作,即校验未完成则继续校验,若完成但是失败则需要重新进行一次更新,若校验完毕则需要根据服务器中的操作选项判断是否需要立即把NAND FLASH中刚更新的程序配置到固件中,若是则利用通过底层驱动发送相应的固件加载指令即可,然后进行相应的功能操作,若不需要理解加载固件的程序,则直接结束,等待以后断电重启后这次更新的固件的程序文件会自动从NANDFLASH中加载。
服务器的人机交互界面具有板卡的选择,配置中由于整个嵌入式设备与这些板卡的通信有不同接口,所以具有接口选择,同时由于一张板卡具有一个固件以上,所以针对实际中嵌入式设备的需求,设计了两个固件,根据程序的需求,设计立即配置等选项,为嵌入式设备中的所有固件配置提供了方便。
综上所述,本发明在满足嵌入式设备中固件可远程配置的基础上,能够完成加密等功能,为产品的后续程序更新换代提供了新的更新方法,大大提升了更新固件所需要的时间,使得设计尽量简洁,同时降低了成本。
显然,本领域的技术人员应该理解,上述的本发明的各模块或各步骤可以用通用的计算系统来实现,它们可以集中在单个的计算系统上,或者分布在多个计算系统所组成的网络上,可选地,它们可以用计算系统可执行的程序代码来实现,从而,可以将它们存储在存储系统中由计算系统来执行。这样,本发明不限制于任何特定的硬件和软件结合。
应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的限制。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。