一种用于嵌入式系统的软件修复和升级方法

文档序号:6574809阅读:357来源:国知局
专利名称:一种用于嵌入式系统的软件修复和升级方法
技术领域
本发明涉及嵌入式系统领域,尤其涉及用于嵌入式系统的软件修复和升级方法。
背景技术
随着硬件设计和制造技术的快速发展,嵌入式系统已经被广泛应用于工业、通讯、家电等各个领域。同时,随着功能的不断增强,嵌入式系统的体系结构也越来越复杂。嵌入式系统已经从最初仅由单片机和简单的程序代码组成发展到了包含功能强大的处理器、丰富的外部设备接口和复杂的操作系统。为了满足用户的需求,目前大多数面向个人消费群体的嵌入式系统,如手机,数码相机等都包含扩展/移动存储器接口。目前市场上主流的扩展/够动存储器接口和设备有CF(Compact Flash,紧凑型闪存)卡、MMC(MultiMedia Card,多媒体卡)、SD(Secure Digital,安全数字)卡以及能够满足更小体积要求的Mini SD卡、Trans Flash卡等。此外,某些嵌入式系统还有具有蓝牙、USB、红外等扩展/移动存储器接口。
但是,随着嵌入式系统的复杂度不断加大,对嵌入式系统的开发和产品的维修带来了诸多问题。由于大多数嵌入式系统包含复杂的操作系统和应用软件,所以在嵌入式系统软件的开发过程中难免会出现一些问题,厂商通常需要通过升级来修复这些问题,而且软件的开发也需要在产品上市后通过升级不断补充和完善。此外,用户在使用嵌入式产品的过程中也会因为硬件或操作不当等原因造成操作系统等核心软件被破坏,使得产品无法使用。
嵌入式系统通常都是在上电启动时,由BOOTLOADER(引导加载程序)从ROM(Read Only Memory,只读存储器)中读取包含嵌入式系统程序的镜像文件,并加载到RAM(Random Access Memory,随机存取存储器)中运行。因此,对嵌入式产品软件的升级和修复通常就是对ROM中的镜像文件进行重写和修复。
通常,对嵌入式产品的软件升级和修复都是由专业维修人员通过计算机上专用的PST(Product Support Tools)软件和数据线与嵌入式产品相连,进行嵌入式软件的升级或修复。因此需要设置专门的维修网点和人员从事产品的售后服务,这给嵌入式产品生产厂商带来了极大的负担。对于规模较小的厂商,很难在产品上市的所有地区设置专业的售后部门,部分用户的产品无法得到及时的修复,最终造成了对用户利益的极大损害。

发明内容
本发明所要解决的技术问题是,克服现有技术中嵌入式系统软件升级和修复方法的不足,提出一种不需要额外的维修设备,通过嵌入式系统自带的扩展/移动存储器接口和相应的存储设备对嵌入式系统的软件进行升级和修复的方法。
为了解决上述问题,本发明提供一种用于嵌入式系统的软件修复和升级方法,应用于具有可与包含存储介质的扩展/移动存储器相连的存储接口的嵌入式系统;该方法包含以下步骤a)调用扩展/移动存储器驱动,初始化存储接口和存储器,获取存储介质控制信息;b)调用文件系统,获取存储介质文件系统信息;c)调用ROM驱动,初始化ROM访问接口;d)根据上述存储介质控制信息、存储介质文件系统信息,通过扩展/移动存储器驱动读取存储介质中保存的嵌入式系统镜像文件,并将其通过ROM访问接口写入ROM中。
此外,所述步骤a)之前还包含如下步骤a1)获取调用模式;所述调用模式为第一调用模式,引导加载程序调用;第二调用模式,错误处理程序调用;和第三调用模式,输入设备事件处理程序调用中的一种。
此外,所述步骤a1)与a)之间还包含如下步骤a2)对ROM中的镜像文件的完整性进行检查,若镜像文件完整且为第一调用模式,则本方法结束。
此外,在所述步骤d)之前还包含如下步骤d1)调用显示驱动,初始化嵌入式系统的显示/输出设备;d2)调用输入设备驱动,初始化嵌入式系统的输入设备;d3)通过上述显示/输出设备和输入设备选择并输入修复/升级操作所需的指示信息。
此外,所述步骤c)和d)之间还包含步骤屏蔽系统中断和消息。
此外,所述步骤d)之后还包含步骤重新启动嵌入式系统。
此外,该方法还包含如下步骤定时复位看门狗,以防其产生系统复位信号。
本发明通过使用扩展/移动存储设备,以快捷方便的方式对嵌入式系统的软件进行升级和修复,降低了产品出现故障时用户对厂商的依赖程度,减少了厂商的售后负担,增加了用户对产品的信心,提高了用户的满意度。


