CN101251828B - 一种位宽自适应的存储器访问方法及系统 - Google Patents
一种位宽自适应的存储器访问方法及系统 Download PDFInfo
- Publication number
- CN101251828B CN101251828B CN2008100899375A CN200810089937A CN101251828B CN 101251828 B CN101251828 B CN 101251828B CN 2008100899375 A CN2008100899375 A CN 2008100899375A CN 200810089937 A CN200810089937 A CN 200810089937A CN 101251828 B CN101251828 B CN 101251828B
- Authority
- CN
- China
- Prior art keywords
- bit wide
- mode
- storer
- bit
- code
- 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 - Fee Related
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种位宽自适应的存储器访问方法,该方法包括:使用当前位宽模式读取存储器中设置的位宽检测信息,位宽检测信息的比特位数大于等于所述存储器支持的最大位宽;判断位宽检测信息的读取结果与设置的位宽检测信息是否一致,如果不是则调整位宽模式,使用调整后的位宽模式访问存储器,否则使用当前位宽模式访问存储器。本发明还公开了一种位宽自适应的存储器访问系统。应用本发明,可以基于低成本实现SoC对存储器进行位宽自适应的访问。
Description
技术领域
本发明涉及存储器访问技术,特别涉及一种位宽自适应的存储器访问方法及系统。
背景技术
片上系统(SoC,System on Chip)是一种系统级芯片,在该芯片中集成了其所在的整个应用系统的解决方案,应用系统中除SoC之外还包括存储器和相关外设等。SoC一般包括中央处理器(CPU,Central Process Unit)、总线、只读存储器(ROM,Read Only Memory)、各种存储器引导控制器和应用模块,其中存储器引导控制器负责以一定的位宽模式访问SoC外部的存储器。
应用系统开机后,SoC中的硬件CPU需要运行软件系统,其中获取软件系统代码并运行的过程就称为代码引导。一般情况下,上述软件系统代码可以存储在SoC内部的ROM中,也可以存储在SoC外部的存储器中。
应用系统中SoC外部的存储器包括安全数字(SD,Secure Digital)卡、与非型快闪存储器(Nandflash)、或非型快闪存储器(Norflash)等,根据应用需要可以选择不同类型的存储器。这些不同类型的存储器可能存在不同的位宽,因此为实现从存储器进行的代码引导,即实现获取存储器中的软件系统代码并且运行,在SoC设计中必须考虑不同位宽的总线访问机制,以满足SoC对外部不同位宽的存储器的访问。
以Norflash为例,其作为一种程序存储器在SoC设计中获得了广泛的应用,位宽包括8比特和16比特两种。目前为满足对不同位宽Norflash的访问需求,普遍的做法有以下两种:
第一、使用SoC上的一个引脚用于检测所连接的电平值,并设置不同电平值和Norflash位宽的关系,这样在该引脚上连接不同的电平时,SoC就可以通过对电平值的检测,实现对存储器位宽的检测,进而使用不同的位宽模式访问Norflash。例如,如果在该引脚连接的电平为3.3伏,SoC检测到后确定存储器的位宽为16比特,进而以16比特位宽模式访问Norflash,如果在该引脚连接的电平为0伏,SoC检测到后确定存储器的位宽为8比特,进而以8比特位宽模式访问Norflash。上述对Norflash的访问由SoC内部的Norflash引导控制器完成。
但是考虑到SoC的引脚有限,这种存储器位宽检测和存储器访问的方式浪费了引脚,从而限制了SoC功能上的扩展,使得SoC竞争力下降,同时在灵活性上也有所欠缺。
第二、在应用系统额外增加一个存储器,如电可擦写可编程只读存储器(EEPROM,Electrically Erasable Programmable Read Only Memory),在该增加的存储器中写入Norflash引导控制器位宽模式切换程序,通过对该程序的运行实现对Norflash引导控制器位宽模式的切换。由于设计人员会预先知晓所使用的Norflash位宽,因此可以将Norflash引导控制器位宽模式切换程序写入增加的存储器中,这样当SoC上电后运行增加的存储器中的程序,即可以将Norflash引导控制器的位宽模式切换成与所使用的Norflash相同。
该方法在设计人员已知使用的Norflash位宽的情况下,通过增加存储Norflash控制器位宽模式切换程序的存储器,实现SoC上电后对Norflash引导控制器位宽模式的切换,但同时增加了整个SoC设计的成本,也会使得SoC的竞争力下降。另外,该方法也无法实现对Norflash位宽的检测。
可见,目前针对SoC的应用,还未出现既能节约成本又能进行位宽自适应的存储器访问方法。
发明内容
本发明提供一种位宽自适应的存储器访问方法,使用该方法可以基于低成本实现SoC对存储器进行位宽自适应的访问。
本发明提供一种位宽自适应的存储器访问系统,使用该系统可以基于低成本实现SoC对存储器进行位宽自适应的访问。
本发明的技术方案是这样实现的:
一种位宽自适应的存储器访问方法,该方法包括:
使用当前位宽模式读取存储器中设置的位宽检测信息一次以上,将存储器中设置的位宽检测信息读出,所述设置的位宽检测信息的比特位数大于等于所述存储器的位宽;
判断位宽检测信息的读取结果与所述设置的位宽检测信息是否一致,如果不是则调整位宽模式、使用调整后的位宽模式访问存储器,否则使用当前位宽模式访问存储器;
所述调整位宽模式包括:
当所述读取结果的一部分仅包括设置的位宽检测信息中的数据、另一部分仅包括未知数时,将默认位宽模式的位宽比特位数加上一次读取中包括的未知数的比特位数、作为调整后的位宽模式;
当每次读取中既包括所述设置的位宽检测信息中的数据、又包括随机数时,将默认位宽模式的位宽比特位数减去一次读取中包括的随机数的比特位数,作为调整后的位宽模式。
较佳地,所述访问存储器之后进一步包括:进行代码引导;
所述进行代码引导为:将程序运行进程跳转至存储器中,运行存储器中的软件系统代码,或者读取存储器中的软件系统代码至其他存储器运行,其中将程序运行进程跳转至存储器时,避开所述设置的位宽检测信息占用的存储地址。
较佳地,所述存储器为或非型快闪存储器Norflash或者与非型快闪存储器Nandflash。
一种位宽自适应的存储器访问方法,该方法包括:
使用当前位宽模式读取存储器中设置的位宽检测信息一次以上,将存储器中设置的位宽检测信息读出,所述设置的位宽检测信息的比特位数大于等于所述存储器的位宽;
判断位宽检测信息的读取结果与所述设置的位宽检测信息是否一致,如果不是,则调整位宽模式、并返回执行使用当前位宽模式读取存储器中设置的位宽检测信息的步骤,直至位宽检测信息的读取结果与所述设置的位宽检测信息一致时,使用调整后的位宽模式访问存储器,否则使用当前位宽模式访问存储器;
所述调整位宽模式包括:
当所述读取结果的一部分仅包括设置的位宽检测信息中的数据,另一部分仅包括未知数时,增大当前位宽模式的位宽比特位数,作为调整后的位宽模式;
当每次读取中既包括所述设置的位宽检测信息中的数据、又包括随机数时,减小当前位宽模式的位宽比特位数,作为调整后的位宽模式。
较佳地,所述访问存储器之后进一步包括:进行代码引导;
所述进行代码引导为:将程序运行进程跳转至存储器中,运行存储器中的软件系统代码,或者读取存储器中的软件系统代码至其他存储器运行,其中将程序运行进程跳转至存储器时,避开所述设置的位宽检测信息占用的存储地址。
较佳地,所述存储器为或非型快闪存储器Norflash,或者与非型快闪存储器Nandflash。
一种位宽自适应的存储器访问系统,该系统包括:
存储器引导控制模块,用于使用当前位宽模式读取存储器中设置的位宽检测信息一次以上,将存储器中设置的位宽检测信息读出,所述设置的位宽检测信息的比特位数大于等于所述存储器的位宽;根据确定的位宽模式调整方式,调整位宽模式、使用调整后的位宽模式访问存储器,或者使用当前位宽模式访问存储器;
位宽选择模块,用于判断所述位宽检测信息的读取结果是否与所述设置的位宽检测信息是否一致,如果不是确定存储器引导控制模块位宽模式的调整方式,否则确定存储器引导控制模块使用当前位宽模式;
所述位宽选择模块包括:
第一位宽检测单元,用于判断所述位宽检测信息的读取结果与所述设置的位宽检测信息是否一致;
第一位宽模式调整单元,用于在第一位宽检测单元判断所述位宽检测信息的读取结果与所述设置的位宽检测信息不一致时,如果所述读取结果的一部分仅包括设置的位宽检测信息中的数据、另一部分仅包括未知数,确定存储器引导控制模块位宽模式的调整方式为,将默认位宽模式的位宽比特位数加上一次读取中包括的未知数的比特位数,如果所述存储器引导控制模块每次读取中既包括所述设置的位宽检测信息、又包括随机数,确定存储器引导控制模块位宽模式的调整方式为,将默认位宽模式的位宽比特位数减去一次读取中包括的随机数的比特位数;在第一位宽检测单元判断所述位宽检测信息的读取结果与所述设置的位宽检测信息一致时,确定存储器引导控制模块使用当前位宽模式。
较佳地,该系统中还包括:代码引导方式确定单元,用于确定代码引导方式为将程序运行进程跳转至存储器,运行存储器中的软件系统代码;或者确定代码引导方式为读取存储器中的软件系统代码至其他存储器运行;所述代码引导方式用于存储器引导控制模块进行代码引导;
所述存储器引导控制模块包括:
位宽检测信息读取单元,用于使用当前位宽模式读取存储器中的位宽检测信息,所述设置的位宽检测信息的比特位数大于等于所述存储器的位宽;
位宽模式调整执行单元,用于根据确定的位宽调整方式调整位宽模式;
代码引导执行单元,用于当所述代码引导方式确定单元确定的代码引导方式为将程序运行进程跳转至存储器、运行存储器中的软件系统代码时,使用调整后的位宽模式或当前位宽模式访问存储器,将程序运行进程跳转至存储器,运行存储器中的软件系统代码;当所述代码引导方式确定单元确定代码引导方式为读取存储器中的软件系统代码至其他存储器运行时,使用调整后的位宽模式或当前位宽模式访问存储器,读取存储器中的软件系统代码至其他存储器运行。
较佳地,所述存储器为Norflash或Nandflash。
一种位宽自适应的存储器访问系统,该系统包括:
存储器引导控制模块,用于使用当前位宽模式读取存储器中设置的位宽检测信息一次以上,将存储器中设置的位宽检测信息读出,所述设置的位宽检测信息的比特位数大于等于所述存储器的位宽;根据确定的位宽模式调整方式调整位宽模式,并在位宽选择模块判断所述位宽检测信息的读取结果与所述设置的位宽检测信息一致时,使用调整后的位宽模式访问存储器;或者使用当前位宽模式访问存储器;
位宽选择模块,用于判断所述位宽检测信息的读取结果与所述设置的位宽检测信息是否一致,如果不是确定存储器引导控制模块位宽模式的调整方式,否则确定存储器引导控制模块使用当前位宽模式;
所述位宽选择模块包括:
第二位宽检测单元,用于判断所述位宽检测信息的读取结果与所述设置的位宽检测信息是否一致;
第二位宽模式调整单元,用于在所述第二位宽检测单元判断所述位宽检测信息的读取结果与所述设置的位宽检测信息不一致时,如果所述读取结果的一部分仅包括设置的位宽检测信息中的数据,另一部分仅包括未知数,确定存储器引导控制模块位宽模式的调整方式为,增大当前位宽模式的位宽比特位数,如果所述存储器引导控制模块每次读取中既包括所述设置的位宽检测信息中的数据、又包括随机数时,确定存储器引导控制模块位宽模式的调整方式为,减小当前位宽模式的位宽比特位数;在所述第二位宽检测单元判断所述位宽检测信息的读取结果与所述设置的位宽检测信息一致时,确定存储器引导控制模块使用当前位宽模式。
较佳地,该系统中还包括:代码引导方式确定单元,用于确定代码引导方式为将程序运行进程跳转至存储器,运行存储器中的软件系统代码;或者确定代码引导方式为读取存储器中的软件系统代码至其他存储器运行;所述代码引导方式用于存储器引导控制模块进行代码引导;
所述存储器引导控制模块包括:
位宽检测信息读取单元,用于使用当前位宽模式读取存储器中的位宽检测信息,所述设置的位宽检测信息的比特位数大于等于所述存储器的位宽;
位宽模式调整执行单元,用于根据所述位宽选择模块确定的位宽调整方式,调整位宽模式;
代码引导执行单元,用于当所述代码引导方式确定单元确定的代码引导方式为将程序运行进程跳转至存储器、运行存储器中的软件系统代码时,在位宽选择模块判断所述位宽检测信息的读取结果与所述设置的位宽检测信息一致时,使用调整后的位宽模式访问存储器,将程序运行进程跳转至存储器,运行存储器中的软件系统代码,或使用当前位宽模式访问存储器,将程序运行进程跳转至存储器,运行存储器中的软件系统代码;当所述代码引导方式确定单元确定代码引导方式为读取存储器中的软件系统代码至其他存储器运行时,在位宽选择模块判断所述位宽检测信息的读取结果与所述设置的位宽检测信息一致时,使用调整后的位宽模式访问存储器,读取存储器中的软件系统代码至其他存储器运行,或使用当前位宽模式访问存储器,读取存储器中的软件系统代码至其他存储器运行。
较佳地,所述存储器为Norflash或Nandflash。
可见,本发明位宽自适应的存储器访问方法和系统,使用当前位宽模式读取存储器中设置的位宽检测信息,判断位宽检测信息的读取结果与设置的位宽检测信息是否一致时,如果不是则调整位宽模式,并使用调整后的位宽模式访问存储器,否则使用当前位宽模式访问存储器。从而在不浪费引脚或不增加额外的存储器的情况下,基于对位宽检测信息的读取结果的判断,实现了对存储器的位宽自适应的访问,即基于低成本实现了SoC对存储器进行位宽自适应的访问。
附图说明
图1为本发明位宽自适应的存储器访问方法的流程图;
图2为本发明位宽自适应的存储器访问方法的实施例的流程图;
图3为本发明位宽自适应的存储器访问系统的一种结构示意图。
具体实施方式
为使本发明的目的和优点更加清楚,下面结合附图和实施例对本发明作进一步的详细说明,这些说明是非限制性的。
首先,介绍本发明位宽自适应的存储器访问方法。
图1为本发明位宽自适应的存储器访问方法的流程图,该流程包括:
步骤101:使用当前位宽模式读取存储器中设置的位宽检测信息。
本步骤中,存储器中可以设置存储位宽检测信息的预定义存储空间,该空间可以位于存储器中的任意存储位置。所设置的位宽检测信息的比特位数,应该大于等于存储器的位宽。
步骤102:判断位宽检测信息的读取结果与设置的位宽检测信息是否一致,如果不是则调整位宽模式并执行步骤103,否则使用当前位宽模式访问存储器。
本步骤中,设置的位宽检测信息除了存储在待访问的SoC外部的存储器中之外,也存储在SoC内部的存储器,例如ROM中。使用该预设存储的相同位宽检测信息,可以针对不同位宽模式和不同存储器的实际位宽组合进行判断,以检测存储器的实际位宽。对于设置的位宽检测信息,位宽检测信息的读取结果,根据当前位宽模式的不同可以有不同的情况。
例如,假设设置的位宽检测信息为4个字节32比特,如果当前位宽模式为16比特,则需读取两次才能完成位宽检测信息的读取。当使用当前位宽模式读取16比特位宽的存储器中设置的位宽检测信息时,第一次读取时,以位宽检测信息的首地址为起始,连续读取两个存储地址中的数据,由于存储器的位宽也是16比特,第一次读取时存储器实际输出的也是16比特数据,第二次读取时,以第一次读取完成后的地址(即第17比特)为起始,第二次读取时存储器实际输出的也是16比特,读取完成后可以得到与设置的位宽检测信息一致的32比特数值。使用当前位宽模式读取8比特位宽的存储器中设置的位宽检测信息时,第一次读取时仍以位宽检测信息的首地址为起始,但由于存储器的位宽是8比特,第一次读取时存储器实际只输出8比特数据,第一次读取结果中除包括8比特数据外还包括8比特随机数,这里的随机数不是存储在存储器中的数据,而是在读取过程中随机产生的,第二次读取时同样以第一次读取完成后的地址(即第17比特)为起始,第二次读取时存储器实际输出的也是8比特,第二次读取结果中除包括8比特数据外还包括8比特随机数,读取完成后,每次读取结果中都既包括位宽检测信息中的数据又包括随机数。
又例如,还是使用相同的32比特位宽检测信息,如果当前位宽模式为8比特,共需读取4次完成位宽检测信息的读取。当使用当前位宽模式读取8比特位宽的存储器中设置的位宽检测信息时,依据相同原理,读取完成后可以得到与设置的位宽检测信息一致的32比特数值。当使用当前位宽模式读取16比特位宽的存储器中的位宽检测信息时,第一次读取同样以位宽检测信息的首地址为起始,由于存储器的位宽为16比特,则存储器实际会输出16比特数据,这样在第一次读取时会丢失低位存储字节中8比特的数据,第二次读取时,虽然第一次只读取了8比特,但是存储器基于实际位宽,在第二次读取中实际从第17比特开始输出数据,因此在第二次读取时会丢失高位存储字节中8比特的数据,后续的第三次读取和第四次读取中,存储器输出的实际已不是位宽检测信息,而是存储在存储器中其他位置的未知数,这样在读取完成后,一部分读取结果中仅包括设置的位宽检测信息中的数据,而另一部分读取结果中仅包括未知数。
关于上述读取结果与设置的位宽检测信息不一致的情况,上述描述仅是概述性说明,后文将在具体实施例中进一步详细说明。
因此,如果当前位宽模式与存储器的实际位宽不相同,位宽检测信息的读取结果必然与设置的位宽检测信息不一致,根据这一点可以对位宽模式进行自适应调整。
根据对位宽检测信息的读取结果的判断,可以以不同的方式进行位宽模式的调整。例如如果存储器的实际位宽大于当前位宽模式,并且位宽检测信息的读取结果中,一部分读取结果中仅包括设置的位宽检测信息中的数据、另一部分读取结果中仅包括未知数时,将当前位宽模式的位宽比特位数加上一次读取结果中包括的未知数的比特数;当存储器的实际位宽小于所述当前位宽模式,并且每次读取结果中既包括所述设置的位宽检测信息的数据又包括随机数时,将当前位宽模式的位宽比特位数减去一次读取结果中包括的随机数的比特数。基于这种位宽模式的调整方式中,判断位宽检测信息的读取结果只需进行一次,当前位宽模式其实就是默认位宽模式。
又例如,如果存储器的实际位宽大于当前位宽模式,位宽检测信息的读取结果中,一部分读取结果中仅包括设置的位宽检测信息中的数据、另一部分读取结果中仅包括未知数,则增大当前位宽模式的位宽比特位数,如将8比特调整为16比特,如果存储器的实际位宽小于所述默认位宽模式,每次读取结果中既包括所述设置的位宽检测信息中的数据又包括随机数,则将减小当前位宽模式的位宽比特位数,如将16比特调整为8比特。在这种位宽模式的调整方式中,每次判断位宽检测信息的读取结果之后,由于增大或减小当前位宽模式的位宽比特位数之后并不一定与存储器的实际位宽相同,所以还需返回执行步骤101,直到位宽检测信息读取结果与设置的位宽检测信息一致时,才继续执行步骤103。在第一次判断中,当前位宽模式指的是默认位宽模式,而在第一次之后的判断中,当前位宽模式指的是上一次判断中对默认位宽模式调整后的位宽模式。
步骤103:使用调整后的位宽模式访问存储器。
本发明位宽自适应的存储器访问方法,使用当前位宽模式读取存储器中的位宽检测信息,判断位宽检测信息的读取结果与设置的位宽检测信息是否一致,如果不是则调整位宽模式,并使用调整后的位宽模式访问存储器,否则使用当前位宽模式访问存储器。从而在不浪费引脚或不增加额外的存储器的情况下,基于对位宽检测信息的读取结果的判断,实现了对存储器的位宽自适应的访问,即基于低成本实现了SoC对存储器进行位宽自适应的访问。
下面以存储器为Norflash为例,举出本发明存储器访问方法的一个具体实施例,在该实施例中以访问存储器进行代码引导为例。
在本实施例中,SoC内部ROM中固化有Norflash引导控制器的位宽选择程序,SoC上电后自动运行该程序。本发明方法中所介绍过的,根据位宽检测信息读取结果判断存储器的实际位宽、对Norflash引导控制器位宽模式的自适应调整、以及进行代码引导,都可以由上述Norflash引导控制器的位宽选择程序中不同部分的运行结果来触发操作,具体来说,上述Norflash引导控制器的位宽选择程序可以包括以下三个部分:
1)检测Norflash是否存在以及具体位宽的程序;
2)根据位宽检测结果自适应调整Norflash引导控制器位宽模式的程序;
3)在位宽自适应调整之后,从Norflash中读取软件系统代码运行或者跳转至Norflash运行软件系统代码的程序;这里所举出的是从Norflash进行代码引导的两种具体实现方式,其中读取软件系统代码运行为,从Norflash中读取软件系统代码至其他存储器,然后在其他存储器中运行读取的软件系统代码,而跳转至Norflash运行软件系统代码为,将SoC的代码运行进程直接跳转至Norflash,在Norflash中运行软件系统代码。
在本实施例中,Norflash作为程序存储器使用,包括8比特位宽或16比特位宽两种情况,位宽检测信息设置为大于16比特。Norflash中建立有预定义存储空间,这一部分空间可以灵活设置,如包括一个字节、两个字节、四个字节或八个字节,在预定义存储空间中存储位宽检测信息。本实施例中采用Norflash地址编号为0x00~0x03的四个字节存储32比特位宽检测信息0x55aa0106,其中0x55aa表示Norflash存在,0x0106表示Norflash位宽为16比特,读取方式为从低比特位到高比特位。默认位宽模式可以设置为16比特或8比特中的任意一种。
假设Norflash引导控制器的默认位宽模式为16比特,从Norflash引导控制器的角度来说,需要进行两次读取才能完成32比特位宽检测信息的读取。基于这种假设有以下两种可能的情况:
①如果Norflash的位宽为8比特,当第一次读取时,Norflash引导控制器发出选通信号、读信号和位宽检测信息首地址信号至Norflash,由于Norflash的位宽为8比特,实际返回数据0x06,而由于默认位宽模式为16比特,Norflash引导控制器得到第一次读取结果为0xXX06,其中X代表随机数,接着Norflash引导控制器进行第二次读取,同样的过程后Norflash实际返回数据0xaa,还是由于默认位宽模式为16比特,其Norflash引导控制器得到第二次读取结果为0xXXaa,其中X代表随机数,因此读取结束后得到读取结果为0xXXaaXX06,即每次读取的结果中既包括位宽检测信息中的数据、又包括随机数;
②如果Norflash的位宽为16比特,则按照与上述①中读取数据相同的方式,在读取完成后可以得到读取结果为0x55aa0106,即读取结果与设置的位宽检测信息完全一致。
假设Norflash引导控制器的默认位宽模式为8比特,从Norflash引导控制器的角度来说,需要进行四次读取才能完成32比特位宽检测信息的读取。基于这种假设有以下两种可能的情况:
①如果Norflash的位宽为16比特,当第一次读取时,Norflash引导控制器发出选通信号、读信号和第0个地址信号至Norflash,由于Norflash的位宽为16比特,实际返回数据为0x0106,但由于Norflash引导控制器是8比特位宽,所以只会读取到数据0x06,0x01将被丢掉。接着Norflash引导控制器会按照同样方式进行第二次读取,此时Norflash实际返回数据为0x55aa,同样的,Norflash引导控制器只会读取到0xaa,而0x55将被丢掉。Norflash引导控制器接下来会进行第三次和第四次读取,由于Norflash中位宽检测信息的内容实际已经读取完毕,所以Norflash引导控制器进行第三次和第四次读取时,将读取Norflash中存储未知内容的空间,控制器会得到0xYYYY这样的数据,其中Y代表未知数。因此在读取完成后,Norflash引导控制器获得的读取结果为0xYYYYaa06,即一部分读取结果中仅包括设置的位宽检测信息中的数据,而另一部分读取结果中仅包括未知数。
②如果Norflash的位宽为8比特,按照与上述①中读取数据相同的方式,在读取完成后可以得到读取结果为0x55aa0106,即读取结果与设置的位宽检测信息完全一致。
通过上述两种假设的应用场景可以看出,只有读取结果与设置的位宽检测信息一致时才能判断位宽模式与Norflash的位宽相同。
基于上述为本实施例假设的应用场景,图2为本发明位宽自适应的存储器访问方法的实施例流程图,该流程以访问Norflash进行代码引导为例。图2所示流程包括:
步骤201:对SoC所在的应用系统进行初始化。这一步骤采用通用方法即可实现,不再赘述。
步骤202:配置SoC内部的Norflash控制器的当前位宽模式为16比特。
步骤203:使用当前位宽模式读取Norflash中的位宽检测信息。
步骤204:判断16比特的Norflash是否存在,如果是,直接执行步骤208,否则,继续执行步骤205。
在本步骤中,通过运行Norflash控制器的位宽选择程序的第1)部分进行判断,步骤203中读取的位宽检测信息是第1)部分程序的执行条件,当位宽检测信息的读取结果为0x55aa0106时,第1)部分程序的运行结果为16比特的Norflash存在。
步骤205:判断8比特的Norflash是否存在,如果是,直接执行步骤207,否则,继续执行步骤206。
在本步骤中,通过运行Norflash控制器的位宽选择程序的第1)部分进行判断,步骤203中读取的位宽检测信息为第1)部分程序的执行条件,当位宽检测信息的读取结果为0xXXaaXX08时,第1)部分程序的运行结果为8比特的Norflash存在。
上述步骤204和步骤205的执行并无严格顺序关系,也可以先判断8比特的Norflash是否存在,再判断16比特的Norflash是否存在。
步骤206:继续SoC内部ROM中其他程序的执行流程,然后结束本流程。
步骤207:将Norflash控制器的位宽模式自适应调整为8比特。
本步骤中,通过运行Norflash控制器的位宽选择程序的第2)部分触发自适应调整,第1)部分程序得出的Norflash的实际位宽与默认位宽模式不相同,是该第2)部分程序的执行条件。第2)部分程序的运行结果,触发Norflash控制器将位宽模式自适应调整为与Norflash实际位宽相同的8比特。
步骤208:按照自适应调整后的位宽模式,将SoC中的程序运行进程跳转至Norflash中,继续运行软件系统代码,或者Norflash控制器读取Norflash中的软件系统代码至其他存储器再运行。
在本步骤中,通过运行Norflash控制器位宽选择程序的第3)部分触发代码引导,第1)部分程序得出Norflash的实际位宽与默认位宽模式相同,或者第2)部分程序得出自适应调整Norflash控制器的位宽模式,是第3)部分程序的执行条件。如果第3)部分程序为跳转程序,则SoC中的CPU将代码地址修改为Norflash的地址,之后CPU代码执行将通过Norflash引导控制器直接在Norflash中继续运行软件系统代码,跳转时需避开预定义存储空间,按照本实施例的应用场景假设,预定义存储空间包括0x00~0x03字节,则上述跳转时必须跳转至0x04字节进行软件系统代码的运行;如果该部分程序为读取执行程序,则SoC中的CPU触发Norflash引导控制器将Norflash中的软件系统代码读取至其他存储器,再在该其他存储器中继续运行软件系统代码。上述两种代码引导的具体方式可以根据实际需要选择其一。
在本实施例中所举出的Norflash的位宽只是一种具体的举例,在实际应用中还有可能出现如32比特、64比特的位宽,但无论Norflash的位宽具体为多少比特,只要按照本发明所介绍的方法,均能实现位宽自适应的代码引导。另外,除Norflash之外,其他存储器,例如Nandflash也同样可以按照该方法实现位宽自适应的代码引导。
其次,介绍本发明位宽自适应的存储器访问系统。
图3为本发明位宽自适应的存储器访问系统的一种结构示意图,该系统包括:
存储器引导控制模块,用于使用当前位宽模式读取存储器中的位宽检测信息,所述设置的位宽检测信息的比特位数大于等于所述存储器的位宽;根据确定的位宽模式调整方式,调整位宽模式,使用调整后的位宽模式访问存储器,或者使用当前位宽模式访问存储器。
位宽选择模块,用于在判断所述位宽检测信息的读取结果与设置的位宽检测信息是否一致,如果不是确定存储器引导控制模块位宽模式的调整方式,否则确定存储器引导控制模块使用当前位宽模式。
本发明位宽自适应的存储器访问系统,由位宽选择模块判断位宽检测信息的读取结果与设置的位宽检测信息是否一致,如果不是确定存储器引导控制模块的位宽模式,否则确定存储器引导控制模块使用当前位宽模式;由存储器引导控制模块读取存储器中的位宽检测信息,并使用调整后的位宽模式访问存储器,或者使用当前位宽模式访问存储器。在不浪费引脚或额外的存储器的情况下,基于对位宽检测信息的读取结果的判断,实现了对存储器的位宽自适应的访问,即基于低成本实现了SoC对存储器进行位宽自适应的访问。
在本发明位宽自适应的存储器访问系统中,位宽选择模块的内部结构可以包括两种情况。
第一种位宽选择模块中可以包括:
第一位宽检测单元,用于判断所述位宽检测信息的读取结果是否与设置的位宽检测信息一致。
第一位宽模式调整单元,用于在第一位宽检测单元的判断所述位宽检测信息的读取结果与所述设置的位宽检测信息不一致时,如果所述存储器引导控制模块在位宽检测信息读取完成之前的每次读取结果中,一部分读取结果中仅包括设置的位宽检测信息中的数据、另一部分读取结果中仅包括未知数,确定存储器引导控制模块位宽模式的调整方式为,将当前位宽模式的位宽比特位数加上一次读取结果中包括的未知数的比特位数,如果所述存储器引导控制模块的每次读取结果中既包括所述设置的位宽检测信息中的数据、又包括随机数时,确定存储器引导控制模块位宽模式的调整方式为,将当前位宽模式的位宽比特位数减去一次读取结果中包括的随机数的比特位数;在第一位宽检测单元判断所述位宽检测信息的读取结果与所述设置的位宽检测信息一致时,确定存储器引导控制模块使用当前位宽模式。
第二种位宽选择模块中可以包括:
第二位宽检测单元,用于判断所述位宽检测信息的读取结果与所述设置的位宽检测信息是否一致。
第二位宽模式调整单元,用于在所述第二位宽检测单元判断所述位宽检测信息的读取结果与所述设置的位宽检测信息不一致时,如果所述存储器引导控制模块在所述位宽检测信息读取完成之前的每次读取结果中,一部分读取结果中仅包括设置的位宽检测信息中的数据,另一部分读取结果中仅包括未知数,确定存储器引导控制模块位宽模式的调整方式为,增大当前位宽模式的位宽比特位数;如果所述存储器引导控制模块每次读取结果中既包括所述设置的位宽检测信息中的数据、又包括随机数时,确定存储器引导控制模块位宽模式的调整方式为,减小当前位宽模式的位宽比特位数。
在本发明位宽自适应的存储器访问系统中,还可以包括代码引导方式确定单元,用于确定代码引导方式为将程序运行进程跳转至存储器,运行存储器中的软件系统代码;或者确定代码引导方式为读取存储器中的软件系统代码至其他存储器运行。上述代码引导方式用于存储器引导控制模块进行代码引导。
在上述系统中还包括代码引导确定单元的基础上,存储器引导控制模块可以包括:
位宽检测信息读取单元,用于使用当前位宽模式读取存储器中的位宽检测信息,所述设置的位宽检测信息的比特位数大于等于所述存储器的位宽。
位宽模式调整执行单元,用于根据所述位宽选择模块确定的位宽调整方式,调整位宽模式。
代码引导执行单元,用于当所述代码引导方式确定单元确定的代码引导方式为将程序运行进程跳转至存储器、运行存储器中的软件系统代码时,使用调整后的位宽模式或当前位宽模式访问存储器,将程序运行进程跳转至存储器,运行存储器中的软件系统代码;当所述代码引导方式确定单元确定代码引导方式为读取存储器中的软件系统代码至其他存储器运行时,使用调整后的位宽模式或当前位宽模式访问存储器,读取存储器中的软件系统代码至其他存储器运行。
通过对本发明系统中各模块内部结构的介绍可以看出,从存储器进行代码引导可以有两种具体的实施方式,第一为跳转至存储器中,运行存储器中的软件系统代码,第二为读取存储器中的软件系统代码至其他存储器运行,根据实际情况选择一种具体实施方式即可。
本发明系统可以按照前述介绍的本发明方法工作,如果具体到方法中所举出的具体实施例,位宽选择模块就相当于方法实施例中固化有存储器控制器位宽选择程序的ROM,其工作流程与方法中介绍的相同,这里不再赘述。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种位宽自适应的存储器访问方法,其特征在于,该方法包括:
使用当前位宽模式读取存储器中设置的位宽检测信息一次以上,将存储器中设置的位宽检测信息读出,所述设置的位宽检测信息的比特位数大于等于所述存储器的位宽;
判断位宽检测信息的读取结果与所述设置的位宽检测信息是否一致,如果不是,则调整位宽模式、使用调整后的位宽模式访问存储器,否则使用当前位宽模式访问存储器;
所述调整位宽模式包括:
当所述读取结果的一部分仅包括设置的位宽检测信息中的数据、另一部分仅包括未知数时,将默认位宽模式的位宽比特位数加上一次读取中包括的未知数的比特位数、作为调整后的位宽模式;
当每次读取中既包括所述设置的位宽检测信息中的数据、又包括随机数时,将默认位宽模式的位宽比特位数减去一次读取中包括的随机数的比特位数,作为调整后的位宽模式。
2.如权利要求1所述的方法,其特征在于,所述访问存储器之后进一步包括:进行代码引导;
所述进行代码引导为:将程序运行进程跳转至存储器中,运行存储器中的软件系统代码,或者读取存储器中的软件系统代码至其他存储器运行,其中将程序运行进程跳转至存储器时,避开所述设置的位宽检测信息占用的存储地址。
3.如权利要求1所述的方法,其特征在于,所述存储器为或非型快闪存储器Norflash或者与非型快闪存储器Nandflash。
4.一种位宽自适应的存储器访问方法,其特征在于,该方法包括:
使用当前位宽模式读取存储器中设置的位宽检测信息一次以上,将存储器中设置的位宽检测信息读出,所述设置的位宽检测信息的比特位数大于等于所述存储器的位宽;
判断位宽检测信息的读取结果与所述设置的位宽检测信息是否一致,如果不是,则调整位宽模式、并返回执行使用当前位宽模式读取存储器中设置的位宽检测信息的步骤,直至位宽检测信息的读取结果与所述设置的位宽检测信息一致时,使用调整后的位宽模式访问存储器,否则使用当前位宽模式访问存储器;
所述调整位宽模式包括:
当所述读取结果的一部分仅包括设置的位宽检测信息中的数据、另一部分仅包括未知数时,增大当前位宽模式的位宽比特位数,作为调整后的位宽模式;
当每次读取中既包括所述设置的位宽检测信息中的数据、又包括随机数时,减小当前位宽模式的位宽比特位数,作为调整后的位宽模式。
5.如权利要求4所述的方法,其特征在于,所述访问存储器之后进一步包括:进行代码引导;
所述进行代码引导为:将程序运行进程跳转至存储器中,运行存储器中的软件系统代码,或者读取存储器中的软件系统代码至其他存储器运行,其中将程序运行进程跳转至存储器时,避开所述设置的位宽检测信息占用的存储地址。
6.如权利要求4所述的方法,其特征在于,所述存储器为或非型快闪存储器Norflash或者与非型快闪存储器Nandflash。
7.一种位宽自适应的存储器访问系统,其特征在于,该系统包括:
存储器引导控制模块,用于使用当前位宽模式读取存储器中设置的位宽检测信息一次以上,将存储器中设置的位宽检测信息读出,所述设置的位宽检测信息的比特位数大于等于所述存储器的位宽;根据确定的位宽模式调整方式,调整位宽模式、使用调整后的位宽模式访问存储器,或者使用当前位宽模式访问存储器;
位宽选择模块,用于判断所述位宽检测信息的读取结果与所述设置的位宽检测信息是否一致,如果不是确定存储器引导控制模块位宽模式的调整方式,否则确定存储器引导控制模块使用当前位宽模式;
所述位宽选择模块包括:
第一位宽检测单元,用于判断所述位宽检测信息的读取结果与所述设置的位宽检测信息是否一致;
第一位宽模式调整单元,用于在第一位宽检测单元判断所述位宽检测信息的读取结果与所述设置的位宽检测信息不一致时,如果所述读取结果的一部分仅包括设置的位宽检测信息中的数据、另一部分仅包括未知数,确定存储器引导控制模块位宽模式的调整方式为,将默认位宽模式的位宽比特位数加上一次读取中包括的未知数的比特位数,如果所述存储器引导控制模块每次读取中既包括所述设置的位宽检测信息、又包括随机数,确定存储器引导控制模块位宽模式的调整方式为,将默认位宽模式的位宽比特位数减去一次读取中包括的随机数的比特位数;在第一位宽检测单元判断所述位宽检测信息的读取结果与所述设置的位宽检测信息一致时,确定存储器引导控制模块使用当前位宽模式。
8.如权利要求7所述的系统,其特征在于,该系统中还包括:代码引导方式确定单元,用于确定代码引导方式为将程序运行进程跳转至存储器,运行存储器中的软件系统代码;或者确定代码引导方式为读取存储器中的软件系统代码至其他存储器运行;所述代码引导方式用于存储器引导控制模块进行代码引导;
所述存储器引导控制模块包括:
位宽检测信息读取单元,用于使用当前位宽模式读取存储器中的位宽检测信息,所述设置的位宽检测信息的比特位数大于等于所述存储器的位宽;
位宽模式调整执行单元,用于根据确定的位宽调整方式调整位宽模式;
代码引导执行单元,用于当所述代码引导方式确定单元确定的代码引导方式为将程序运行进程跳转至存储器、运行存储器中的软件系统代码时,使用调整后的位宽模式或当前位宽模式访问存储器,将程序运行进程跳转至存储器,运行存储器中的软件系统代码;当所述代码引导方式确定单元确定代码引导方式为读取存储器中的软件系统代码至其他存储器运行时,使用调整后的位宽模式或当前位宽模式访问存储器,读取存储器中的软件系统代码至其他存储器运行。
9.如权利要7所述的系统,其特征在于,所述存储器为Norflash或Nandflash。
10.一种位宽自适应的存储器访问系统,其特征在于,该系统包括:
存储器引导控制模块,用于使用当前位宽模式读取存储器中设置的位宽检测信息一次以上,将存储器中设置的位宽检测信息读出,所述设置的位宽检测信息的比特位数大于等于所述存储器的位宽;根据确定的位宽模式调整方式调整位宽模式,并在位宽选择模块判断所述位宽检测信息的读取结果与所述设置的位宽检测信息一致时,使用调整后的位宽模式访问存储器;或者使用当前位宽模式访问存储器;
位宽选择模块,用于判断所述位宽检测信息的读取结果与所述设置的位宽检测信息是否一致,如果不是确定存储器引导控制模块位宽模式的调整方式,否则确定存储器引导控制模块使用当前位宽模式;
所述位宽选择模块包括:
第二位宽检测单元,用于判断所述位宽检测信息的读取结果与所述设置的位宽检测信息是否一致;
第二位宽模式调整单元,用于在所述第二位宽检测单元判断所述位宽检测信息的读取结果与所述设置的位宽检测信息不一致时,如果所述读取结果的一部分仅包括设置的位宽检测信息中的数据,另一部分仅包括未知数,确定存储器引导控制模块位宽模式的调整方式为,增大当前位宽模式的位宽比特位数,如果所述存储器引导控制模块每次读取中既包括所述设置的位宽检测信息中的数据、又包括随机数时,确定存储器引导控制模块位宽模式的调整方式为,减小当前位宽模式的位宽比特位数;在所述第二位宽检测单元判断所述位宽检测信息的读取结果与所述设置的位宽检测信息一致时,确定存储器引导控制模块使用当前位宽模式。
11.如权利要求10所述的系统,其特征在于,该系统中还包括:代码引导方式确定单元,用于确定代码引导方式为将程序运行进程跳转至存储器,运行存储器中的软件系统代码;或者确定代码引导方式为读取存储器中的软件系统代码至其他存储器运行;所述代码引导方式用于存储器引导控制模块进行代码引导;
所述存储器引导控制模块包括:
位宽检测信息读取单元,用于使用当前位宽模式读取存储器中的位宽检测信息,所述设置的位宽检测信息的比特位数大于等于所述存储器的位宽;
位宽模式调整执行单元,用于根据所述位宽选择模块确定的位宽调整方式调整位宽模式;
代码引导执行单元,用于当所述代码引导方式确定单元确定的代码引导方式为将程序运行进程跳转至存储器、运行存储器中的软件系统代码时,在位宽选择模块判断所述位宽检测信息的读取结果与所述设置的位宽检测信息一致时,使用调整后的位宽模式访问存储器,将程序运行进程跳转至存储器,运行存储器中的软件系统代码,或使用当前位宽模式访问存储器,将程序运行进程跳转至存储器,运行存储器中的软件系统代码;当所述代码引导方式确定单元确定代码引导方式为读取存储器中的软件系统代码至其他存储器运行时,在位宽选择模块判断所述位宽检测信息的读取结果与所述设置的位宽检测信息一致时,使用调整后的位宽模式访问存储器,读取存储器中的软件系统代码至其他存储器运行,或使用当前位宽模式访问存储器,读取存储器中的软件系统代码至其他存储器运行。
12.如权利要求10所述的系统,其特征在于,所述存储器为Norflash或Nandflash。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100899375A CN101251828B (zh) | 2008-04-09 | 2008-04-09 | 一种位宽自适应的存储器访问方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100899375A CN101251828B (zh) | 2008-04-09 | 2008-04-09 | 一种位宽自适应的存储器访问方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101251828A CN101251828A (zh) | 2008-08-27 |
CN101251828B true CN101251828B (zh) | 2010-08-11 |
Family
ID=39955224
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008100899375A Expired - Fee Related CN101251828B (zh) | 2008-04-09 | 2008-04-09 | 一种位宽自适应的存储器访问方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101251828B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102025477B (zh) * | 2009-09-10 | 2014-04-16 | 卓胜微电子(上海)有限公司 | 用于软解调和信道译码级链结构的比特位宽调节方法、系统 |
US9361955B2 (en) | 2010-01-28 | 2016-06-07 | Hewlett Packard Enterprise Development Lp | Memory access methods and apparatus |
US9146867B2 (en) | 2011-10-31 | 2015-09-29 | Hewlett-Packard Development Company, L.P. | Methods and apparatus to access memory using runtime characteristics |
CN106055510A (zh) * | 2016-06-15 | 2016-10-26 | 中国电子科技集团公司第五十八研究所 | 一种基于fpga配置总线位宽自动检测的控制系统 |
CN108572787A (zh) * | 2017-03-09 | 2018-09-25 | 深圳市中兴微电子技术有限公司 | 一种数据存储、读取的方法及装置 |
-
2008
- 2008-04-09 CN CN2008100899375A patent/CN101251828B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101251828A (zh) | 2008-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100764749B1 (ko) | 멀티-칩 패키지 플래시 메모리 장치 및 그것의 카피 백방법 | |
CN100456272C (zh) | 利用快闪存储器引导的系统和方法 | |
US6851018B2 (en) | Exchanging operation parameters between a data storage device and a controller | |
CN101251828B (zh) | 一种位宽自适应的存储器访问方法及系统 | |
US8904082B1 (en) | Operation based polling in a memory system | |
US20040236898A1 (en) | Synchronous semiconductor storage device module and its control method, information device | |
CN101561857B (zh) | 多模式启动的安全嵌入式系统 | |
KR101674225B1 (ko) | 플래시 메모리에서 데이터를 고속의 낮은 전력으로 판독하는 방법 | |
KR100474622B1 (ko) | 마이크로컴퓨터 | |
KR100914265B1 (ko) | 비휘발성 메모리 장치, 그것을 포함한 메모리 시스템 및그것의 읽기 방법 | |
CN101246736B (zh) | 存储器系统及其数据读取方法 | |
US20060020764A1 (en) | Information processing apparatus including non-volatile memory device, non-volatile memory device and methods thereof | |
WO2008029904A1 (en) | Memory card complying with a plurality of standards | |
CN100485810C (zh) | 逻辑与非快闪存储器芯片存取方法及与非快闪存储器芯片 | |
US8953397B2 (en) | Semiconductor device and method of operating the same | |
KR20060129804A (ko) | 엠엠씨 인터페이스를 갖는 플래시 메모리 장치 및 그것을포함한 메모리 시스템 | |
KR20060089936A (ko) | 메모리 카드에서의 파워다운모드 제어장치 및 방법 | |
CN102915209A (zh) | 一种存储控制芯片、存储设备及其系统数据写入方法 | |
US20140082269A1 (en) | EMBEDDED MULTIMEDIA CARD (eMMC), HOST CONTROLLING SAME, AND METHOD OF OPERATING eMMC SYSTEM | |
US8103818B2 (en) | Memory module and auxiliary module for memory | |
CN111475432B (zh) | 一种从机启动控制装置、单总线系统及其控制方法 | |
KR100962101B1 (ko) | 메모리 카드 및 메모리 카드 제어 전환 방법 | |
US20140059274A1 (en) | Flash memory controller, flash memory system, and flash memory control method | |
CN114115888A (zh) | 一种基于BootRom功能扩展的嵌入式系统启动方法 | |
JPWO2006101123A1 (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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20170613 Address after: 519085 C District, 1# workshop, No. 1, science and technology No. four road, hi tech Zone, Zhuhai, Guangdong, China Patentee after: ACTIONS (ZHUHAI) TECHNOLOGY CO., LTD. Address before: 519085 No. 1, unit 15, building 1, 1 Da Ha Road, Tang Wan Town, Guangdong, Zhuhai Patentee before: Juli Integrated Circuit Design Co., Ltd. |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100811 Termination date: 20180409 |