CN101950256A - 一种嵌入式系统及嵌入式系统重新启动的方法 - Google Patents
一种嵌入式系统及嵌入式系统重新启动的方法 Download PDFInfo
- Publication number
- CN101950256A CN101950256A CN201010291015XA CN201010291015A CN101950256A CN 101950256 A CN101950256 A CN 101950256A CN 201010291015X A CN201010291015X A CN 201010291015XA CN 201010291015 A CN201010291015 A CN 201010291015A CN 101950256 A CN101950256 A CN 101950256A
- Authority
- CN
- China
- Prior art keywords
- read
- territory
- address
- write
- loading
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种嵌入式系统及嵌入式系统重新启动的方法。用于在无需硬件设备掉电或复位的情况下实现系统重新启动。首先获取系统映像文件的可读写域的加载时起始地址及该可读写域的加载时数据;再根据所述加载时起始地址将所述可读写域的系统代码数据写入内存,跳转指针到系统入口指令地址。本发明可由软件实现嵌入式系统的重新启动,无需硬件设备掉电或复位即可使系统从开始地址重新运行,节约了版本代码的搬移时间,重新启动速度快。
Description
技术领域
本发明涉及嵌入式系统技术领域,尤其涉及一种嵌入式系统及嵌入式系统重新启动的方法。
背景技术
目前,嵌入式系统多采用ARM处理器,ARM(Advanced RISC Machines,高级RISC微处理器)原本是一个公司的名字,现在也可认为是对一类微处理器的通称,还可以认为是一种技术名称,即ARM技术。在嵌入式系统死机后,通常在硬件掉电或复位后重新启动BOOT,然后再启动嵌入式系统版本。随着嵌入式系统的功能日益强大,代码量也越来越大,这就导致嵌入式系统的重新启动需要很长时间,造成用户的体验效果很差。
针对嵌入式系统,尤其是采用ARM处理器的嵌入式系统中如何提高重新启动的速度,减小重启等待时间就成为需要解决的技术问题。
发明内容
本发明所要解决的技术问题在于,提供一种嵌入式系统及嵌入式系统重新启动的方法,在无需硬件设备掉电或复位的情况下实现系统重新启动。
为了解决上述问题,本发明提出了一种嵌入式系统的重新启动的方法,包括:
获取系统映像文件的可读写域的加载时起始地址及该可读写域的加载时数据;
根据所述加载时起始地址将所述可读写域的系统代码数据写入内存,跳转指针到系统入口指令地址。
所述系统映像文件的可读写域的加载时起始地址及其整个地址范围,是位于内存中除系统映像文件的只读域的运行时地址范围之外的地址。
所述系统映像文件的可读写域的加载时数据是存储在固件存储器中;所述获取可读写域的加载时数据的步骤中,先根据所述加载时起始地址与固件存储器中地址的对应关系确定固件存储器中可读写域加载时数据的初始地址,并根据所述可读写域的加载时的域长度从所述固件存储器中读取获得可读写域的加载时数据。
所述可读写域的加载时的域长度是可读写域的运行时的域长度。所述获取的可读写域的加载时数据,存储在除去系统映像文件的可读写域、只读域、初始化为零的域之外的物理地址和逻辑地址一致的存储位置。
本发明还提供一种嵌入式系统,包括:
内存模块,用于加载及运行系统映像文件的可读写域和只读域;
固件存储模块,用于存储需加载的系统映像文件的可读写域的数据;
可读写域操作模块,用于从内存模块获取系统映像文件的可读写域的加载时起始地址及运行时的域长度,并从固件存储模块获取可读写域的加载时数据;
启动控制模块,用于根据所述加载时起始地址将所述可读写域的加载时数据写入内存模块,控制指针跳转至系统入口指令地址。
所述内存模块中,系统映像文件的可读写域的加载时起始地址及其整个地址范围,是位于内存中除系统映像文件的只读域的运行时地址范围之外的地址。
所述嵌入式系统进一步包括:可读写域的加载时数据存储单元,位于除去系统映像文件的可读写域、只读域、初始化为零的域之外的物理地址和逻辑地址一致的存储位置,用于存储所述获取的可读写域的加载时数据。
本发明可以由软件来实现嵌入式系统的重新启动,无需硬件设备掉电或复位即可使系统从开始地址重新运行,重新启动速度快。这样节约了版本代码的搬移时间,并且整个系统重新启动的过程不需要用户的附加操作,可以实现系统重启而不被用户察觉到。
附图说明
图1是映像文件移动的示意图;
图2是本发明实施例中实现系统重新运行的流程图;
图3是本发明实施例中可不掉电或复位实现重新启动的嵌入式系统示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,以下结合附图对本发明作进一步地详细说明。
目前嵌入式系统在重新启动时需要硬件设备掉电或复位,这就造成启动缓慢用户体验差的问题。本发明针对ARM系统,提出一种无需硬件设备掉电或复位而实现系统重新启动的技术方案,即在系统运行时,通过恢复系统代码的运行环境到加载时的初始状态,从而在不进行硬件掉电和复位的情况下实现系统的重新运行。
在采用ARM处理器的嵌入式系统中,ARM映像文件是一个层次性结构的文件,ARM映像文件中包括:域(region)、输出段(output section)和输入段(input section)。
输入段(input section)中包含了4类内容:代码、已经初始化的数据、未经初始化的存储区域、内容初始化成0的存储区域。每个输入段有相应的属性,可以为只读的(RO)、可读写的(RW)以及初始化成0的(ZI)。ARM连接器根据各输入段的属性将这些输入段分组,再组成不同的输出段以及域。
一个输出段(output section)中包含了一系列的具有相同的只读的(RO)、可读写的(RW)以及初始化成0的(ZI)属性的输入段。输出段的属性与其中包含的输入段的属性相同。在一个输出段内部,各输入段是按照一定的规则排序的。
一个域(region)中包含了多个输出段,其中各输出段的属性各不相同。各输出段的排列顺序是由其属性决定的。其中,RO属性的输出段排在最前面,其次是RW属性的输出段,最后是ZI属性的输出段。
同时,ARM映像文件的各组成部分在存储系统中的地址有两种:一种是在映像文件位于存储器中时的地址,也就是该映像文件开始运行之前的地址,称为加载时地址;另一种是在映像文件运行时的地址,称为运行时地址。之所以有这两种地址,是因为映像文件在运行时,其中的有些域可以移动到新的存储区域。如图1所示,显示了映像文件移动的示意图,其中,RO段的加载时地址和运行时地址是相同的,都是位于RAM的0x0地址处;RW段的加载时地址为RAM的0x300000地址处,RW段的运行时地址为RAM的0x500000地址处;ZI段在加载时还不存在,ZI段的运行时地址为RAM的0xA00000地址处。
同时,ARM连接器还定义了一些符号,在生成映像文件时,用它们来代表映像文件中各域的起始地址以及存储区域界限、各输出段的起始地址以及存储区域界限、各输入段的起始地址以及存储区域界限。比如,Load$$region_name$$Base代表域region_name加载时的起始地址;Image$$region_name$$Base代表域region_name运行时的起始地址。这些符号可以在代码中引用。
本发明的一种嵌入式系统的重新启动的方法,包括:获取系统映像文件的可读写域的加载时起始地址及该可读写域的加载时数据;根据所述加载时起始地址将所述可读写域的加载时数据写入内存,写入后调整指针到系统代码的入口指令地址。
所述系统映像文件的可读写域的加载时起始地址及其整个地址范围,位于内存中除系统映像文件的只读域的运行时地址范围之外的地址。
所述系统映像文件的可读写域的加载时数据是存储在固件存储器(例如FLASH存储器)中。
所述获取可读写域的加载时数据的步骤中,是根据所述加载时起始地址以及所述可读写域的运行时的域长度,从所述固件存储器中读取获得,获取数据时是根据加载时起始地址开始读取,所述加载时起始地址是个偏移地址,要加上镜像在固件存储器(flash)中的存储地址。具体地,可以通过符号Load$$ER_RW$$Base获得可读写域ER_RW的加载时起始地址;而可读写域的加载时的域长度因在加载时不能获得,可采用运行时的域长度代替,可以通过符号Image$$ER_RW$$Length获得可读写域ER_RW的运行时的域长度。
所述获取的可读写域的加载时数据,存储于除去系统映像文件的可读写域、只读域、初始化为零的域之外的物理地址和逻辑地址一致的存储位置。
以ARM系统为例,首先,需要把ARM系统映像文件恢复到加载初始状态,然后从系统代码的入口指令(通常是第一条指令)开始执行就实现了系统的重新启动。由于系统映像文件的各域的起始地址和长度可以通过ARM连接器符号获得,那么,只要保证ER_RW域(可读写域)的加载时地址不和ER_RO域(只读域)运行时的地址空间有重合,即位于内存中除ER_RO域(只读域)运行时的地址之外的地址,就可以加载初始ER_RW域数据到ER_RW域加载时起始地址,清除ER_ZI域(全0域)运行时地址空间的数据来恢复系统运行环境到加载初始状态。如果使用了地址映射配置文件,就使用该文件规定的各域的名称即可。
如图2所示,在ARM系统中,实现嵌入式系统重亲启动的处理流程包括:
步骤201:通过符号Load$$ER_RW$$Base获得ER_RW域的加载时起始地址并保存该加载时起始地址;
其中,该加载时起始地址不能保存在变量中,否则后面清除ER_RW域数据时会被清掉,可把该加载时起始地址保存在ER_RO、ER_RW和ER_ZI域以外的地址(比如ARM与DSP交互的双端口RAM中),这个地址的选择由硬件和操作系统决定;
步骤202:获得ER_RW域的长度,由于加载时ER_RW域的域长度无法获得,可以使用运行时的域长度代替加载时的域长度,可以通过符号Image$$ER_RW$$Length获得ER_RW域的运行时的域长度。
其中,运行时的域长度会大于加载时的域长度,按此长度多读出来的数据会被ER_ZI域覆盖或者并不使用,读出来的ER_RW域数据要放到除去ER_RW、ER_RO和ER_ZI运行域以外,并且物理地址和逻辑地址一致的位置,这个地址的选择由硬件和操作系统决定,比如可以是在操作系统中配置物理地址和逻辑地址一致的SDRAM地址;
步骤203:根据ER_RW域的加载时起始地址及ER_RW域的长度从固件存储器(FLASH存储器)获得加载时数据。
由于固件存储器存储有系统代码及初始数据,其中,初始数据中的加载时数据的地址可以采用与可读写域相同的地址,也可以采用具有一定对应关系的地址,这样在硬件掉电或复位重新启动加载时只要从初始地址按照加载长度获取对应的初始数据加载到可读写域即可。
反之,本发明中,可按照加载时初始地址与存储器中的对应关系,获得固件存储器中存储的可读写域的初始数据的初始地址,在确定固件存储器中的初始地址之后,再根据该域运行时的域长度,从固件存储器中读出ER RW域的数据即可。
其中,所读取出的数据不能使用ER_RW域中的变量保存,这是因为变量的值可能会在搬移代码的过程中被修改,而且搬移代码时可能需要关闭微处理器MMU,这与操作系统的配置相关;读出来的ER_RW域数据要放到除去ER_RW、ER_RO和ER_ZI运行域以外,并且物理地址和逻辑地址一致的位置,这个地址的选择由硬件和操作系统决定,比如可以是在操作系统中配置物理地址和逻辑地址一致的SDRAM地址。
步骤204:把读出的ER_RW域数据移到该域在内存(RAM)中的加载时的域地址;
步骤205:数据都搬移到指定的地址后,调整运行指针,跳转到系统代码的入口指令地址,例如可把程序计数器的值置为系统代码第一条指令(通常为入口指令)的地址;这样,由于已经完成了可读写域数据的初始化,此时再跳转到入口指令处执行,即实现了系统重新启动。相比现有技术,则省去了硬件掉电或复位时所需经历的BOOT启动过程。
如图3所示,还提供了一种嵌入式系统,可无需掉电或复位而实现重新启动,该嵌入式系统包括:
内存模块,用于加载及运行系统映像文件的可读写域和只读域;所述内存模块中加载时及运行时各个域的地址分配可参见图1所示的示意图。
固件存储模块,用于存储需加载的系统映像文件的可读写域的数据;
可读写域操作模块,用于从内存模块获取系统映像文件的可读写域的加载时起始地址及运行时的域长度,并从固件存储模块获取可读写域的加载时数据;
启动控制模块,用于根据所述加载时起始地址将所述可读写域的加载时数据写入内存模块,控制指针跳转至系统入口指令地址。
所述内存模块中,系统映像文件的可读写域的加载时起始地址及其整个地址范围,是位于内存中除系统映像文件的只读域的运行时地址范围之外的地址。
所述嵌入式系统进一步包括:可读写域的加载时数据存储单元,位于除去系统映像文件的可读写域、只读域、初始化为零的域之外的物理地址和逻辑地址一致的存储位置,用于存储所述获取的可读写域的加载时数据。
本发明的一种嵌入式系统及其重新运行的方法,无需硬件设备掉电或复位即可使系统从开始地址重新运行,这样节约了版本代码的搬移时间,并且整个系统重新启动的过程不需要用户的附加操作。可以实现系统重启而不被用户察觉到。
以上所述仅为本发明的实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
Claims (8)
1.一种嵌入式系统的重新启动的方法,包括:
获取系统映像文件的可读写域的加载时起始地址及该可读写域的加载时数据;
根据所述加载时起始地址将所述可读写域的系统代码数据写入内存,跳转指针到系统入口指令地址。
2.如权利要求1所述的方法,其特征在于,
所述系统映像文件的可读写域的加载时起始地址及其整个地址范围,是位于内存中除系统映像文件的只读域的运行时地址范围之外的地址。
3.如权利要求1所述的方法,其特征在于,
所述系统映像文件的可读写域的加载时数据是存储在固件存储器中;
所述获取可读写域的加载时数据的步骤中,先根据所述加载时起始地址与固件存储器中地址的对应关系确定固件存储器中可读写域加载时数据的初始地址,并根据所述可读写域的加载时的域长度从所述固件存储器中读取获得可读写域的加载时数据。
4.如权利要求3所述的方法,其特征在于,
所述可读写域的加载时的域长度是可读写域的运行时的域长度。
5.如权利要求3所述的方法,其特征在于,
所述获取的可读写域的加载时数据,存储在除去系统映像文件的可读写域、只读域、初始化为零的域之外的物理地址和逻辑地址一致的存储位置。
6.一种嵌入式系统,包括:
内存模块,用于加载及运行系统映像文件的可读写域和只读域;
固件存储模块,用于存储需加载的系统映像文件的可读写域的数据;
可读写域操作模块,用于从内存模块获取系统映像文件的可读写域的加载时起始地址及运行时的域长度,并从固件存储模块获取可读写域的加载时数据;
启动控制模块,用于根据所述加载时起始地址将所述可读写域的加载时数据写入内存模块,控制指针跳转至系统入口指令地址。
7.如权利要求6所述的嵌入式系统,其特征在于,
所述内存模块中,系统映像文件的可读写域的加载时起始地址及其整个地址范围,是位于内存中除系统映像文件的只读域的运行时地址范围之外的地址。
8.如权利要求6所述的嵌入式系统,其特征在于,所述嵌入式系统进一步包括:
可读写域的加载时数据存储单元,位于除去系统映像文件的可读写域、只读域、初始化为零的域之外的物理地址和逻辑地址一致的存储位置,用于存储所述获取的可读写域的加载时数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010291015XA CN101950256A (zh) | 2010-09-15 | 2010-09-15 | 一种嵌入式系统及嵌入式系统重新启动的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010291015XA CN101950256A (zh) | 2010-09-15 | 2010-09-15 | 一种嵌入式系统及嵌入式系统重新启动的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101950256A true CN101950256A (zh) | 2011-01-19 |
Family
ID=43453761
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010291015XA Pending CN101950256A (zh) | 2010-09-15 | 2010-09-15 | 一种嵌入式系统及嵌入式系统重新启动的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101950256A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104778066A (zh) * | 2015-04-21 | 2015-07-15 | 北京凌阳益辉科技有限公司 | 一种嵌入式操作系统的快速启动方法及其装置 |
CN107704282A (zh) * | 2017-09-15 | 2018-02-16 | 北京东土科技股份有限公司 | 一种应用于嵌入式系统的加载方法及装置 |
CN109284135A (zh) * | 2018-09-07 | 2019-01-29 | 深圳市航顺芯片技术研发有限公司 | 一种简捷调用微控制器内部启动程序的方法 |
TWI775578B (zh) * | 2021-04-30 | 2022-08-21 | 新加坡商瑞昱新加坡有限公司 | 嵌入式電子裝置、啟動方法及內儲程式之嵌入式電子裝置可讀取記錄媒體 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5581768A (en) * | 1995-02-27 | 1996-12-03 | Intel Corporation | Method and apparatus for executing applications in place from write once/seldom memories |
CN1786913A (zh) * | 2005-12-06 | 2006-06-14 | 海信集团有限公司 | 嵌入式设备系统动态引导的方法 |
-
2010
- 2010-09-15 CN CN201010291015XA patent/CN101950256A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5581768A (en) * | 1995-02-27 | 1996-12-03 | Intel Corporation | Method and apparatus for executing applications in place from write once/seldom memories |
CN1786913A (zh) * | 2005-12-06 | 2006-06-14 | 海信集团有限公司 | 嵌入式设备系统动态引导的方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104778066A (zh) * | 2015-04-21 | 2015-07-15 | 北京凌阳益辉科技有限公司 | 一种嵌入式操作系统的快速启动方法及其装置 |
CN104778066B (zh) * | 2015-04-21 | 2018-01-23 | 北京凌阳益辉科技有限公司 | 一种嵌入式操作系统的快速启动方法及其装置 |
CN107704282A (zh) * | 2017-09-15 | 2018-02-16 | 北京东土科技股份有限公司 | 一种应用于嵌入式系统的加载方法及装置 |
CN107704282B (zh) * | 2017-09-15 | 2021-02-02 | 北京东土科技股份有限公司 | 一种应用于嵌入式系统的加载方法及装置 |
CN109284135A (zh) * | 2018-09-07 | 2019-01-29 | 深圳市航顺芯片技术研发有限公司 | 一种简捷调用微控制器内部启动程序的方法 |
CN109284135B (zh) * | 2018-09-07 | 2022-02-01 | 深圳市航顺芯片技术研发有限公司 | 一种简捷调用微控制器内部启动程序的方法 |
TWI775578B (zh) * | 2021-04-30 | 2022-08-21 | 新加坡商瑞昱新加坡有限公司 | 嵌入式電子裝置、啟動方法及內儲程式之嵌入式電子裝置可讀取記錄媒體 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8949512B2 (en) | Trim token journaling | |
CN102508784B (zh) | 视频监控设备中闪存卡的数据存储方法及其系统 | |
CN107728937B (zh) | 一种使用非易失性内存介质的键值对持久存储方法及系统 | |
CN102693184B (zh) | 处理具有非易失性存储器的系统的动态和静态数据 | |
US20110055455A1 (en) | Incremental garbage collection for non-volatile memories | |
EP2765503B1 (en) | Method and electronic device of the file system prefetching and boot-up method | |
CN105242871A (zh) | 一种数据写入方法及装置 | |
CN102999431A (zh) | 用于非易失性存储器系统的编织序列计数器 | |
JPH03240127A (ja) | プログラム制御システム | |
US9720699B2 (en) | Efficient RAM usage in computing devices | |
CN103744694A (zh) | 基于Nand闪存的动态分区搜索装置及其方法 | |
CN103279406A (zh) | 一种内存的隔离方法和装置 | |
CN101950256A (zh) | 一种嵌入式系统及嵌入式系统重新启动的方法 | |
US11086636B2 (en) | Data storage device and method for operating non-volatile memory | |
CN100377086C (zh) | 嵌入式系统中直接从文件系统运行程序的实现方法 | |
CN107704200A (zh) | 一种数据存放方法 | |
CN103365926A (zh) | 在文件系统中用于保存快照的方法和装置 | |
CN104866388B (zh) | 数据处理方法及装置 | |
CN101727361B (zh) | 一种终端产品版本存储的方法与系统 | |
CN103473182B (zh) | 非挥发性存储器存取方法及非挥发性存储器控制器 | |
US10346234B2 (en) | Information processing system including physical memory, flag storage unit, recording device and saving device, information processing apparatus, information processing method, and computer-readable non-transitory storage medium | |
KR102388746B1 (ko) | 세이프 어드레스 매핑을 이용한 메모리 셀 액세스 제어 방법 | |
CN104572365A (zh) | 一种内存自适配方法及装置 | |
CN110347444A (zh) | 一种ssd多状态切换的启动方法及其系统 | |
US11182245B2 (en) | Operating method of memory controller, memory controller, and storage device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20110119 |