图1是实现本发明软件修复和升级方法的软件修复模块的结构框图;图2是本发明用于嵌入式系统的软件修复和升级方法的流程图。
具体实施例方式
对于具有扩展/移动存储设备接口的嵌入式系统,当软件出现故障甚至系统无法启动时,可以通过修复程序将相应存储设备上的系统镜像文件读出,并重新写入到ROM中,覆盖原先的版本,实现软件的升级和修复。
通常系统镜像文件中包含嵌入式系统程序,即与嵌入式系统硬件一起完成嵌入式产品功能的程序。系统镜像文件是通过将多个包含代码的程序源文件和资源文件编译在一起生成的。由于上述修复程序在对嵌入式系统进行升级和修复时也需要与嵌入式系统程序的某些模块进行交互,例如调用特定的函数、传递参数等,因此也需要将其与嵌入式系统程序编译在一起。以下所述系统镜像文件包含嵌入式系统程序和本发明的修复程序。
本发明的修复程序可在以下三种情况下被调用一、在ROM中保存的系统镜像文件损坏,嵌入式系统无法正常启动时,由BOOTLOADER调用;由上所述,本发明的修复程序可以与嵌入式系统程序编译在一起,因此,只要通过特定的链接定义选项将其编译在BOOTLOADER可以调用的、系统镜像文件的特定位置(通常为文件的开始部分),本发明的修复程序就可以在上电后嵌入式操作系统启动前被BOOTLOADER首先调用。在这种情况下,由于包含嵌入式操作系统和嵌入式应用程序的嵌入式系统程序尚未启动,所以本发明的修复程序可以独占嵌入式CPU的时间片,在不被干扰的情况下完成修复或升级。
二、在嵌入式系统软件出现致命错误时,由错误处理程序调用;这种情况需要修改嵌入式系统的错误处理程序,以便在出现致命错误,无法通过正常方式进行处理时调用本发明的修复程序。
三、在嵌入式系统软件正常工作时,由输入设备事件处理程序调用;通常嵌入式系统都有输入设备,如键盘、触摸屏等。对输入设备引发的事件,如用户按键等,有专门的输入设备事件处理程序进行处理。因此,只需设置专门的组合键,使对该组合键的处理程序调用本发明的修复程序即可。
此外,为了进一步增强系统的可靠性,使本发明的修复程序能被正常调用,一般将其保存在ROM中不易损坏的位置。对于每一款ROM产品,为了保证BOOTLOADER等程序能正常运行,通常存在若干不易损坏的BLOCK(块),通过适当的编译选项,可将本发明的修复程序与BOOTLOADER保存在这些不易损坏的块中。
下面将结合附图和实施例对本发明进行详细的描述。
图1是实现本发明软件修复和升级方法的软件修复程序的结构框图;如图1所示,实现本发明软件修复和升级方法的软件修复程序包含ROM驱动,用于对嵌入式系统的ROM进行初始化和读写操作。
存储器驱动,用于对嵌入式系统的扩展/移动存储器进行初始化和读写操作。
存储器文件系统,用于对扩展/移动存储器中保存的文件进行存取等操作。
核心驱动,用于对系统时钟,IO接口,RAM等硬件进行访问和控制。
显示驱动,用于对嵌入式系统的显示装置进行初始化和控制,以实现菜单、文字和图形的显示功能。
输入设备驱动,用于对嵌入式系统的键盘等输入设备进行初始化和控制,使用户实现菜单选择,字符输入等功能。
主程序模块,用于调用ROM驱动、存储器驱动、存储器文件系统、核心驱动、显示驱动和输入设备驱动对嵌入式系统硬件进行初始化操作,并通过ROM驱动、存储器驱动和存储器文件系统将系统镜像文件从扩展/移动存储设备中读出,并写入ROM,完成软件修复/升级。
上述包含ROM驱动、存储器驱动、核心驱动、显示驱动、输入设备驱动的驱动模块以及存储器文件系统所完成的功能与嵌入式系统正常工作时相应的驱动完成的功能一样,但是在嵌入式系统无法正常启动或出现致命错误时嵌入式系统程序本身的上述驱动和文件系统模块可能无法正常被调用,或不能正常工作,所以需要将其包含在本发明的修复程序中。
图2是本发明用于嵌入式系统的软件修复和升级方法的流程图。如图2所示,本发明的软件修复和升级方法包含如下步骤步骤101获取程序的调用模式。
如上所述,本发明的修复程序可在三种情况下被调用,分别对应了本发明的修复程序的三种调用模式系统无法启动、系统出现致命错误和系统正常运行。由于在这三种调用模式下,本发明的修复程序进行不同的修复/升级操作,所以需要判断当前程序所属的调用模式。对调用模式的判断仅需由调用方BOOTLOADER、错误处理程序或输入设备事件处理程序在调用修复程序时传入不同的参数,本发明的修复程序即可根据该参数判断当前的调用模式。当然也可以通过读取操作系统状态位来获知当前软硬件系统的状态,进而获知当前程序的运行状态和调用模式。
步骤102若当前为第一种调用模式,需要对镜像文件进行完整性检查,若镜像文件完整,则退出本程序,否则执行下一步。
由于包含操作系统及其它嵌入式应用程序的可执行文件和实现本发明的修复程序的镜像文件都保存在ROM中,可能被损坏,从而导致系统无法正常启动,所以需要对镜像文件的完整性进行检查。
在将镜像文件写入ROM时通常需要计算该镜像文件的初始CRC(Cyclical Redundancy Check,循环冗余检验)并将其同时写入ROM。因此,镜像文件的完整性检查就是通过重新计算ROM中保存的镜像文件的CRC,并将其与ROM中保存的初始CRC进行比较,若比较的结果不相同,则说明镜像文件被损坏。
对于第二种和第三种调用模式,也可以进行镜像文件的完整性检查,并保存检查的结果。
步骤103调用显示驱动模块,对显示/输出设备进行初始化。
为了使用户能对软件修复和升级操作进行选择,并使用户获知当前修复或升级操作的状态/进度,需要在嵌入式输出设备上以文字、菜单或图形方式显示信息。
对于第一种调用模式,由于当前操作系统尚未启动,需要对显示/输出设备进行初始化;对于第二种和第三种调用模式,也可以对显示/输出设备重新进行初始化操作,以确保程序的正确运行。
步骤104调用输入设备驱动模块,初始化输入设备。
同上,如果软件的修复和升级操作需要用户输入信息,那么对于第一种调用模式必须进行此操作,对于第二和第三种调用模式,此操作为可选。
步骤105调用存储器驱动,初始化扩展/移动存储器;如发现存储器中没有存储卡,则显示信息提示用户插入存储卡,并在用户点击确定后继续尝试初始化存储卡。如初始化成功,则读取存储器最大容量,磁头数,磁道扇区数,设备名,串行码(卷标)等存储卡控制信息。
步骤106调用存储器文件系统,读取MBR(Master Boot Record,主引导记录),BPB(BIOS Parameter Block,基本输入输出系统参数块,也称作启动扇区),存储卡文件分区信息,根目录表等文件系统信息。
步骤107调用嵌入式系统ROM驱动,初始化ROM的访问接口。
步骤108提示用户选择需要升级或修复的嵌入式系统软件模块。
用户可通过输入和输出/显示设备选择并输入指示信息,例如,当嵌入式系统软件包含多个镜像文件时,可以由用户选择对其中的一个或多个文件进行修复/升级操作。
步骤109屏蔽系统中断和消息。
对于第二种和第三种调用模式,为了避免系统中其它进程/线程以及消息的干扰,在修复/升级操作进行过程中,需要禁止系统中的可屏蔽中断,并禁止各种用户和系统消息。
步骤110根据上述存储卡控制信息和文件系统信息,从存储卡中读取镜像文件,并写入嵌入式系统的ROM中,同时显示升级或修复操作的进度或其它状态信息。
步骤111完成后续操作。
对于第一种调用模式,在修复/升级操作完成后,退出修复程序,将系统控制权交还给BOOTLOADER,由其完成后续的系统启动过程。对于第二和第三种调用模式,则可由用户选择重新启动系统或退出本程序。
除上述操作外,若系统中还有看门狗,则还需定时复位看门狗,以防看门狗定时器溢出,产生系统复位信号。
下面以在高通MSM6500平台上的一款CDMA手机上实现的软件修复程序为例,对本发明作进一步描述。
此CDMA手机的嵌入式硬件环境如下·外部/扩展存储器为TransFlash卡座,可支持现有的16MB到2GB的各种容量的TransFlash的存储卡;·主处理器为ARM926EJ-S的处理器,主频是146.7648MHz,总线速度是二分频73.3824MHz,具有内置的MMC/SD存储卡控制器,可以兼容TransFlash卡,存储卡接口时钟由总线时钟分频获得,为10MHz;·ROM为SAMSUNG的128MB NAND FLASH存储器;·LCD采用EPSON驱动芯片的2英寸TFT显示屏。
此手机的嵌入式软件环境如下·操作系统采用高通的REX操作系统,自身文件系统是EFS(EmbeddedFile System,嵌入式文件系统);·TransFlash存储卡是FAT16文件系统;·镜像文件包含三部分BOOTLOADER,主程序镜像,EFS。
由于手机的文件系统是EFS,与存储卡的FAT16文件系统不兼容,所以需要一个转换程序。高通提供了一个SFAT任务来完成EFS与FAT16之间的转换。因此,当手机在正常运行状态时,本发明的修复程序可使用SFAT任务和EFS文件系统访问TransFlash存储卡,在手机出现致命错误或无法正常启动时,可通过自身的FAT16文件系统访问TransFlash存储卡。
经过测试,在上述CDMA手机上采用本发明的修复软件进行软件升级或修复的成功率100%。并且采用本发明的修复和升级方法进行升级或修复的速度要远高于通过USB线连接的计算机侧PST软件的升级或修复速度,如表1所示。

