CN1294482C - 支持16位和32位字宽存储器的启动方法及装置 - Google Patents
支持16位和32位字宽存储器的启动方法及装置 Download PDFInfo
- Publication number
- CN1294482C CN1294482C CNB200410046269XA CN200410046269A CN1294482C CN 1294482 C CN1294482 C CN 1294482C CN B200410046269X A CNB200410046269X A CN B200410046269XA CN 200410046269 A CN200410046269 A CN 200410046269A CN 1294482 C CN1294482 C CN 1294482C
- Authority
- CN
- China
- Prior art keywords
- instruction
- memory
- bit
- memory block
- word
- 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.)
- Expired - Lifetime
Links
- 230000015654 memory Effects 0.000 title claims abstract description 144
- 238000000034 method Methods 0.000 title claims abstract description 18
- 238000000151 deposition Methods 0.000 claims description 10
- 230000004048 modification Effects 0.000 claims description 9
- 238000012986 modification Methods 0.000 claims description 9
- 239000007858 starting material Substances 0.000 claims description 8
- 230000003044 adaptive effect Effects 0.000 abstract 1
- 230000005055 memory storage Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
Images
Landscapes
- Stored Programmes (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开一种支持16位和32位字宽存储器的启动方法和装置,应用于32位总线的包括处理器、存储控制器和存储器的系统。在芯片设计时先设定寄存器相应控制位的值,使存储控制器适应的初始存储器字宽为16位;对32位字宽存储器,依次设置第一至第四存储区,在一、三存储区,32位指令的高、低16位分别放入相邻两个存储器单元的低16位,在二、四存储区,每条指令放入一个存储器单元;启动后,在第一存储区执行跳转指令转入第三存储区,修改所述控制位的值,将存储控制器的存储器字宽设置改为32位,自动转入第二存储区,再执行跳转指令转入第四存储区继续执行。本发明不更改硬件结构,即可支持16位和32位字宽的存储器启动。
Description
技术领域
本发明涉及数据读取的方法和装置,尤其涉及读取非易失性存储器的数据的方法和装置。
背景技术
软硬件结合系统是在硬件结构的基础上进行软件开发,提供面向用户的应用。基于软件的灵活和易修改性,在不改变硬件的基础上可以提供多种应用。这类软硬件结合系统,例如,计算机、手机以及所有电脑控制的消费品,都是在系统上电后,启动软件代码,与硬件协作完成所需的功能应用。而这些软件代码必须保证存放在非易失性存储器中,并且在系统上电后,硬件系统会自动到该存储器中取指令并执行。
在处理芯片内部,存储器的地址都是以字节为单位的,即一个存储地址对应8位数据。通常32位处理器都认为每一个PC地址(内部程序指针地址)对应一个32位的数据。因此在芯片内部PC地址的最低两位是不关心的。在利用芯片进行电路板设计时,用户既可能选用32位数据宽度的存储器也可能选用16位宽度的存储器。这点从芯片设计的角度是不可预知的。需要芯片内部的存储控制器来做32位和16位数据宽度的转换。
如果外部存储器的数据宽度是32位,则一个芯片内部的一个32位存储器地址访问直接对应外部的一个外部存储器地址访问,存储控制器将芯片内部地址除以4(丢掉内部地址的最低两位)作为外部存储器地址;如果外部存储器的数据宽度是16位,存储控制器将芯片内部地址除以2(丢掉内部地址的最低一位)作为外部存储器地址,这时,一个芯片内部的32位存储器访问会对应两个外部的存储器地址,即每次一个内部的32位存储器访问会产生两个外部的16位存储器访问,存储控制器将两次16位的数据访问合并成一个32位的数据完成一次芯片内部的32位存储器访问。
由于不同的外部存储器数据宽度的配置会导致同样的内部地址输出不同的外部地址,所以即使PC地址不变,改变存储控制器的存储器宽度配置会使外部的存储器地址变化。例如,处理器对PC=0x0000001C进行访问时,配置为16位数据宽度时外部地址是0x0000000E,而且存储器会自动插入一个对地址0x0000000F的访问;而配置32位数据宽度时外部地址是0x00000007。
非易失性存储器可能是16位字宽,也可能是32位字宽。如果存储控制器原来配置的存储器字宽和实际使用的存储器字宽不同,处理器将不能正确从外部存储器取指。为了保证系统硬件可以正确的从存储器中取指令并执行,目前是从硬件上更改设计,为芯片提供额外的硬件管脚来做存储器宽度的配置,使之支持16位字宽或者32位字宽的存储器。这会导致仅仅由于存储器字宽的不同,就需要提供两种类型的硬件结构,而硬件结构的更改会带来很大的开销。
发明内容
本发明要解决的技术问题是提供一种不需改变硬件结构,即可支持16位和32位字宽存储器的启动方法。
为了解决上述技术问题,本发明提供了一种支持16位和32位字宽存储器的启动方法,应用于包括处理器、存储控制器和非易失性存储器的32位总线的系统,包括以下步骤:
(a)采用寄存器相应控制位的值来设置存储控制器所适应的存储器字宽,初始设置为16位,对16位字宽的非易失性存储器可正常取指并执行;
(b)对32位字宽的非易失性存储器,从起始位置依次设置第一至第四存储区,在第一、第三存储区,每条32位指令的高、低16位分别放入相邻的两个存储器单元的低16位,在第二、第四存储区,每条32位指令直接放入一个存储器单元;
(c)系统启动,在第一存储区执行了在该区存放的第一跳转指令后,转入第三存储区继续执行;
(d)在第三存储区执行在该区存放的修改所述控制位值的指令,将所述存储控制器的存储器字宽设置改为32位,自动转入第二存储区继续执行;
(e)在第二存储区执行了在该区存放的第二跳转指令后,转入第四存储区继续执行在该区存放的指令。
上述方法可具有以下特点:在所述第一、第三存储区,每条32位指令的低16位放在偶数标号的存储器单元,而该指令的高16位放在比偶数标号大1的相邻存储器单元。
上述方法可具有以下特点:所述步骤(c)在执行第一跳转指令之前,先执行在第一存储区该跳转指令之前存放的设置芯片内部寄存器的指令。
上述方法可具有以下特点:所述第一跳转指令、第二跳转指令、修改所述控制位值的指令,及第四存储区的指令之间存放有若干的空指令。
本发明要解决的另一技术问题是提供一种不需改变硬件结构,即可支持16位和32位字宽存储器的启动装置。
为了解决以上技术问题,本发明提供了一种支持16位和32位字宽存储器的启动装置,应用于32位总线的硬件系统,包括依次连接的处理器、存储控制器,以及16位或32位非易失性存储器,其特征在于:
所述存储控制器包括一寄存器,该寄存器相应控制位的值设置了所连接存储器的字宽,初始设置为16位;
所述32位存储器进一步包括第一至第四指令存储区域,在第一和第三指令存储区域,每条32位指令的高、低16位分别存放在相邻存储器单元的低16位,在第二和第四指令存储区域,每条32位指令存放在一个存储器单元,且第一存储区域存放有指向第三存储区域的第一跳转指令,第二存储区域存放有指向第四存储区域的第二跳转指令,第三存储区存放有修改所述控制位值的指令;
所述处理器用于在启动后从所述32位存储器取指执行,在第一指令存储区域执行所述第一跳转指令后,转入第三指令存储区域;在第三指令存储区域执行所述修改控制位值的指令后,将所述存储控制器的存储器字宽设置改为32位,自动转入第二指令存储区域;在第二指令存储区域执行了所述第二跳转指令后,转入第四指令存储区域继续执行在该区存放的指令。
上述启动装置可具有以下特点:在所述第一和第三指令存储区域,每条32位指令的低16位放在偶数标号的存储器单元,高16位放在比偶数标号大1的相邻存储器单元。
上述启动装置可具有以下特点:所述处理器在执行所述第一跳转指令、修改所述控制位值的指令、第二跳转指令及第四存储区的非空指令之间还执行若干不进行任何操作的空指令。
上述启动装置可具有以下特点:所述处理器在执行所述第一跳转指令之前,先执行若干设置芯片内部寄存器的指令。
由上可知,本发明在不更改硬件结构的基础上,通过在外部存储器中采用特别的指令结构放置特定的指令代码,从而达到可以利用软件来完成对外部存储器数据宽度的配置,使得相同的硬件结构即可以支持从16位存储器启动,又可以支持从32位存储器启动。
附图说明
图1是本发明实施例装置的结构示意图。
图2是本发明实施例存储器指令代码存放位置的示意图。
具体实施方式
现有技术是通过额外管脚的电平来控制字宽设置的,本发明改用存储控制器寄存器中相应的控制位的值来实现,以避免对硬件的改动。但由于最初的取指令操作发生在软件代码执行之前,该控制位的值并不能在一开始就用指令直接修改,必须巧妙地对指令进行设计。
如图1所示,本发明实施例装置是一种用于32位总线的硬件系统,它包含一款32位处理器1和一个存储控制器2,并通过存储控制器2与非易失性存储器3(如,FLASH)相连。
在硬件设计时,设置存储控制器适应的初始存储器字宽为16位。如果存储控制器接16位字宽存储器,硬件系统自然能够适应该存储器,正常取指并执行。假定存储控制器接的是32位字宽存储器,本实施例通过增加一部分软件代码以及巧妙地设计这些代码在存储器中的存放位置,来实现正常的取指和执行。
以下是在该存储器起始位置设置的指令代码示例,均为32位:
MOV r1,#0x02000000 ;instruction1
ADD r1,r1,#0x10000 ;instruction2
ADD r1,r1,#0xA000 ;instruction3
ADD r1,r1,#A4 ;instruction4
LDR r0,[r1] ;instruction5
LDR pc,=0x38 ;instruction6
NOP ;instruction7
NOP ;instruction8
NOP ;instruction9
NOP ;instruction10
NOP ;instruction11
NOP ;instruction12
NOP ;instruction13
NOP ;instruction14
NOP ;instruction15
NOP ;instruction16
NOP ;instruction17
NOP ;instruction18
LDR pc,=0xA0 ;instruction19
NOP ;instruction20
NOP ;instruction21
NOP ;instruction22
ORR r0,r0,#0x00000080 ;instruction23
STR r0,[r1] ;instruction24
NOP ;instruction25
NOP ;instruction26
NOP ;instruction27
NOP ;instruction28
NOP ;instruction29
NOP ;instruction30
LDR ;instruction31
其中:指令1到指令5为设置芯片内部寄存器的代码;指令6为跳转指令,跳到指令23的位置;指令7到指令18为空指令,不做任何实质操作,只占用处理器的周期,以保证处理器进行安全跳转;指令19为跳转指令,跳到指令29的位置;指令20到指令22为空指令;指令23和24完成对存储控制器寄存器中相位的字宽设置控制位的修改,由16位改为32位;指令25到30是空指令;指令31为其它需要执行的启动指令。各个指令均为32位指令。
图2示出了所需软件代码在存储器中的正确放置方法,图中有阴影的框表示存放有指令数据:
指令1到指令6,由于此时的存储器字宽设置为16位,为了保证正常取指执行,将32位指令的高16位放置在奇数标号的存储器单元的低16位,将低16位放置在偶数标号的存储器单元的低16位;指令7到指令22,为了保证存储器字宽设置改变后,回跳到该区域时能够正确取指令,将每条32位指令放入一个存储器单元(32位)中;指令23到指令28,是在存储器字宽设置为16位的情况下需要执行的指令,所以也按照指令1到指令6的规则来放置;从指令29开始,按照每条32位指令,占用一个存储器字宽的规则存入存储器中。
从存放方式来划分,可以将指令1到指令6所存放的区域划分为第一指令存储区域,将指令7到指令22所存放的区域划分为第二指令存储区域,将指令23到指令28所存放的区域划分为第三指令存储区域,将从指令29所在位置以后划分为第四指令存储区域。
图2还示出了软件启动的执行顺序:开始存储控制器的设置为16位字宽,从指令1到指令5进行芯片内部寄存器的设置,执行到指令6后,改变PC值,处理器取指位置发生变化,所以跳到第23条指令的位置;继续执行指令23和24,将存储控制器的存储器字宽设置更改为32位,由于该字宽设置的改变,虽然PC不变,但是处理器通过存储器取指令的外部存储器地址发生了改变,因而在执行完指令26后,会跳转回指令12所在的物理地址取指并执行;继续执行到跳转指令19,然后跳转到指令29进入正常32位指令存放区,此时存储控制器的存储器字宽设置已与实际存储器字宽一致且指令是按正常方式存放,即可正常取指并执行了。
综上所述,本发明在不更改硬件结构的基础上,巧妙的利用了存储控制器和外部存储器的特点,通过在外部存储器中采用特别的指令结构放置特定的指令代码,从而达到可以利用软件来完成对外部存储器数据宽度的配置,使得相同的硬件结构即可以支持从16位存储器启动,又可以支持从32位存储器启动,避免了硬件结构的更改带来的开销。
Claims (8)
1、一种支持16位和32位字宽存储器的启动方法,应用于包括处理器、存储控制器和非易失性存储器的32位总线的系统,包括以下步骤:
(a)采用寄存器相应控制位的值来设置存储控制器所适应的存储器字宽,初始设置为16位,对16位字宽的非易失性存储器可正常取指并执行;
(b)对32位字宽的非易失性存储器,从起始位置依次设置第一至第四存储区,在第一、第三存储区,每条32位指令的高、低16位分别放入相邻的两个存储器单元的低16位,在第二、第四存储区,每条32位指令直接放入一个存储器单元;
(c)系统启动,在第一存储区执行了在该区存放的第一跳转指令后,转入第三存储区继续执行;
(d)在第三存储区执行在该区存放的修改所述控制位值的指令,将所述存储控制器的存储器字宽设置改为32位,自动转入第二存储区继续执行;
(e)在第二存储区执行了在该区存放的第二跳转指令后,转入第四存储区继续执行在该区存放的指令。
2、如权利要求1所述的方法,其特征在于,在所述第一、第三存储区,每条32位指令的低16位放在偶数标号的存储器单元,高16位放在比偶数标号大1的相邻存储器单元。
3、如权利要求1所述的方法,其特征在于,所述步骤(c)在执行所述第一跳转指令之前,先执行在第一存储区该跳转指令之前存放的设置芯片内部寄存器的指令。
4、如权利要求1所述的方法,其特征在于,所述第一跳转指令、第二跳转指令、修改所述控制位值的指令,及第四存储区的指令之间存放有若干的空指令。
5、一种支持16位和32位字宽存储器的启动装置,应用于32位总线的硬件系统,包括依次连接的处理器、存储控制器,以及16位或32位非易失性存储器,其特征在于:
所述存储控制器包括一寄存器,该寄存器相应控制位的值设置了所连接存储器的字宽,初始设置为16位;
所述32位存储器进一步包括第一至第四指令存储区域,在第一和第三指令存储区域,每条32位指令的高、低16位分别存放在相邻存储器单元的低16位,在第二和第四指令存储区域,每条32位指令存放在一个存储器单元,且第一存储区域存放有指向第三存储区域的第一跳转指令,第二存储区域存放有指向第四存储区域的第二跳转指令,第三存储区存放有修改所述控制位值的指令;
所述处理器用于在启动后从所述32位存储器取指执行,在第一指令存储区域执行所述第一跳转指令后,转入第三指令存储区域;在第三指令存储区域执行所述修改控制位值的指令后,将所述存储控制器的存储器字宽设置改为32位,自动转入第二指令存储区域;在第二指令存储区域执行了所述第二跳转指令后,转入第四指令存储区域继续执行在该区存放的指令。
6、如权利要求5所述的方法,其特征在于,在所述第一和第三指令存储区域,每条32位指令的低16位放在偶数标号的存储器单元,高16位放在比偶数标号大1的相邻存储器单元。
7、如权利要求5所述的启动装置,其特征在于,所述处理器在执行所述第一跳转指令、修改所述控制位值的指令、第二跳转指令及第四存储区的非空指令之间还执行若干不进行任何操作的空指令。
8、如权利要求5所述的启动装置,其特征在于,所述处理器在执行所述第一跳转指令之前,先执行若干设置芯片内部寄存器的指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB200410046269XA CN1294482C (zh) | 2004-06-08 | 2004-06-08 | 支持16位和32位字宽存储器的启动方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB200410046269XA CN1294482C (zh) | 2004-06-08 | 2004-06-08 | 支持16位和32位字宽存储器的启动方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1584825A CN1584825A (zh) | 2005-02-23 |
CN1294482C true CN1294482C (zh) | 2007-01-10 |
Family
ID=34601969
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB200410046269XA Expired - Lifetime CN1294482C (zh) | 2004-06-08 | 2004-06-08 | 支持16位和32位字宽存储器的启动方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1294482C (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101957798A (zh) * | 2009-07-17 | 2011-01-26 | 旺宏电子股份有限公司 | 具有存储器集成电路的装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1159629A (zh) * | 1994-12-16 | 1997-09-17 | 摩托罗拉公司 | 用于可变宽度数据转移的可调深度/宽度先进先出缓冲器 |
WO2001009710A1 (de) * | 1999-07-28 | 2001-02-08 | Infineon Technologies Ag | Verfahren und vorrichtung zum schreiben und lesen eines pufferspeichers |
-
2004
- 2004-06-08 CN CNB200410046269XA patent/CN1294482C/zh not_active Expired - Lifetime
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1159629A (zh) * | 1994-12-16 | 1997-09-17 | 摩托罗拉公司 | 用于可变宽度数据转移的可调深度/宽度先进先出缓冲器 |
WO2001009710A1 (de) * | 1999-07-28 | 2001-02-08 | Infineon Technologies Ag | Verfahren und vorrichtung zum schreiben und lesen eines pufferspeichers |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101957798A (zh) * | 2009-07-17 | 2011-01-26 | 旺宏电子股份有限公司 | 具有存储器集成电路的装置 |
CN101957798B (zh) * | 2009-07-17 | 2015-08-19 | 旺宏电子股份有限公司 | 具有存储器集成电路的装置 |
Also Published As
Publication number | Publication date |
---|---|
CN1584825A (zh) | 2005-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1282089C (zh) | 控制串行快闪存储器中适当执行的装置和方法及相应芯片 | |
RU2450339C2 (ru) | Мультипроцессорная архитектура, оптимизированная для потоков | |
CN1516030A (zh) | 重排多个数据存取指令的方法与装置 | |
CN1890640A (zh) | 高效的系统管理同步和存储器分配 | |
CN1499530A (zh) | 非易失性存储器系统内有效允许失序写处理的方法和装置 | |
CN1912834A (zh) | 配有多媒体处理器的设备的多媒体程序下载控制系统和方法 | |
CN101061460A (zh) | 用于混移运算的微处理器设备和方法 | |
US20040193864A1 (en) | System and method for actively booting a computer system | |
CN1650259A (zh) | 具有非易失性存储器的集成电路以及用于从所述存储器中取数据的方法 | |
CN1294482C (zh) | 支持16位和32位字宽存储器的启动方法及装置 | |
CN108538332B (zh) | 与非门闪存的读取方法 | |
CN102184248A (zh) | 一种在Windows下调整磁盘分区的方法及装置 | |
CN1786910A (zh) | 一种bios在线升级方法 | |
US7649774B2 (en) | Method of controlling memory system | |
CN1447243A (zh) | 快闪存储器中快速且能防止不正常断电的演算法及其控制系统 | |
US11294781B2 (en) | Memory device and redundancy method applied thereto | |
EP2795455A1 (en) | Systems and methods for managing parallel access to multiple storage systems | |
CN1650257A (zh) | 互换地址寄存器所存内容的方法和设备 | |
CN1286008C (zh) | 一种实现单片机软件版本更新的方法和装置 | |
CN1534509A (zh) | 具有快速且预防不当操作功效的快闪记忆体演算法及其控制系统 | |
CN1473294A (zh) | 硬件环路 | |
CN100454252C (zh) | 一种cpu程序下载多个fpga文件的方法 | |
CN1690983A (zh) | 可循序写入数据至闪存中的系统及其方法 | |
CN1175354C (zh) | 交互式参数数据更新方法 | |
CN1821960A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CX01 | Expiry of patent term |
Granted publication date: 20070110 |