CN101030148A - 实现重映射的方法、装置 - Google Patents
实现重映射的方法、装置 Download PDFInfo
- Publication number
- CN101030148A CN101030148A CN 200710087319 CN200710087319A CN101030148A CN 101030148 A CN101030148 A CN 101030148A CN 200710087319 CN200710087319 CN 200710087319 CN 200710087319 A CN200710087319 A CN 200710087319A CN 101030148 A CN101030148 A CN 101030148A
- Authority
- CN
- China
- Prior art keywords
- address
- code
- nonvolatile memory
- ram
- memory
- 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
本发明涉及计算机技术领域,本发明实施例公开了一种实现重映射的方法、装置,本发明实施例方法包括:将存储有启动代码的非易失性存储器中的待执行代码以及地址低于所述待执行代码的代码,按其在所述非易失性存储器中的存储顺序复制至已初始化的随机存取内存RAM;将所述非易失性存储器的地址让予所述RAM,其中所述非易失性存储器的地址为零地址。本发明实施例技术方案提高了中断异常处理速度,并避免程序跑飞的问题。
Description
技术领域
本发明涉及计算机技术领域,特别的涉及一种实现重映射的方法、装置。
背景技术
随着微电子技术的蓬勃发展,越来越多的工程师采用芯片处理器,芯片处理器的应用领域无所不在,应用领域覆盖了掌上设备、家用电器、网络设备、无线通信、工业控制等。
目前几乎所有的芯片处理器的启动为从存储有启动代码的非易失性存储器启动,即其启动地址为存储有启动代码的非易失性存储器地址,而该启动地址一般为零地址。然而,如果处理器的异常中断入口地址被设置为零地址或者设置在零地址的附近(实际中目前大多数的芯片处理器也是这样设定的,比如:目前应用非常广泛的基于ARM(Advanced RISC Machines)核的芯片)时,那么,处理器的中断异常处理的入口地址就为存储有启动代码的非易失性存储器,而由于处理器在非易失性存储器中的代码存取速度较慢,造成中断处理速度较慢,而难以满足系统的实时性要求。
为了提高中断异常处理速度,人们提出了解决方案:重映射技术,具体是,将存储有启动代码的存储器的地址(启动地址:零地址)让予随机存取内存(Random-access memory,简称RAM)。执行重映射处理之后,当系统发生中断异常时,能够使得中断异常处理入口地址为:相对于非易失性存储器而言具有较快代码存取速度的RAM,从而使得处理器不在非易失性存储器中进行中断异常处理,而在RAM中进行中断异常处理,大大增大中断异常处理的速度,提高了系统的实时性。
同时的,在实际系统运行过程中,处理器如果直接在用于存储代码的非易失性存储器上执行程序代码,由于其存取速度较慢的限制,系统运行速度将很慢,因此,在执行程序代码的过程中,往往将需执行的程序代码搬至RAM,在RAM中执行,提高系统的性能。
但是,在上述技术与重映射技术的结合应用时,会存在以下问题:在系统启动之后,执行重映射之前,处理器从存储有启动代码的非易失性存储器中读取指令并执行指令,在执行了重映射之后,该非易失性存储器的原地址(零地址)被让予了RAM,而处理器在执行的过程中并不知道该地址的指向发生改变,处理器在执行完预取的指令之后,在不发生程序跳转的情况下,便会根据当前的取值地址,按照指令读取地址连续的预定方式,继续向下一地址指向的物理介质读取指令,而此时,由于重映射的执行,处理器在RAM中按照相应的取值地址进行指令读取,而此时在RAM中的该地址所存储的指令不一定与重映射前该非易失性存储器中的该地址的指令相同,因此将会造成指令读取不连续的错误,导致程序跑飞的现象。
比如:假设在重映射前,处理器从该非易失性存储器中读取了若干条指令,在执行了重映射命令之后,并执行了在重映射执行前从该非易失性存储器中预取的所有指令之后,当前处理器的下一指令读取地址为:0X0N,由于重映射的执行,地址0X0N指向RAM,而由于现有技术为了加快系统运行速度而将待执行的代码复制至RAM中的,此时可能在RAM中地址0X0N存储的指令与该非易失性存储器中的在执行重映射前的地址为0X0N指向的物理介质中存储的指令并不相同,即当前实际从RAM中读取的指令与之前执行的指令不连续,即当前实际读取的指令并不是实际需要读取的指令,程序跑飞。
为了解决上述问题,现有技术提出了一种解决方案,具体为:
在进行存储有启动代码或待存储启动代码的非易失存储器的芯片设计时,为存储器设计两个物理地址,一个为启动地址:零地址,另一个为固定的非零地址,该两物理地址同时指向该非易失性存储器。启动时,处理器使用启动地址(零地址)从该存储器启动,在执行重映射时,首先使处理器跳转到为该非易失性存储器预设的非零地址,再初始化RAM,并将待执行的程序代码复制至RAM中,再把该存储器的启动地址(零地址)让予RAM,使得当前RAM的地址为零地址,完成重映射操作。
可见由于采用了上述的解决方案,在执行重映射时,首先执行正常的程序跳转,让处理器跳转到该存储有启动代码的非易失性存储器的非零地址,再将该非易失性存储器的零地址让予RAM,使得在将零地址让予RAM前后,该非易失性存储器的物理地址不变(未固定的非零地址),而避免了后续程序的执行因为重映射而跑飞的问题,同时的又保证了处理器的中断异常处理入口地址在RAM,保证了中断异常处理的速度。
但是,本发明的发明人在进行本发明创造过程中,发现上述解决方案至少存在以下问题:
首先,该技术方案对存储有启动代码、或待存储启动代码的非易失存储器的芯片设计提出了特殊要求:必须要为该存储器设置两个物理地址,不利于存储器的设计,增加了存储器的设计成本。
其次,在该解决方案中,在执行了重映射之后,该存储有启动代码的非易失性存储器的地址被固定为该芯片设计时的非零地址,不利于用户在设计系统时对该非易失性存储器的个性化设计。
发明内容
本发明实施例提供一种实现重映射的方法,提高中断异常处理速度,并避免程序跑飞的问题。
本发明实施例提供一种实现重映射的装置,提高中断异常处理速度,并避免程序跑飞的问题。
本发明实施例提供的实现重映射的方法,包括:
将存储有启动代码的非易失性存储器中的待执行代码以及地址低于所述待执行代码的代码,按其在所述非易失性存储器中的存储顺序复制至已初始化的随机存取内存RAM;
将所述非易失性存储器的地址让予所述RAM,其中所述非易失性存储器的地址为零地址。
可选的,在所述将所述存储有启动代码的存储器器中的待执行代码以及地址低于所述待执行代码的代码复制至所述RAM步骤之后,还包括:
将所述非易失性存储器的地址映射为任意非零地址。
可选的,所述非易失性存储器为:只读存储器ROM、闪速存储器FLASH。
本发明实施例提供的实现重映射的装置,包括:
内存初始化单元,用于初始化随机存取内存RAM;
数据复制单元,用于将存储有启动代码的非易失性存储器中的待执行代码以及地址低于所述待执行代码的代码,按其在所述非易失性存储器中的存储顺序,复制至所述已被所述内存初始化单元初始化的RAM;
地址映射单元,用于执行地址映射操作,所述地址映射操作包括:将所述RAM的地址映射为所述非易失性存储器的地址,其中所述非易失性存储器的地址为零地址。
可选的,所述地址映射单元的地址映射操作还包括:将所述非易失性存储器的地址映射为:任意非零地址。
可选的,所述非易失性存储器为:只读存储器ROM、闪速存储器FLASH。
由以上技术方案可以看出,由于本发明实施例技术方案在实现重映射时,首先初始化RAM,并把存储有启动代码的非易失性存储器中的待执行代码以及地址低于所述待执行代码的代码,按其在该非易失性存储器中的存储顺序复制至RAM中,然后再将该非易失性存储器的地址(即系统的启动地址:零地址)让予RAM。本发明实施例技术方案既实现了使得系统的中断异常处理入口地址在RAM中,保证了中断异常处理具有较快的速度。同时的,由于在将启动地址(零地址)让予RAM之前,先把存储有启动代码的存储器中的代码复制至RAM中,使得RAM中的待执行的代码与相应非易失性存储器中的未执行的代码的存储位置顺序完全一致,使得将零地址让予RAM后,处理器从RAM中读取的指令与已执行的指令具有连续性,保证了指令读取的正确性,而避免了程序跑飞的问题。
同时的,本发明实施例技术方案相对于现有技术而言,不需要为存储有或待存储启动代码的非易失性存储器的芯片设计两个物理地址,方便了该非易失性存储器的芯片设计,减少了设计成本。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的不当限定。在附图中:
图1为本发明实施例中提供的实现重映射的方法流程示意图;
图2为本发明实施例中提供的实现重映射的装置的结构示意图。
具体实施方式
下面将参考附图并结合实施例,来详细说明本发明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
在本实施例中处理器从零地址启动,即存储有启动代码的非易失性存储器(为了方便描述,以下简称:启动存储器)的地址为零地址,处理器从启动存储器启动,并开始执行一些常规的初始化工作,包括初始化RAM。在各项初始化完成以后系统开始运行。该启动存储器为非易失性存储器(掉电不丢失数据),比如:只读存储器(Read-only memory,简称ROM)、闪速存储器FLASH等。
系统运行过程中,当需要执行重映射时,可以按照如图1所示的实现重映射的方法流程进行,如图示,本实施例实现重映射可以包括以下步骤:
步骤101:初始化RAM。
初始化处理器对RAM的读写方式,以便处理器在RAM实现数据的存取。
步骤102:将启动存储器中的待执行代码和地址低于该待执行代码的地址的已执行代码复制至RAM。
将启动存储器中待执行的代码、以及地址低于该待执行的代码的地址的已执行的代码,按其在启动存储器中的存储顺序复制至RAM中,使得被复制的代码在RAM的存储顺序与这些代码在启动存储器中的存储顺序相一致。
另外的,为了方便起见,本步骤也可以通过直接将启动存储器中的所有代码,按其在启动存储器中的存储顺序复制至RAM中来实现。由于目前系统的RAM容量较大,一般可以采用全部代码复制的实现方式。
步骤103:将启动存储器的零地址让予RAM。
将原属于启动存储器的地址(启动地址:零地址)让予RAM,即使得RAM的地址为零地址(0X00)以实现重映射操作。
由上可见在执行完步骤103之后,RAM的地址为零地址,当有中断异常发生时,中断异常处理的入口地址在RAM中,保证了中断异常处理的快速执行。另外的,由于在执行零地址让予RAM之前,已将启动存储器中待执行的代码以及地址低于该待执行的代码的地址的已执行的代码,复制至RAM中,并且使被复制的代码在RAM的存储顺序与这些代码在启动存储器中的存储顺序相一致,那么在零地址让予RAM之后,处理器根据当前指令读取地址在RAM中读取的指令与在零地址让予前该指令读取地址在启动存储器中存储的指令是相同的,保证了指令读取的正确性,避免了程序跑飞的问题。
为了方便系统用户访问启动存储器,在步骤102之后还可以执行以下步骤:
步骤104:将启动存储器的地址映射为任意非零地址。
一般的,用户需要再次访问启动存储器,我们可以在将启动存储器的零地址让予某非零地址,使得用户可以在系统运行的过程中,随时根据该地址访问启动存储器。
在将启动存储器的代码复制至RAM之后,将零地址让予RAM之前、之后或同时执行本步骤,有利于方便系统设计者对系统的个性化设计,为自己的系统产品的启动存储器设定个性化的地址以供用户选择,方便用户访问启动存储器,同时的也方便系统维护人员的维护工作。比如,对于A公司设计的系列系统产品,A公司可以将本公司本系列的所有产品的启动存储器的地址设计为一特定的数值,使得用户或系统维护人员在使用产品时可以根据产品的系列,获知启动存储器的访问地址而访问启动存储器,而不需要阅读大量的设计说明书文档查找启动存储器的地址。
而如果采用现有技术中的重映射解决技术方案,在进行该启动存储器的芯片设计时,便已固定了该启动存储器的访问地址,使得在系统设计时,设计者不能对启动存储器的地址进行个性化设计,不利于系统的灵活设计。
同时的本实施例技术方案不要求启动存储器必须具有两个物理地址,而出于设计成本的考虑,目前大多数非易性存储器的芯片设计产商是不会为存储器设计两物理地址的,因此本实施例技术方案对启动存储器选择范围更广。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,该程序在执行时,可以包括如下步骤:将存储有启动代码的非易失性存储器中的待执行代码以及地址低于该待执行代码的代码,按其在该非易失性存储器中的存储顺序,复制至已初始化的RAM中,然后将该非易失性存储器的零地址让予RAM。这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。
图2所示为本发明实施例提供的一种实现重映射的装置,如图示,本装置可以包括:
内存初始化单元201,用于初始化RAM,该初始化主要是对处理器对该RAM的读写方式进行初始化,以便处理器在RAM实现数据的存取。
数据复制单元202,用于将存储有启动代码的非易失性存储器(比如:ROM、FLASH等,为了方便起见,以下称为启动存储器)中的待执行代码、以及地址低于所述待执行代码,按其在所述非易失性存储器中的存储顺序,复制至已被内存初始化单元201初始化的RAM中。
为了代码复制方便起见,数据复制单元202可以直接将启动存储器中的所有代码,按其在该非易失性存储器中的存储顺序,复制至该RAM中。
在本发明实施例中启动存储器可以为:ROM、FLASH等。
地址映射单元203,用于执行地址映射操作,其中该地址映射操作可以包括:将RAM地址映射为启动存储器的地址,其中该启动存储器的地址为零地址,即处理器从零地址启动。
另外的,为了系统的个性化设计,方便用户访问启动存储器,所述地址映射单元的地址映射操作还可以包括:在数据复制单元202完成将启动存储器的代码复制之后,将启动存储器的地址映射为某特定的非零地址,该非零地址可以根据设定者的需要进行任意设定。
值得说明的是,该内存初始化单元201、数据复制单元202、和/或地址映射单元203还可以作为相应的功能模块集成在处理器中。
另外的,本实施例的实现重映射的装置既可以采用硬件的形式实现,也可以采用软件供能模块的形式实现。本实施例装置既可以作为独立的产品销售或使用时,也可以作为存储在一个计算机可读取存储介质中。
由上可见,采用本发明实施例技术方案不但实现了使得系统的中断异常处理入口地址在RAM中,保证了中断异常处理具有较快的速度,还保证了重映射执行之后,指令读取的正确性,避免了程序跑飞的问题。
另外的,本发明实施例技术方案相对于现有技术而言,不需要为启动存储器的芯片设计两个物理地址,方便了启动存储器的芯片设计,有利于减少了启动存储器的成本。
再另外的,本发明实施例技术方案相对于现有技术而言,由于启动存储器的地址可以由系统设计者更具需要进行个性化设计,因此本发明实施例技术方案更具灵活性。
以上对本发明实施例所提供的一种实现重映射的方法、装置进行了详细介绍,本文中应用了具体个例对本发明实施例的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明实施例的方法及其原理;同时,对于本领域的一般技术人员,依据本发明实施例,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (6)
1、一种实现重映射的方法,其特征是,包括:
将存储有启动代码的非易失性存储器中的待执行代码以及地址低于所述待执行代码的代码,按其在所述非易失性存储器中的存储顺序复制至已初始化的随机存取内存RAM;
将所述非易失性存储器的地址让予所述RAM,其中所述非易失性存储器的地址为零地址。
2、根据权利要求1所述实现重映射的方法,其特征是,在所述将所述存储有启动代码的存储器器中的待执行代码以及地址低于所述待执行代码的代码复制至所述RAM步骤之后,还包括:
将所述非易失性存储器的地址映射为任意非零地址。
3、根据权利要求1或2所述实现重映射的方法,其特征是,所述非易失性存储器为:只读存储器ROM、闪速存储器FLASH。
4、一种实现重映射的装置,所述装置包括:
内存初始化单元,用于初始化随机存取内存RAM;
数据复制单元,用于将存储有启动代码的非易失性存储器中的待执行代码以及地址低于所述待执行代码的代码,按其在所述非易失性存储器中的存储顺序,复制至所述已被所述内存初始化单元初始化的RAM;
地址映射单元,用于执行地址映射操作,所述地址映射操作包括:将所述RAM的地址映射为所述非易失性存储器的地址,其中所述非易失性存储器的地址为零地址。
5、根据权利要求4所述的实现重映射的装置,其特征是,所述地址映射单元的地址映射操作还包括:将所述非易失性存储器的地址映射为:任意非零地址。
6、根据权利要求4或5所述的实现重映射的装置,其特征是,所述非易失性存储器为:只读存储器ROM、闪速存储器FLASH。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200710087319 CN101030148A (zh) | 2007-03-09 | 2007-03-09 | 实现重映射的方法、装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200710087319 CN101030148A (zh) | 2007-03-09 | 2007-03-09 | 实现重映射的方法、装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101030148A true CN101030148A (zh) | 2007-09-05 |
Family
ID=38715520
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200710087319 Pending CN101030148A (zh) | 2007-03-09 | 2007-03-09 | 实现重映射的方法、装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101030148A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102495738A (zh) * | 2011-10-31 | 2012-06-13 | 深圳市五巨科技有限公司 | 移动终端及其应用程序运行方法 |
CN108021392A (zh) * | 2016-11-01 | 2018-05-11 | 中芯国际集成电路制造(上海)有限公司 | 处理器及其操作执行方法 |
CN110647359A (zh) * | 2018-06-27 | 2020-01-03 | 爱思开海力士有限公司 | 半导体装置、其操作方法和具有其的层叠存储装置 |
CN110888667A (zh) * | 2019-10-30 | 2020-03-17 | 北京军懋国兴科技股份有限公司 | 一种arm芯片程序在线重构的方法 |
CN111373368A (zh) * | 2018-09-12 | 2020-07-03 | 株式会社Lg化学 | 非易失性存储器更新设备和方法 |
CN112346739A (zh) * | 2019-08-06 | 2021-02-09 | 珠海格力电器股份有限公司 | 中断向量表的重映射方法、装置、微处理器及电子装置 |
CN112463230A (zh) * | 2020-11-23 | 2021-03-09 | 浙江地芯引力科技有限公司 | 程序运行方法及装置、电子设备、存储介质 |
-
2007
- 2007-03-09 CN CN 200710087319 patent/CN101030148A/zh active Pending
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102495738A (zh) * | 2011-10-31 | 2012-06-13 | 深圳市五巨科技有限公司 | 移动终端及其应用程序运行方法 |
CN108021392A (zh) * | 2016-11-01 | 2018-05-11 | 中芯国际集成电路制造(上海)有限公司 | 处理器及其操作执行方法 |
CN110647359A (zh) * | 2018-06-27 | 2020-01-03 | 爱思开海力士有限公司 | 半导体装置、其操作方法和具有其的层叠存储装置 |
CN110647359B (zh) * | 2018-06-27 | 2023-06-27 | 爱思开海力士有限公司 | 半导体装置、其操作方法和具有其的层叠存储装置 |
CN111373368A (zh) * | 2018-09-12 | 2020-07-03 | 株式会社Lg化学 | 非易失性存储器更新设备和方法 |
CN111373368B (zh) * | 2018-09-12 | 2023-11-14 | 株式会社Lg新能源 | 非易失性存储器更新设备和方法 |
CN112346739A (zh) * | 2019-08-06 | 2021-02-09 | 珠海格力电器股份有限公司 | 中断向量表的重映射方法、装置、微处理器及电子装置 |
CN110888667A (zh) * | 2019-10-30 | 2020-03-17 | 北京军懋国兴科技股份有限公司 | 一种arm芯片程序在线重构的方法 |
CN112463230A (zh) * | 2020-11-23 | 2021-03-09 | 浙江地芯引力科技有限公司 | 程序运行方法及装置、电子设备、存储介质 |
CN112463230B (zh) * | 2020-11-23 | 2023-08-25 | 浙江地芯引力科技有限公司 | 程序运行方法及装置、电子设备、存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101030148A (zh) | 实现重映射的方法、装置 | |
CN1282089C (zh) | 控制串行快闪存储器中适当执行的装置和方法及相应芯片 | |
CN1825283A (zh) | 嵌入式操作系统硬件镜像启动优化的实现方法 | |
CN1499530A (zh) | 非易失性存储器系统内有效允许失序写处理的方法和装置 | |
CN1218248C (zh) | 堆栈使用的方法 | |
CN100342353C (zh) | 嵌入式操作系统中进程映射实现方法 | |
CN1955939A (zh) | 基于虚拟内存盘的备份与恢复方法 | |
CN101046803A (zh) | 文件系统的安全管理方法及装置 | |
CN1869915A (zh) | 提供读取操作硬件加速的存储卡 | |
CN1945537A (zh) | 基于存储区域网络的高速固态存储设备的实现方法 | |
CN101030146A (zh) | 一种实现固件更新的方法和系统 | |
CN103370698A (zh) | 用于非易失性存储器系统的辅助接口 | |
CN1758214A (zh) | 指令高速缓存和指令翻译后备缓冲器的控制器及控制方法 | |
CN1304957C (zh) | 基于移动存储的计算机系统磁盘同步写性能提高方法 | |
CN1811725A (zh) | 一种快速存储装置及快速更新数据的方法 | |
CN1687904A (zh) | 智能卡存储环境的控制方法 | |
CN1279455C (zh) | 光纤通道-存储区域网络系统的逻辑单元号高速缓存方法 | |
CN1828538A (zh) | 嵌入式系统中直接从文件系统运行程序的实现方法 | |
CN1841329A (zh) | 对目标文件进行定位的方法和装置 | |
CN1928821A (zh) | 一种电子设备的在线升级方法 | |
CN101034374A (zh) | 在虚拟机中管理栈的设备和方法 | |
CN1238787C (zh) | 嵌入式实时操作系统的二分查找式任务调度方法 | |
CN1251071C (zh) | 多功能嵌入系统的实现方法 | |
CN1447243A (zh) | 快闪存储器中快速且能防止不正常断电的演算法及其控制系统 | |
CN200953143Y (zh) | 一种虚拟硬件系统 |
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 |