嵌入式系统及其程序更新方法

文档序号:6423285阅读:185来源:国知局
专利名称:嵌入式系统及其程序更新方法
嵌入式系统及其程序更新方法
技术领域
本发明关于一种嵌入式系统及其程序更新方法,尤其涉及一种不需额外设置记忆单元而可直接更新程序的嵌入式系统和其程序更新方法。
背景技术
嵌入式系统运作所需的韧体程序数据一般会刻录在非挥发的储存单元当中,例如快闪只读存储器(Flash ROM),并附随着硬件装置释出。当系统因运作所需而欲执行其中部分程序时,由处理器将相关程序的映像从储存单元读取到主存储器后,转换为可执行的程序代码加以执行。程序数据一旦刻录在储存单元中并随着嵌入式系统硬件一起释出后,一般的用户 无法自行对系统中的韧体程序进行修改。然而,当嵌入式系统释出后,为了修补程序中的缺陷、或为提供新增的服务或功能,制造者或研发者经常会提供新版本的程序映像(image),用以供嵌入式系统进行程序的更新或升级。为更新新版本的程序映像到嵌入式系统,目前通用的作法是在嵌入式系统的主板上额外设置一个随机存取记忆体(RAM),在嵌入式系统启动后,经由开机程序(bootloader)的引导,将所下载的新版本映像先送到随机存取记忆体中,再从随机存取记忆体将新版本的映像一次写入储存单元以取代旧版本的数据。若要使嵌入式系统支持上述的更新作法,必须在制造采用嵌入式系统的产品时,就预先在主板上保留设置记忆体的位置,并且因此项额外设置的记忆体而提高制造成本。是以,寻求一种可更新程序且不造成成本负担的嵌入式系统,为研发或制造者长久以来关注的焦点。

发明内容本发明的目的为提供一种可更新程序的嵌入式系统,以及其程序更新方法,利用若干个开机程序分别更新自身以外的其他开机程序映像的手段,达到不需额外设置用来暂存更新内容的记忆体,即可完成对嵌入式系统的韧体程序更新的效果。根据本发明的一种方案,提供一种嵌入式系统程序更新方法,所述的嵌入式系统包括若干储存区块一对一地储存若干程序的映像,其中一个实施例包括嵌入式系统执行若干程序中的一第一开机程序,并接收主机所发出用以指示更新第一开机程序的一更新命令;接着,嵌入式系统切换为执行若干程序中第一开机程序以外的一第二开机程序,并于执行该第二开机程序时接收该主机发出的一更新映像,以及将更新映像写入储存第一开机程序的映像的储存区块,以更新该第一开机程序。本发明还提供另一种嵌入式系统程序更新方法,所述的嵌入式系统包括若干储存区块一对一地储存若干程序的映像,其中一个实施例包括嵌入式系统执行若干程序中的一第一开机程序,并接收主机发出的一控制命令,所述的控制命令指示更新若干程序中的一第二开机程序;根据控制命令再接收主机发出的一控制映像,并写入储存第二开机程序的映像的储存区块,以更新第二开机程序;嵌入式系统切换为执行更新后的第二开机程序;并于执行更新后的第二开机程序时接收主机发出的一更新映像,并写入储存第一开机程序的映像的储存区块,以更新第一开机程序。根据本发明的另一方案,还提供一种嵌入式系统,可连接一主机以更新程序,包括一储存单元及一处理单元。其中,储存单元包括若干储存区块,所述的若干储存区块一对一储存若干程序的映像;而处理单元则用以执行若干程序当中的一第一开机程序,并且于嵌入系统准备更新第一开机程序时,切换为执行若干程序中的一第二开机程序。当处理单元执行第二开机程序时,接收由主机传送的一更新映像到嵌入式系统,并将更新映像写入储存第一开机程序的映像的储存区块,以更新第一开机程序。上述嵌入式系统以及其程序更新方法的详细内容及其他特点,请进一步配合图式参考以下的实施方式说明。

