CN101398759A - 避免启动代码在数据段搬移时自我覆盖的方法 - Google Patents

避免启动代码在数据段搬移时自我覆盖的方法 Download PDF

Info

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
Application number
CNA2007101181381A
Other languages
English (en)
Other versions
CN101398759B (zh
Inventor
尹文超
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Vimicro Corp
Original Assignee
Vimicro Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Vimicro Corp filed Critical Vimicro Corp
Priority to CN2007101181381A priority Critical patent/CN101398759B/zh
Publication of CN101398759A publication Critical patent/CN101398759A/zh
Application granted granted Critical
Publication of CN101398759B publication Critical patent/CN101398759B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (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链接脚本取得源数据段及目标数据段的起始及结束逻辑地址。
CN2007101181381A 2007-06-29 2007-06-29 避免启动代码在数据段搬移时自我覆盖的方法 Expired - Fee Related CN101398759B (zh)

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)

* Cited by examiner, † Cited by third party
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
US20070168689A1 (en) * 2003-06-23 2007-07-19 Koninklijke Philips Electronics N.V. Device and method for recording information with remapping of logical addresses to physical addresses when defects occur
KR100526188B1 (ko) * 2003-12-30 2005-11-04 삼성전자주식회사 플래시 메모리의 주소 사상 방법, 사상 정보 관리 방법 및상기 방법을 이용한 플래시 메모리
CN100342353C (zh) * 2006-04-07 2007-10-10 浙江大学 嵌入式操作系统中进程映射实现方法

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
FI121559B (fi) Vain Sekventiaalista kirjoitusta käyttävä flash-hallintajärjestelmä ja -menetelmä
CN1096674C (zh) 包含有固定块结构的伺服磁盘驱动器
JP4889357B2 (ja) 試験装置、プログラムおよび試験方法
JP2011175615A (ja) ホスト装置およびメモリデバイス
JP3956112B2 (ja) コンパイラ、レジスタ割当装置、プログラム、記録媒体、コンパイル方法、及びレジスタ割当方法
JP2009238320A (ja) 記憶装置および記憶方法
CN101334756A (zh) 非易失性存储器的控制装置及其控制方法以及存储装置
CN101520735A (zh) 一种启动闪存内引导程序的方法及其网络电视和机顶盒
CN109614119B (zh) 一种烧录方法、装置、电子设备及介质
CN101625644B (zh) 闪存芯片操作方法、在线仿真器和闪存芯片操作系统
US6175935B1 (en) Software debugging method and recording medium to which debugging program has been recorded
CN101882094A (zh) 嵌入式系统制作补丁的方法和系统
CN106372002B (zh) 一种数据存储方法及读取还原方法
US8335871B2 (en) Memory system and method of driving the same
JP4751037B2 (ja) メモリカード
CN101398759B (zh) 避免启动代码在数据段搬移时自我覆盖的方法
CN102023845B (zh) 一种基于状态机的Cache并发访问管理方法
CN102486719A (zh) 智能存储卡及其事物写的方法
CN111241008B (zh) 用于校正eeprom变量与地址的方法、装置和控制器
JP2008192208A (ja) 磁気ディスクコントローラおよび方法
CN109711183A (zh) 一种基于芯片dna的程序加密方法
CN102778645B (zh) 一种jtag主控制器及其实现方法
CN110209439A (zh) VxWorks的参数化配置方法
JP7303389B2 (ja) オートメーションシステムの制御プログラムのプログラム状態のデータ移行の過程でのポインタ要素のデータ移行の方法

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