利索能及
我要发布
收藏
专利号: 2009103000924
申请人: 杭州海康威视数字技术股份有限公司
专利类型:发明专利
专利状态:已下证
更新日期:2026-05-14
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种嵌入式系统固件在线升级方法,其特征在于,包括以下步骤:(1)嵌入式系统固件包含一非易失性存储器;

(2)非易失性存储器分为分区A和分区B两个分区;分区A代码采用二进制的文件格式,按地址进行访问;分区B采用linux支持的、nor flash上应用较多的jffs2文件格式;

(3)分区A用于存放bootloader和简化操作系统tiny_os软件程序;

a、所述bootloader包括初始化加载模块和升级模块;

b、所述简化操作系统tiny_os提供tcp/ip协议栈以及文件系统的读写支持;

(4)分区B用于存放根文件系统和系统软件,其中

a、根文件系统包括动态链接库、升级脚本,升级脚本至少包括正常启动代码和升级代码B;

b、系统软件包括嵌入式操作系统和应用软件;

(5)初始化设置:

a、分区A设置为保护分区,对该分区置于硬件保护和软件保护;

b、分区B设置为只读分区,该分区中的嵌入式操作系统设置为只读文件;

(6)实现在线升级:

a、嵌入式系统上电,运行分区A中的bootloader,完成硬件的初始化;

b、检测是否有升级请求,若有,则进入步骤c,如无升级请求进入步骤f;

c、检测根文件系统代码是否正确,若正确则进入步骤d,否则进入步骤e;

d、运行分区A中bootloader的构造内核参数代码来构造升级的内核参数并加载tiny_os;运行分区B中的根文件系统的升级脚本,并根据内核参数运行软件升级代码B,接受用户输入的升级参数,与升级服务器进行通信,并通过指定协议下载升级文件到flash,升级完毕回到步骤a;

e、启用备用的升级方法:运行分区A中的软件升级代码A,接受用户输入的升级参数,与升级服务器进行通信并通过指定的下载协议下载升级文件,运行分区A中的文件系统格式转化代码将升级文件转换为系统软件所需的文件系统格式后写入flash;如果jffs2分区内容遭到意外的破坏,则继续在分区A运行u-boot中提供的的备用升级代码,使用tftp协议将升级包下载至内存,并通过文件系统转换代码转换成jffs2格式,再写入flash,完成升级;升级完毕后返回到步骤a; f、启动系统软件的嵌入式操作系统,进行正常工作模式。

2.根据权利要求1所述的一种嵌入式系统固件在线升级方法,其特征在于,所述分区A中的bootloader的初始化加载模块进一步包括: a、系统初始化代码;

b、升级检测代码;

c、构造内核参数代码;

分区A中的bootloader的升级模块进一步包括:a、软件升级代码A;

b、文件系统格式转化代码。

3.根据权利要求2所述的一种嵌入式系统固件在线升级方法,其特征在于,所述升级检测代码包括检测设备终端是否有升级请求的代码和检测分区B中根文件系统是否是正确的代码,并且支持分区B所采用的文件系统的读操作。

4.根据权利要求2所述的一种嵌入式系统固件在线升级方法,其特征在于,所述文件系统格式转化代码是将下载的升级文件的格式转换成分区B所支持的文件系统格式。

5.根据权利要求1或2所述的一种嵌入式系统固件在线升级方法,其特征在于,所述构造内核参数代码根据是否有升级请求构造不同的内核参数,并加载tiny_os,以便根文件系统的升级脚本能够根据所需选择运行相应的软件升级代码。

6.根据权利要求1所述的一种嵌入式系统固件在线升级方法,其特征在于,所述根文件系统为tiny_os和系统软件所共用:a、根文件系统中升级脚本的软件升级代码B,为使用tiny_os进行升级所需的程序;

b、根文件系统中的动态链接库,为tiny_os和系统软件所需的程序;

c、根文件系统中的升级脚本的启动代码,为系统软件所需的程序。

7.根据权利要求1或6所述的一种嵌入式系统固件在线升级方法,其特征在于,所述的软件升级代码B为采用脚本编写的程序,当需要采用新的网络传输协议进行升级时,只需修改该软件升级代码B的部分内容和增加相应的下载命令,即可实现升级。

8.根据权利要求1或2所述的一种嵌入式系统固件在线升级方法,其特征在于,所述分区A和分区B的设置是通过以下方法实现:分区A设置为保护分区,是在bootloader的初始化代码部分将该分区设置为硬件保护和软件保护的分区;

分区B设置为只读分区,是在系统软件的嵌入式操作系统中将该分区设置为只读分区。

9.根据权利要求1所述的一种嵌入式系统固件在线升级方法,其特征在于,所述的备用的升级方法的启用是按照下述判断而确定:如果分区A中的升级检测代码检测到分区B中的根文件系统正确,则启动tiny_os,选择升级脚本中的升级代码B进行升级,否则启用备用的升级方法,选择分区A中的软件升级代码A进行升级。