图I :本发明所提供的一种嵌入式系统实施例的方块图;图2 :本发明所提供的储存单元数据结构示意图;图3 :本发明所提供的一种嵌入式系统程序更新方法实施例的流程图;图4 :本发明所提供的另一种嵌入式系统程序更新方法实施例的流程图。图中I.嵌入式系统,10.处理单元,12.储存单元,120.第一开机程序映像,122.第二开机程序映像,124.应用程序映像,125.开机位址,126.中断指标,127.第一中断向量表,128.第二中断向量表,14.主记忆单元,16.序列通讯单元,2.主机,20主机序列通讯单元,S301-S319流程步骤,S401-S423流程步骤。
具体实施方式图I为本发明所提供的一种嵌入式系统实施例的方块图。嵌入式系统I包括一处理单元10、一储存单元12、一主记忆单元14及一序列通讯单元16。储存单元12画分为若干个储存区块,用以一对一地储存若干程序映像文件,本实施例中包括一第一开机程序映像120、一第二开机程序映像122及一应用程序映像124。嵌入式系统I与一主机2分别透过序列通讯单元16及主机2的主机序列通讯单元20连接,二者藉由序列通讯界面传递命令及用于更新储存单元12中数据的程序映像。嵌入式系统I的处理单元10可为一数字信号处理器(DSP)或一微控制器(microcontroller);储存单元12则为非挥发性的存储元件如闪存(包括Nand_Flash、Nor-Flash)或各类只读存储器;主记忆单元14为一挥发性的随机存取记忆体;序列通讯单元16则可为通用串行总线(USB)接口或通用异步收发传输器(UART)接口。嵌入式系统I启动时,处理单元10用以将储存单元12中所储存的一开机程序映像(boot loader image),载入主记忆单元14并转换为可执行的开机程序代码,用以对嵌入式系统I初始化以建立核心系统程序运行的环境。嵌入式系统I可在处理单元10执行一开机程序时接收主机2准备更新开机程序映像的命令,本例的嵌入式系统I预设执行的开机程序以第一开机程序为 例。当处理单元10将第一开机程序映像120载入主记忆单元12而执行第一开机程序时,主机2可透过由主机序列通讯单元20及序列通讯单元16所建构的序列通讯界面,发送更新命令到嵌入式系统1,由处理单元10接收;更新命令用以指示嵌入式系统I进行第一开机程序映像120的更新。特别说明,图I所示的主机2仅绘示出用以连接嵌入式系统I的主机序列通讯单元20,但本领域的具通常知识的人士皆可知主机2还包括运算处理元件、记忆或储存元件,以及视主机2的运作需要而设置的其他控制元件,图I省略上述各元件,仅为彰显与本发明相关的特点。由于嵌入式系统I正在执行第一开机程序映像120所转换的第一开机程序,无法对储存第一开机程序映像120的储存区块同时进行读取及写入的动作,因此,本实施例所采取的手段,控制嵌入式系统I执行将被更新的第一开机程序映像120以外的其他开机程序,亦即控制处理单元10切换为载入第二开机程序映像122并执行第二开机程序。切换的 手段请一并参照图2所示的储存单元数据结构示意图。储存单元12除了以多个储存区块分别储存第一开机程序映像120、第二开机程序映像122及应用程序映像124之外,还可能在其他的储存区块分别储存各种不同功能的程序映像。此外,储存单元12还在特定的储存区段分别记录一开机位址125、一中断指标126,以及一第一中断向量表127与一第二中断向量表128。其中,第一中断向量表127对应到第一开机程序,而第二中断向量表128则对应到第二开机程序。开机位址125记录储存第一开机程序映像120的储存区块的起始位址、或记录储存第二开机程序映像122的储存区块的起始位址,用以供处理单元10在嵌入式系统I 一旦启动后,根据开机位址125的指示,前往相对应的储存区块读取指定的开机程序映像进行加载。中断指标126则记录第一中断向量表127或第二中断向量表128的位址,用以指示处理单元10接收到中断(interrupt)时所应对照的中断向量表。由于预设执行的开机程序为第一开机程序,因此开机位址125预设后记录的即为储存第一开始程序映像120的储存区块的起始位址;而中断指标126亦对应到第一中断向量表127 (即记录第一中断向量表127的起始位址)。当要切换执行第二开机程序时,处理单元10控制将开机位址125中的记录变更为储存第二开机程序映像的储存区块的起始位址;同时,亦将中断指标126变更为对应到第二中断向量表128。接着再重新启动嵌入式系统1,使处理单元10根据开机位址125的记录将第二开机程序映像122载入主记忆单元14,并转换为可执行的第二开机程序。同时,处理单元10亦会透过序列通讯界面,向主机2通知有关嵌入式系统I正在执行第二开机程序的状态。当主机2获得嵌入式系统I已进入执行第二开机程序的状态后,即可以序列的方式,中断第二开机程序的运作,开始传送用以更新第一开机程序映像的更新映像。处理单元10接收到更新映像时,即可根据更新映像所附带的信息对照第二中断向量表128,以获取对应此一中断活动的中断常式(routine),并执行所述的中断常式以将更新映像写入(即刻录)储存单元12中用以储存原本的第一开机程序映像120的储存区块。此时因嵌入式系统I并非读取第一开机程序映像120或执行第一开机程序,因此处理单元10即可顺利将更新映像写入正确的储存区块,以完成更新第一开机程序映像120的程序。藉此,下次嵌入式系统I载入的第一开机程序映像即为更新后的第一开机程序映像。为了使嵌入式系统I再度重启后可载入及执行更新的第一开机程序,当上述的更新工作完成后,处理单元10可再将开机位址125及中断指标126切换回对应更新后的第一开机程序的储存区块以及第一中断向量表127。在另一个实施例中,本发明所述的嵌入式系统I不仅可指定更新其中一个程序映像,更可交替互相进行更新。继续以图I为例来说,当处理单元10执行默认的第一开机程序时,可接收主机2透过序列通讯界面所传输的一控制命令以及一控制映像,所述控制命令指示更新第二开机程序映像122,并且以控制映像取代原本的第一开机程序映像120。处理单元10接收控制命令后可向主机2通知嵌入式系统I目前为执行第一开机程序的状态,并开始透过序列通讯界面接收控制映像。处理单元10可根据控制映像的资料,比对第一开机程序所对应的第一中断向量表127 (参照图2),以执行一中断常式而将控制映像写入储存第二开机程序映像的储存区块,藉此以控制映像取代原本的第二开机程序映像,而成为更新的第二开机程序映像。待第二开机程序映像更新完成后,处理单元10可控制将开机位址125变更为对应到储存更新的第二开机程序映像的储存区块,以及将中断指标126变更为对应到第二中断向量表128,并重新启动嵌入式系统I。待嵌入式系统I重新启动后,处理单元10即会根据开机位址125的指示,载入及执行已更新过的第二开机程序。经由通知主机2关于嵌入式系统I目前执行第二开机程序的状态后,即可再继续进行接收更新命令及更新映像以更新第一开机程序映像120的工作。以更新映像取代原本的第一开机程序映像120,以做为更新的第一开机程序映像的详细内容,请参照前一实施例的说明,相同的处即不再重述。值得一提的是,不论是在执行第一开机程序或是在执行第二开机程序时,除了可接收主机2发出的命令与数据更新自身以外的开机程序映像之外,更可一并接收其他的映像数据,更新储存在其他储存区块的程序。例如当处理单元10执行第二开机程序时,除了接收用以指示更新第一开机程序映像120的更新命令、及用以取代原本的第一开机程序映像120的更新映像之外,还可接收用以指示更新应用程序映像124的更新应用程序命令,并透过序列通讯界面接收一更新应用程序映像,写入储存应用程序映像124的储存区块,藉此达成更新应用程序映像124的工作。图3显示了本发明的嵌入式系统程序更新方法一实施例的流程图,请同时参照图I以利说明。在本实施例中,启动后的嵌入式系统I由处理单元10根据开机位址125 (参见图2)的指示,载入及执行数个开机程序的其中之一,在本例中为第一开机程序(S301)。主机2可透过主机序列通讯单元20及序列通讯单元16传送一更新命令到嵌入式系统1,用以指示嵌入式系统I更新储存单元12所储存的第一开机程序映像120(S303)。由于处理单元10无法对储存第一开机程序映像120的储存区块同时进行读取和写入的动作,因此处理单元10可将开机位址125的内容变更为指示到储存第二开机程序映像122的储存区块,以及将中断指标126从指示对应第一开机程序的第一中断向量表127变更为指示对应第二开机程序的第二中断向量表128后(S305),再重新启动嵌入式系统 I (S307),藉以使处理单元10载入第二开机程序映像122到主记忆单元14,并执行第二开机程序(S309)。处理单元10可透过序列通讯界面通知与嵌入式系统I连接的主机2,使主机2侦知嵌入式系统I已处于执行第二开机程序的状态(S311),而非执行第一开机程序。接着,主机2即可开始透过序列通讯界面连续传输更新映像的位元数据(S313),处理单元10根据中断指标126的指示,利用更新映像的数据比对第二中断向量表128,以获得一适当的中断常式(S315),例如一写入常式,再执行所述的中断常式将更新映像的位元数据依序写入储存第一开机程序映像120的储存区块(S317),直到更新映像完全被写入储存区块而取代原本的第一开机程序映像120。当映像数据更新完毕后 ,处理单元10可更进一步再将开机位址124变更回指示到更新后的第一开机程序映像所在的储存区块,以及将中断指标126再度指示为对应第一中断向量表127(S319),以便嵌入式系统I再次重启后,可载入及执行更新过的第一开机程序。图4则显示本发明所提供的嵌入式系统程序更新方法另一实施例的流程图,亦请一并参照图I所示的方块图以利说明。本实施例与图3所示实施例的不同处,在于上一实施例说明了在多个程序映像中更新其中一个映像的一种手段;而本实施例则说明透过一连串的流程,可将储存单元12所储存的若干程序映像皆进行更新的程序。启动后的嵌入式系统I由处理单元10根据开机位址125(参见图2)的指示,载入及执行数个开机程序中的第一开机程序(S401)。主机2根据嵌入式系统I的运作状态,发送一控制命令,用以指示更新第一开机程序映像120以外的第二开机程序映像122(S403),接着即透过序列通讯界面开始传送一控制映像的位元数据(S405),所述的控制映像即用以取代储存单元12中原有的第二开机程序映像122,以作为更新的第二开机程序映像。处理单元10接收到主机2发送的位元数据后,即根据中断指标126 (参阅图2)所指示的内容,对照第一中断向量表127以获得对应的中断常式,并执行该中断常式以便将控制映像的位元数据依序写入储存第二开机程序映像122的储存区块,以作为更新的第二开机程序映像(S407)。待第二开机程序映像更新完成,处理单元10接着将开机位址125对应到储存更新的第二开机程序映像的储存区块,并且将中断指标126也变更为指示与更新的第二开机程序对应的第二中断向量表128 (S409),以利后续的更新。接着重新启动嵌入式系统I (S411),使处理单元10根据开机位址125的指示,将更新的第二开机程序映像载入主记忆单元13,以执行第二开机程序(S413)。处理单元10接着通知主机2嵌入式系统I为执行第二开机程序的状态(S415),使主机2开始透过序列通讯界面开机传送用以更新第一开机程序映像120的一更新映像的位元数据,以及用以更新应用程序映像124的一更新应用程序映像的位元数据(S417)。处理单元10接收来自主机2的数据时,依照中断指标126的指示,自第二中断向量表128获得相对应的中断常式(S419),再执行所述的中断常式将更新映像与更新应用程序映像分别写入储存原本的第一开机程序映像120与原本的应用程序映像124的储存区块(S421),以完成对第一开机程序及应用程序的更新。为了便于使嵌入式系统I再度重启时可执行更新的第一开机程序,处理单元10可在更新映像写入储存区块完成后,再将开机位址125变更为指示储存更新的第一开机程序映像的储存区块,以及将中断指标126变更为对应到更新的第一开机程序映像的第一中断向量表 127(S423)。综合上述各实施例的说明,本发明已揭示一种可直接在嵌入式系统的非挥发性储存单元进行更新的程序更新手段,克服了习知将开机程序映像释出到嵌入式系统后即无法加以更新、或是必须额外在嵌入式系统设置另一记忆单元才能间接将更新的数据写入储存单元的问题。本发明的手段利用多个开机程序相互为自身以外的其他程序映像进行更新,仅需在主机传达的命令中提供必要的信息,即可控制每一开机程序引导嵌入式系统更新一或多个不同程序映像的更新作业,不但节省额外设置硬件的成本,同时还具有提升系统更新效率的效果。上述各实施例当中的元件及步骤,仅为阐述本发明所举的例示,并无自限所请求保护的范围的意图,凡遵循本发明的精神及根据本发明所揭示的技术手段,而进行微幅的·修饰或改变者,也属本发明所保护的范畴。
权利要求
1.一种嵌入式系统程序更新方法,该嵌入式系统包括若干储存区块,这些储存区块一对一储存若干程序的映像,其特征在于该方法包括 该嵌入式系统执行这些程序中的一第一开机程序; 接收一主机发出的一更新命令,该更新命令用以指示更新该第一开机程序; 该嵌入式系统切换为执行这些程序中该第一开机程序以外的一第二开机程序;及该嵌入式系统于执行该第二开机程序时接收该主机发出的一更新映像,并将该更新映像写入储存该第一开机程序的映像的该储存区块,以更新该第一开机程序。
2.如权利要求I所述的嵌入式系统程序更新方法,其特征在于更包括 在该嵌入式系统切换为执行该第二开机程序的步骤前,将该嵌入式系统的一开机位址指向储存该第二开机程序的映像的该储存区块,以及将一中断指标指向该第二开机程序所对应的一第二中断向量表;及 在接收该更新映像以更新该第一开机程序的步骤前,通知该主机关于该嵌入式系统所执行的该程序为该第二开机程序; 其中,该嵌入式系统切换为执行该第二开机程序的步骤中包括重新启动该嵌入式系统,及根据该开机位址读取该第二开机程序的映像以执行该第二开机程序; 其中,接收该更新映像以更新该第一开机程序的步骤中包括根据所接收的该更新映像对照该第二中断向量表,以获取对应的中断常式,以及执行中断常式以将该更新映像写入储存该第一开机程序的映像的该储存区块。
3.如权利要求2所述的嵌入式系统程序更新方法,其特征在于,更新该第一开机程序的步骤后,更包括 将该开机位址指向储存更新后的该第一开机程序的该储存区块,以及将该中断指标指向更新后的该第一开机程序所对应的一第一中断向量表。
4.一种嵌入式系统程序更新方法,该嵌入式系统包括若干储存区块,这些储存区块一对一储存若干程序的映像,其特征在于该方法包括 该嵌入式系统执行这些程序中的一第一开机程序; 接收一主机发出的一控制命令,该控制命令用以指示更新这些程序中的一第二开机程序; 根据该控制命令接收该主机发出的一控制映像,并写入储存该第二开机程序的映像的该储存区块,以更新该第二开机程序; 该嵌入式系统切换为执行更新后的该第二开机程序;及 该嵌入式系统于执行更新后的该第二开机程序时,接收该主机发出的一更新映像,并写入储存该第一开机程序的映像的该储存区块,以更新该第一开机程序。
5.如权利要求4所述的嵌入式系统程序更新方法,其特征在于更包括 在该嵌入式系统切换为执行该第二开机程序的步骤前,将该嵌入式系统的一开机位址指向储存该第二开机程序的映像的该储存区块,以及将一中断指标指向该第二开机程序所对应的一第二中断向量表;及 在更新该第一开机程序的步骤后,将该开机位址指向储存更新后的该第一开机程序的映像的该储存区块,以及将该中断指标指向更新后的该第一开机程序所对应的一第一中断向量表;其中,该嵌入式系统切换为执行该第二开机程序的步骤中包括重新启动该嵌入式系统,以及根据该开机位址读取该第二开机程序的映像以执行该第二开机程序; 其中,该第二开机程序接收该更新映像以更新该第一开机程序的步骤中包括根据所接收的该更新映像对照该第二中断向量表,以获取对应的中断常式,以及执行中断常式以将该更新映像写入储存该第一开机程序的映像的该储存区块。
6.如权利要求4所述的嵌入式系统程序更新方法,其特征在于,该嵌入式系统切换为执行该第二开机程序的步骤后,更包括 通知该主机关于该嵌入式系统所执行的该程序为该第二开机程序。
7.如权利要求6所述的嵌入式系统程序更新方法,其特征在于,通知该主机关于该嵌入式系统所执行的该程序为该第二开机程序的步骤后,更包括 接收该主机发出的一应用程序更新映像,并写入储存该第一开机程序及该第二开机程序的映像以外的一或多个这些储存区块,以更新相对应的这些程序。
8.一种嵌入式系统,可连接一主机以更新程序,其特征在于其包括 一储存单元,包括若干储存区块及记录一开机位址,这些储存区块一对一储存若干程序的映像; 一处理单元,用以执行这些程序当中的一第一开机程序,并且于该嵌入系统准备更新该第一开机程序的映像时,将该开机位址指向储存一第二开机程序的映像的该储存区块,并重新启动该嵌入式系统,以切换为执行这些程序中的该第二开机程序 '及 一序列通讯单元,连接该主机及该处理单元; 其中,该处理单元于执行该第二开机程序时,透过该序列通讯单元接收由该主机所传送的一更新映像,并将该更新映像写入储存该第一开机程序的映像的该储存区块,以更新该第一开机程序。
9.如权利要求8所述的嵌入式系统,其特征在于,该储存单元更包括一中断指标,以及对应该第二开机程序的一第二中断向量表,当该嵌入式系统执行该第二开机程序时,该中断指标指向该第二中断向量表,该处理单元根据所接收的该更新映像对照该第二中断向量表,以获取对应的中断常式,并执行中断常式以将该更新映像写入储存该第一开机程序的映像的该储存区块,以更新该第一开机程序。
10.如权利要求8所述的嵌入式系统,其特征在于,该储存单元更包括对应该第一开机程序的一第一中断向量表,当该嵌入式系统执行该第一开机程序时,该处理单元接收该主机发出的一控制命令,该控制命令用以指示更新该第二开机程序,以及接收一控制映像,并根据该控制映像对照该第一中断向量表,以获取应对的中断常式,并执行对应的中断常式将该控制映像写入储存该第二开机程序的映像的该储存区块,以更新该第二开机程序。
全文摘要
一种嵌入式系统程序更新方法,所述的嵌入式系统包括若干储存区块一对一地储存若干程序的映像,所述方法包括嵌入式系统执行若干程序中的一第一开机程序,并接收主机发出的一控制命令,所述的控制命令用以指示更新若干程序中的一第二开机程序;根据控制命令再接收主机发出的一控制映像,并写入储存第二开机程序的映像的储存区块,以更新第二开机程序;嵌入式系统切换为执行更新后的第二开机程序;并于执行更新后的第二开机程序时接收主机发出的一更新映像,并写入储存第一开机程序的映像的储存区块,以更新第一开机程序。
文档编号G06F9/445GK102760065SQ201110108908
公开日2012年10月31日 申请日期2011年4月29日 优先权日2011年4月29日
发明者吴宗谚 申请人:昆达电脑科技(昆山)有限公司, 神达电脑股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1