由上可知,采用本发明的方法进行软件的修复和升级不仅提高了速度,用户还可以通过网络等方式获得更新软件,方便了用户,减轻了厂商的售后负担。
权利要求
1.一种用于嵌入式系统的软件修复和升级方法,应用于具有可与包含存储介质的扩展/移动存储器相连的存储接口的嵌入式系统;该方法包含以下步骤a)调用扩展/移动存储器驱动,初始化存储接口和存储器,获取存储介质控制信息;b)调用文件系统,获取存储介质文件系统信息;c)调用ROM驱动,初始化ROM访问接口;d)根据上述存储介质控制信息、存储介质文件系统信息,通过扩展/移动存储器驱动读取存储介质中保存的嵌入式系统镜像文件,并将其通过ROM访问接口写入ROM中。
2.如权利要求1所述的用于嵌入式系统的软件修复和升级方法,其特征在于,所述步骤a)之前还包含如下步骤a1)获取调用模式;所述调用模式为第一调用模式,引导加载程序调用;第二调用模式,错误处理程序调用;和第三调用模式,输入设备事件处理程序调用中的一种。
3.如权利要求2所述的用于嵌入式系统的软件修复和升级方法,其特征在于,所述步骤a1)与a)之间还包含如下步骤a2)对ROM中的镜像文件的完整性进行检查,若镜像文件完整且为第一调用模式,则本方法结束。
4.如权利要求1所述的用于嵌入式系统的软件修复和升级方法,其特征在于,在所述步骤d)之前还包含如下步骤d1)调用显示驱动,初始化嵌入式系统的显示/输出设备;d2)调用输入设备驱动,初始化嵌入式系统的输入设备;d3)通过上述显示/输出设备和输入设备选择并输入修复/升级操作所需的指示信息。
5.如权利要求1所述的用于嵌入式系统的软件修复和升级方法,其特征在于,所述步骤c)和d)之间还包含步骤屏蔽系统中断和消息。
6.如权利要求2所述的用于嵌入式系统的软件修复和升级方法,其特征在于,所述步骤d)之后还包含步骤重新启动嵌入式系统。
7.如权利要求1所述的用于嵌入式系统的软件修复和升级方法,其特征在于,该方法还包含如下步骤定时复位看门狗,以防其产生系统复位信号。
全文摘要
一种用于嵌入式系统的软件修复和升级方法,应用于具有可与包含存储介质的扩展/移动存储器相连的存储接口的嵌入式系统;该方法包含以下步骤调用扩展/移动存储器驱动,初始化存储接口和存储器,获取存储介质控制信息;调用文件系统,获取存储介质文件系统信息;调用ROM驱动,初始化ROM访问接口;根据上述存储介质控制信息、存储介质文件系统信息,通过扩展/移动存储器驱动读取存储介质中保存的嵌入式系统镜像文件,并将其通过ROM访问接口写入ROM中。本发明通过使用扩展/移动存储设备,以快捷方便的方式对嵌入式系统的软件进行升级和修复,降低了产品出现故障时用户对厂商的依赖程度,减少了厂商的售后负担。
文档编号G06F11/14GK101021797SQ20071009084
公开日2007年8月22日 申请日期2007年4月6日 优先权日2007年4月6日
发明者陈岩 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1