CN101398759A - 避免启动代码在数据段搬移时自我覆盖的方法 - Google Patents
避免启动代码在数据段搬移时自我覆盖的方法 Download PDFInfo
- Publication number
- CN101398759A CN101398759A CNA2007101181381A CN200710118138A CN101398759A CN 101398759 A CN101398759 A CN 101398759A CN A2007101181381 A CNA2007101181381 A CN A2007101181381A CN 200710118138 A CN200710118138 A CN 200710118138A CN 101398759 A CN101398759 A CN 101398759A
- Authority
- CN
- China
- Prior art keywords
- logical address
- initial
- data segment
- shift value
- segments
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 16
- 238000010586 diagram Methods 0.000 description 4
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
可避免启动代码在数据段搬移时自我覆盖的方法。技术方案是:是包括下列步骤:(1)读取源数据段的起始及结束逻辑地址和目标数据段的起始及结束逻辑地址;(2)计算源数据段的起始及结束逻辑地址的偏移数值和目标数据段的起始及结束逻辑地址的偏移数值;(3)通过判断目标数据段的逻辑地址的偏移数值与源数据段的逻辑地址偏移数值之间的位置关系,确定采用搬移数据段的顺序。
Description
技术领域
本发明属于启动代码搬移数据段方法领域,尤其是对于含有内存管理单元或启动重映射逻辑处理器芯片,取得源数据段的逻辑地址和目标数据段的逻辑地址,通过判断源数据段的逻辑地址和目标数据段的逻辑地址的相对位置关系,以选择合适的搬移顺序来搬移数据段,从而避免启动代码在数据段搬移时自我覆盖的方法。
背景技术
目前,对于含有内存管理单元或启动重映射逻辑处理器芯片来说,启动代码在进行数据段的搬移或复制时,大都采用从头至尾或从尾至头的单一固定的顺序搬移。但是,由于内存管理单元或启动重映射逻辑的采用,形成了处理器的物理空间和逻辑空间的分离,由此一个物理地址可能对应多个逻辑地址,而处理器进行的读写操作都是基于逻辑地址进行的,那么启动代码在对应有多个逻辑空间的物理空间上进行数据段的搬移或复制时,如果单一固定地采用从头至尾或从尾至头的顺序搬移,都有可能导致数据段的头部或尾部被自我覆盖。
说明书附图图1-图4,每一附图中显示的上下两个逻辑空间对应着同一个物理空间,每一附图都是为说明一个数据段的搬移,数据段的搬移都是在在同一物理空间内进行的。
对于说明书附图图1来说,源数据段逻辑地址基值M等于1,目标数据段逻辑地址基值N等于11,逻辑地址1-7和逻辑地址11-17映射到同一物理地址空间。将位于逻辑地址1-3内数据段ABC搬移到逻辑地址为15-17内,无论采用从头至尾或从尾至头的顺序都可以正确搬移,对于说明书附图图3来说,源数据段逻辑地址基值M等于1,目标数据段逻辑地址基值N等于11,逻辑地址1-7和逻辑地址11-17映射到同一物理地址空间。将位于逻辑地址5-7内数据段ABC搬移到逻辑地址为11-13内,无论采用从头至尾或从尾至头的顺序也都可以正确搬移。
而对于说明书附图图2来说,源数据段逻辑地址基值M等于1,目标数据段逻辑地址基值N等于11,逻辑地址1-7和逻辑地址11-17映射到同一物理地址空间。将将位于逻辑地址2-4内数据段ABC搬移到逻辑地址为14-16内,如果采用从头至尾的顺序搬移,即按照数据A到逻辑地址14、数据B到逻辑地址15、数据C到逻辑地址16顺序搬移,由于逻辑地址6与逻辑地址14对应同一个物理地址,因此,第一步数据A搬移到逻辑地址14时,会将位于该逻辑地址内的数据C进行覆盖,导致尾部数据被头部数据覆盖,第二步将数据B从逻辑地址5搬移到逻辑地址15,第三步,将数据C从逻辑地址6搬移到逻辑地址16,但是逻辑地址6内的数据已经变成数据A,因此逻辑地址16内的数据为A,逻辑地址14-16最后的数据段结果为ABA,这样就发生数据段搬移的错误。但是,如果采用从尾至头的顺序搬移,第一步将数据C从逻辑地址6搬移到逻辑地址16,第二步将数据B从逻辑地址5搬移到逻辑地址15,第三步将数据A从逻辑地址4搬移到逻辑地址14,最终在逻辑空间14-16内形成数据段ABC,就能够实现数据段正确搬移。
同理,对于说明书附图图4来说,如果采用从尾至头的顺序搬移,则导致头部数据被尾部数据覆盖,而如果采用从头至尾顺序搬移,则能够正确搬移数据段。
发明内容
本发明的目的是解决现有技术存在的启动代码数据段搬移时,可能出现数据自我覆盖而不能正确搬移数据段的问题,提供一种可避免启动代码在数据段搬移时自我覆盖的方法。
本发明的技术方案是:避免启动代码在数据段搬移时自我覆盖的方法,其特征是包括下列步骤:
(1)读取源数据段的起始及结束逻辑地址和目标数据段的起始及结束逻辑地址;
(2)计算源数据段的起始及结束逻辑地址的偏移数值和目标数据段的起始及结束逻辑地址的偏移数值;
(3)通过判断目标数据段的逻辑地址的偏移数值与源数据段的逻辑地址偏移数值之间的位置关系,确定采用搬移数据段的顺序。
所述源数据段起始及结束逻辑地址的偏移数值,为所述源数据段起始及结束位置的逻辑地址数值与源数据段逻辑地址基值之间的差值,源数据段逻辑地址基值标记为M,所述目标数据段起始及结束逻辑地址的偏移数值,为所述目标数据段起始及结束位置的逻辑地址数值与目标数据段逻辑地址基值之间的差值,目标数据段逻辑地址基值标记为M,其中以M和N为起始的逻辑地址空间映射到同一物理地址空间。
还包括下列步骤:(1)判断目标数据段起始逻辑地址的偏移数值与源数据段起始逻辑地址偏移数值关系,如果目标数据段的起始逻辑地址的偏移数值处于源数据段的起始和结束逻辑地址的偏移数值区间之内,包括区间两端的数值在内,则启动代码采用从尾至头的顺序搬移数据段;(2)如果目标数据段的起始逻辑地址的偏移数值处于源数据段的起始结束逻辑地址的偏移数值区间之外,继续判断目标数据段的结束逻辑地址偏移数值与源数据段的起始结束逻辑地址偏移数值的关系,如果目标数据段的结束逻辑地址的偏移数值位于源数据段的起始结束逻辑地址偏移数值区间内,包括区间两端的数值在内,则启动代码采用从头至尾的顺序搬移数据段;如果目标数据段的结束逻辑地址偏移数值位于源数据段的起始结束逻辑地址的偏移数值区间外,则启动代码采用从头至尾或从尾至头的顺序搬移数据段。
上述方法利用含有内存管理单元或启动重映射逻辑的处理器芯片,通过GNU-LD链接脚本取得源数据段及目标数据段的起始及结束逻辑地址。
本发明的效果是:通过读取源数据段的起始结束逻辑地址和目标数据段起始结束逻辑地址、计算源数据段的起始及结束逻辑地址的偏移数值和目标数据段的起始及结束逻辑地址的偏移数值、判断目标数据段的逻辑地址的偏移数值与源数据段的逻辑地址偏移数值之间的位置关系,确定采用搬移数据段的顺序。能够选择出数据段正确的搬移顺序,避免数据段搬移时自我覆盖的发生,保证系统正确运行。
下面结合附图和实施例对本发明做进一步的说明。
附图说明
图1为数据段搬移例1示意图;
图2为数据段搬移例2示意图;
图3为数据段搬移例3示意图;
图4为数据段搬移例4示意图;
图5实施本发明方法的程序框图。
具体实施方式
图5中,是避免启动代码在数据段搬移时自我覆盖方法的程序框图,包括下列步骤:
步骤101,读取源数据段的起始及结束逻辑地址和目标数据段的起始及结束逻辑地址。
步骤102,计算源数据段的起始及结束逻辑地址的偏移数值和目标数据段的起始及结束逻辑地址的偏移数值,通过判断目标数据段的逻辑地址的偏移数值与源数据段的逻辑地址偏移数值之间的位置关系,确定采用搬移数据段的顺序。所述源数据段起始及结束逻辑地址的偏移数值,为所述源数据段起始及结束位置的逻辑地址数值与源数据段逻辑地址基值之间的差值,所述目标数据段起始及结束逻辑地址的偏移数值,为所述目标数据段起始及结束位置的逻辑地址数值与目标数据段逻辑地址基值之间的差值。
步骤103,判断目标数据段起始逻辑地址的偏移数值与源数据段起始逻辑地址偏移数值关系,如果目标数据段的起始逻辑地址的偏移数值处于源数据段的起始和结束逻辑地址的偏移数值区间之内,包括区间两端的数值在内,则启动代码采用从尾至头的顺序搬移数据段105;如果目标数据段的起始逻辑地址的偏移数值处于源数据段的起始结束逻辑地址的偏移数值区间之外,继续判断目标数据段的结束逻辑地址偏移数值与源数据段的起始结束逻辑地址偏移数值的关系104,如果目标数据段的结束逻辑地址的偏移数值位于源数据段的起始结束逻辑地址偏移数值区间内,包括区间两端的数值在内,则启动代码采用从头至尾的顺序搬移数据段106;如果目标数据段的结束逻辑地址偏移数值位于源数据段的起始结束逻辑地址的偏移数值区间外,则启动代码采用从头至尾或从尾至头的顺序搬移数据段107。
上述方法利用含有内存管理单元或启动重映射逻辑的处理器芯片,通过GNU-LD链接脚本取得源数据段及目标数据段的起始及结束逻辑地址。
结合图1-图4所示的数据段搬移情况,具体说明本发明方法的应用。
图1中所示的同一物理空间有两个逻辑空间,即对应两个逻辑地址区间,一个逻辑地址区间为1-7,另一个逻辑地址区间为11-17,源数据段的逻辑地址区间为1-3,目标逻辑地址区间为15-17。源数据段逻辑地址基值M为1,计算源数据段的起始及结束逻辑地址的偏移数值,源数据段的起始及结束逻辑地址的偏移数值为0(即起始逻辑地址1减去逻辑地址基值1)和2(即结束逻辑地址3减去逻辑地址基值1)。目标数据段逻辑地址基值N为11,计算目标数据段的起始及结束逻辑地址的偏移数值,目标数据段的起始及结束逻辑地址的偏移数值为15-11=4,和17-11=6,目标数据段的结束逻辑地址偏移数值4和6,位于源数据段的起始结束逻辑地址的偏移数值区间1-3之外,启动代码采用从头至尾或从尾至头的顺序搬移数据段。
图2中所示的同一物理空间有两个逻辑空间,一个逻辑地址区间为1-7,另一个逻辑地址区间为11-17,源数据段的逻辑地址区间为2-4,目标逻辑地址区间为14-16。源数据段逻辑地址基值M为1,计算源数据段的起始及结束逻辑地址的偏移数值,源数据段的起始及结束逻辑地址的偏移数值为1(即起始逻辑地址2减去逻辑地址基值1)和3(即结束逻辑地址4减去逻辑地址基值1)。目标数据段逻辑地址基值N为11,计算目标数据段的起始及结束逻辑地址的偏移数值,目标数据段的起始及结束逻辑地址的偏移数值为14-11=3,和16-11=5,目标数据段的起始逻辑地址偏移数值3,位于源数据段的起始结束逻辑地址的偏移数值区间1-3之内,采用从尾至头的顺序搬动数据块,如果采用从头至尾的顺序搬移,则导致尾部数据被头部数据覆盖。
图3中所示的同一物理空间有两个逻辑空间,即对应两个逻辑地址区间,一个逻辑地址区间为1-7,另一个逻辑地址区间为11-17,源数据段的逻辑地址区间为5-7,目标逻辑地址区间为11-13。源数据段逻辑地址基值M为1,计算源数据段的起始及结束逻辑地址的偏移数值,源数据段的起始及结束逻辑地址的偏移数值为4(即起始逻辑地址5减去逻辑地址基值1)和6(即结束逻辑地址7减去逻辑地址基值1)。目标数据段逻辑地址基值N为11,计算目标数据段的起始及结束逻辑地址的偏移数值,目标数据段的起始及结束逻辑地址的偏移数值为11-11=0,和13-11=2,目标数据段的结束逻辑地址偏移数值0和2,位于源数据段的起始结束逻辑地址的偏移数值区间4-6之外,启动代码采用从头至尾或从尾至头的顺序搬移数据段。
图4中所示的同一物理空间有两个逻辑空间,一个逻辑地址区间为1-7,另一个逻辑地址区间为11-17,源数据段的逻辑地址区间为4-6,目标逻辑地址区间为12-14。源数据段逻辑地址基值M为1,计算源数据段的起始及结束逻辑地址的偏移数值,源数据段的起始及结束逻辑地址的偏移数值为3(即起始逻辑地址4减去逻辑地址基值1)和5(即结束逻辑地址6减去逻辑地址基值1)。目标数据段逻辑地址基值N为11,计算目标数据段的起始及结束逻辑地址的偏移数值,目标数据段的起始及结束逻辑地址的偏移数值为12-11=1,和14-11=3,目标数据段的起始逻辑地址偏移数值1,位于源数据段的起始结束逻辑地址的偏移数值区间3-5之外,目标数据段的起始逻辑地址偏移数值3,位于源数据段的起始结束逻辑地址的偏移数值区间3-5之内,采用从头至尾的顺序搬动数据块,如果采用从尾至头的顺序搬移,则导致头部数据被尾部数据覆盖。
Claims (4)
1、避免启动代码在数据段搬移时自我覆盖的方法,其特征是包括下列步骤:
(1)读取源数据段的起始及结束逻辑地址和目标数据段的起始及结束逻辑地址;
(2)计算源数据段的起始及结束逻辑地址的偏移数值和目标数据段的起始及结束逻辑地址的偏移数值;
(3)通过判断目标数据段的逻辑地址的偏移数值与源数据段的逻辑地址偏移数值之间的位置关系,确定采用搬移数据段的顺序。
2、根据权利要求1所述的避免启动代码在数据段搬移时自我覆盖的方法,其特征是:所述源数据段起始及结束逻辑地址的偏移数值,为所述源数据段起始及结束位置的逻辑地址数值与源数据段逻辑地址基值之间的差值,源数据段逻辑地址基值标记为M,所述目标数据段起始及结束逻辑地址的偏移数值,为所述目标数据段起始及结束位置的逻辑地址数值与目标数据段逻辑地址基值之间的差值,目标数据段逻辑地址基值标记为N,其中以M和N为起始的逻辑地址空间映射到同一物理地址空间。
3、根据权利要求1或2所述的避免启动代码在数据段搬移时自我覆盖的方法,其特征是包括下列步骤:
(1)判断目标数据段起始逻辑地址的偏移数值与源数据段起始逻辑地址偏移数值关系,如果目标数据段的起始逻辑地址的偏移数值处于源数据段的起始和结束逻辑地址的偏移数值区间之内,包括区间两端的数值在内,则启动代码采用从尾至头的顺序搬移数据段;
(2)如果目标数据段的起始逻辑地址的偏移数值处于源数据段的起始结束逻辑地址的偏移数值区间之外,继续判断目标数据段的结束逻辑地址偏移数值与源数据段的起始结束逻辑地址偏移数值的关系,如果目标数据段的结束逻辑地址的偏移数值位于源数据段的起始结束逻辑地址偏移数值区间内,包括区间两端的数值在内,则启动代码采用从头至尾的顺序搬移数据段;如果目标数据段的结束逻辑地址偏移数值位于源数据段的起始结束逻辑地址的偏移数值区间外,则启动代码采用从头至尾或从尾至头的顺序搬移数据段。
4、根据权利要求3所述的避免启动代码在数据段搬移时自我覆盖的方法,其特征是:利用含有内存管理单元或启动重映射逻辑的处理器芯片,通过GNU-LD链接脚本取得源数据段及目标数据段的起始及结束逻辑地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101181381A CN101398759B (zh) | 2007-06-29 | 2007-06-29 | 避免启动代码在数据段搬移时自我覆盖的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101181381A CN101398759B (zh) | 2007-06-29 | 2007-06-29 | 避免启动代码在数据段搬移时自我覆盖的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101398759A true CN101398759A (zh) | 2009-04-01 |
CN101398759B CN101398759B (zh) | 2012-06-13 |
Family
ID=40517337
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101181381A Expired - Fee Related CN101398759B (zh) | 2007-06-29 | 2007-06-29 | 避免启动代码在数据段搬移时自我覆盖的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101398759B (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5937425A (en) * | 1997-10-16 | 1999-08-10 | M-Systems Flash Disk Pioneers Ltd. | Flash file system optimized for page-mode flash technologies |
KR20060032145A (ko) * | 2003-06-23 | 2006-04-14 | 코닌클리케 필립스 일렉트로닉스 엔.브이. | 결함이 발생하면 논리 어드레스를 물리적 어드레스로리매핑하여 정보를 기록하는 장치 및 방법 |
KR100526188B1 (ko) * | 2003-12-30 | 2005-11-04 | 삼성전자주식회사 | 플래시 메모리의 주소 사상 방법, 사상 정보 관리 방법 및상기 방법을 이용한 플래시 메모리 |
CN100342353C (zh) * | 2006-04-07 | 2007-10-10 | 浙江大学 | 嵌入式操作系统中进程映射实现方法 |
-
2007
- 2007-06-29 CN CN2007101181381A patent/CN101398759B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101398759B (zh) | 2012-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8825947B1 (en) | System and method for managing data access in non-volatile memory | |
CN101551780B (zh) | 一种电视机及其数据存储方法、装置 | |
CN103744694B (zh) | 基于Nand闪存的动态分区搜索装置及其方法 | |
US20120254524A1 (en) | Memory device and host device | |
JP4889357B2 (ja) | 試験装置、プログラムおよび試験方法 | |
JP2008192211A (ja) | 磁気ディスクコントローラおよび方法 | |
CN103279406B (zh) | 一种内存的隔离方法和装置 | |
JP5064820B2 (ja) | 磁気ディスクコントローラおよび方法 | |
JP2006120082A (ja) | メモリカード、半導体装置、及びメモリカードの制御方法 | |
CN101334756A (zh) | 非易失性存储器的控制装置及其控制方法以及存储装置 | |
CN109614119B (zh) | 一种烧录方法、装置、电子设备及介质 | |
CN109947660A (zh) | 固态储存装置及其相关计算机系统 | |
JP2008192209A (ja) | 磁気ディスクコントローラおよび方法 | |
CN103577119A (zh) | 用于下一代固态硬盘控制器中乱序传输数据的系统和方法 | |
JP2000010790A (ja) | グロ―バル衝突判定用のユニタリデ―タ構造体のシステム、方法及びコンピュ―タプログラム製品 | |
CN102760109A (zh) | 数据的通信方法、装置及系统 | |
JP4751037B2 (ja) | メモリカード | |
CN101398759B (zh) | 避免启动代码在数据段搬移时自我覆盖的方法 | |
CN102023845A (zh) | 一种基于状态机的Cache并发访问管理方法 | |
EP1814037B1 (en) | Semiconductor storage device | |
CN100449498C (zh) | 数据储存装置 | |
CN109711183A (zh) | 一种基于芯片dna的程序加密方法 | |
CN102129238B (zh) | 用于轨道交通车辆制动系统参数的标定方法和装置 | |
CN101826002B (zh) | 记录式分支预测器的硬件实现方法 | |
CN101989459B (zh) | 通过数据缓冲提高eeprom使用寿命的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120613 Termination date: 20120629 |