一种嵌入式系统技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种嵌入式系统。
背景技术
微控制器(Micro Control Unit,MCU)应用非常广泛,小到儿童玩具,大
到工程机械均有可能用到。
现在通用的MCU芯片中的存储空间大多为所有用户无差别使用,即为用户
共用的存储空间,用户所储存的数据十分容易被可以访问该芯片的用户读取、
甚至改写,导致用户存储的数据的安全性较低。尤其在某些保密性非常高的行
业应用中,当需要存储一些关键密钥等保密信息时,通常会需要一些独立的私
有的存储空间,而现有的MCU芯片无法独立满足用户定制存储的需求,需要借
助外接其他芯片的方式实现,例如在通过在MCU芯片外接一颗小的闪存芯片或
EEPROM(Electrically Erasable Programmable Read-Only Memory,电子可擦
除可编程只读存储器)等来存储用户独有的一些关键保密信息。
但是,采用现有的MCU芯片外接其他芯片的方法,首先,需要MCU芯片支
持访问另外一颗闪存芯片或EEPROM;其次,外界其他芯片会增加整体占用空间,
增加作业人员的工作量,操作相对繁琐,且明显增加成本以及系统开发难度。
发明内容
本发明提供一种嵌入式系统,以解决用户数据存储的安全问题。
本发明实施例提供了一种嵌入式系统,包括:闪存控制器、中央处理器
(Central Processing Unit,CPU)和闪存芯片,所述闪存控制器与所述CPU和
所述闪存芯片分别连接;其中,
所述闪存芯片包括:
闪存主存储区,用于存储通用程序数据;
闪存系统配置区,用于配置所述闪存芯片的状态信息;
所述闪存芯片还包括:
闪存扩展存储区,用于存储特定的用户数据;
所述闪存控制器,用于与所述闪存系统配置区交互所述闪存芯片的状态信
息,并根据所述闪存芯片的状态信息,从所述闪存扩展存储区中读取所述用户
数据,供所述CPU执行,或者对所述闪存扩展存储区所存储的用户数据进行改
写;还用于对所述闪存主存储区进行读写访问。
进一步地,所述闪存控制器包括:
闪存系统总线接口;
闪存配置寄存器,与所述闪存系统总线接口连接;
主控单元,与所述闪存系统总线接口和所述闪存配置寄存器分别连接;
闪存控制单元,与所述闪存配置寄存器、所述主控单元和所述闪存芯片分
别连接;
所述闪存系统总线接口,用于将系统总线发出的第一读指令和对应的地址
发送至所述主控单元,其中,所述第一读指令,用于对所述闪存扩展存储区进
行读访问;还用于将系统总线发出的第一写指令和对应的地址发送至所述主控
单元,其中,所述第一写指令,用于对所述闪存扩展存储区进行写访问;
所述闪存配置寄存器,用于在所述嵌入式系统上电后,自动读取所述闪存
系统配置区中的所述闪存芯片的状态信息,所述闪存芯片的状态信息包括:闪
存扩展存储区是否有效信息;将与所述闪存系统总线接口交互的与所述第一读
指令对应的地址或与所述第一写指令对应的地址,映射为闪存芯片中的所述闪
存扩展存储区的物理地址信息,作为闪存扩展存储区的地址映射信息;并向所
述主控单元提供闪存扩展存储区的地址映射信息和闪存扩展存储区是否有效信
息;
所述主控单元,用于根据所述地址映射信息和所述闪存扩展存储区是否有
效信息,判断系统总线发出的第一读指令和对应的地址是否有效,若是,则控
制所述闪存控制单元对所述闪存芯片中闪存扩展存储区所存储的用户数据进行
读取;还用于根据所述地址映射信息和所述闪存扩展存储区是否有效信息,判
断系统总线发出的第一写指令和对应的地址是否有效,若是,则控制所述闪存
控制单元对所述闪存芯片中闪存扩展存储区所存储的用户数据进行改写;
所述闪存控制单元,用于根据所述主控单元的控制,对所述闪存芯片中闪
存扩展存储区所存储的用户数据进行读取或改写。
进一步地,所述闪存配置寄存器包括:
扩展存储使能寄存器,用于上电后自动从所述闪存芯片中的所述闪存系统
配置区读取扩展存储区是否有效信息,并提供至所述主控单元;
扩展存储映射地址寄存器,用于将与所述闪存系统总线接口交互的与所述
第一读指令对应的地址或与所述第一写指令对应的地址,映射为闪存芯片中的
所述闪存扩展存储区的物理地址信息,作为闪存扩展存储区的地址映射信息,
提供至所述主控单元;
相应的,所述闪存系统总线接口,还用于直接对所述闪存配置寄存器进行
读写访问。
进一步地,所述闪存配置寄存器还包括:闪存密钥寄存器和/或闪存操作
寄存器;
所述闪存密钥寄存器,用于存放访问所述闪存芯片中的所述闪存系统配置
区的密钥;
所述闪存操作寄存器,用于对所述闪存芯片中的所述闪存系统配置区的数
据进行擦除、写入或读取。
进一步地,所述主控单元包括:
操作控制单元,用于控制所述闪存控制单元对所述闪存芯片进行擦除、写
入或读取操作;
扩展存储地址比较单元,用于判定接收到的所述系统总线发出的第一读指
令和对应的地址或发出的第一写指令和对应的地址是否有效。
进一步地,述系统还包括:静态随机存储器(Static Random Access
Memory,SRAM),用于在上电后存储所述闪存芯片中的通用程序数据和用户
数据;
所述闪存控制器还包括:SRAM控制单元,与所述闪存系统总线接口、所
述主控单元、所述闪存控制单元和所述SRAM分别连接;
所述主控单元,还用于根据所述地址映射信息和所述扩展存储区是否有效
信息,判断系统总线发出的第一读指令和对应的地址是否有效,若是,则控制
所述SRAM控制单元对所述SRAM中所存储的用户数据进行读取;还用于根据
所述地址映射信息和所述扩展存储区是否有效信息,判断系统总线发出的第一
写指令和对应的地址是否有效,若是,则控制所述SRAM控制单元对所述
SRAM中所存储的用户数据进行改写,或控制所述闪存控制单元对所述闪存芯
片中所存储的用户数据进行改写;
所述SRAM控制单元,用于根据所述主控单元的控制,对所述SRAM中所
存储的用户数据进行读取或改写。
进一步地,所述闪存扩展存储区包括至少一个闪存扩展存储块;
相应的,所述扩展存储使能寄存器,用于上电后自动从所述闪存芯片中的
所述闪存系统配置区读取任意一个或者任意多个闪存扩展存储块是否有效信
息,并提供至所述主控单元。
进一步地,所述扩展存储映射地址寄存器,还用于将与所述闪存系统总线
接口交互的多个不同的与所述第一读指令对应的地址或与所述第一写指令对应
的地址,映射为闪存芯片中的所述闪存扩展存储区的相同的物理地址信息,作
为闪存扩展存储区的地址映射信息,提供至所述主控单元。
进一步地,所述闪存扩展存储区的存储空间小于所述闪存主存储区的存储
空间。
本发明实施例所提供的技术方案,通过在闪存芯片中增加闪存扩展存储
区,可定制给特殊用户独立使用,为用户提供了独立使用的存储空间,且任何
其他用户不可见,实现了用户私有数据的安全存储,通过闪存控制器能够对闪
存扩展存储区进行读写访问;同时,由于闪存芯片一般都会有一些闲置空间,
采用上述技术方案,可以将闪存芯片的闲置空间用作闪存扩展存储区,不需要
增加闪存芯片面积,同时节省了外接一颗小的闪存芯片或EEPROM,不需要增
加额外的硬件开销,而且还具有读取、擦写所述闪存扩展存储区的逻辑可与读
取、擦写闪存主存储区的逻辑复用的有益效果。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明
的其它特征、目的和优点将会变得更明显:
图1为本发明实施例一所提供的一种嵌入式系统的结构示意图;
图2A是本发明实施例二所提供的一种嵌入式系统的结构示意图;
图2B本发明实施例二所提供的一种嵌入式系统中闪存芯片中的闪存系统
配置区的改写方法的流程图;
图3是本发明实施例三所提供的一种嵌入式系统的结构示意图;
图4A是为本发明实施例四提供的一种闪存扩展存储区的结构示意图;
图4B为本发明实施例提供的一种嵌入式系统的闪存扩展存储区的读写方
法的流程图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此
处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需
要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结
构。
实施例一
图1为本发明实施例一所提供的一种嵌入式系统的结构示意图,如图1所
示,本实施例所提供的嵌入式系统,包括:闪存控制器110、中央处理器(CPU)
120和闪存芯片130,闪存控制器110与CPU 120和闪存芯片130分别连接;其
中,CPU 120用于控制闪存控制器110与闪存芯片130的运行;闪存芯片130
可读,可擦写,在断电情况下所存储的数据信息不丢失。
其中,闪存控制器110、CPU120配置在嵌入式系统的主芯片上,可采用
MCP(Multiple Chip Package)技术将主芯片与闪存芯片制造在同一个封装内,
形成嵌入式系统。
在本发明实施例中,闪存芯片130包括:闪存主存储区131和闪存系统配
置区132。
其中,闪存主存储区131用于存储通用程序数据,通常为所有用户均可使
用的存储区域,一般在闪存芯片130中所占有的空间相对较大,例如可以为几
百千字节到几兆字节。闪存系统配置区132用于配置所述闪存芯片的状态信息。
闪存系统配置区132通常预先配置于闪存芯片中,在实际使用过程中,闪存系
统配置区132通常用户不可见也不可修改。闪存系统配置区132一般比较小,
例如可以为几个字节到几十个字节不等。
闪存芯片130还包括:闪存扩展存储区133,用于存储特定的用户数据。
闪存扩展存储区133尤其适用于存储关键保密的用户数据,比如密码等,闪存
扩展存储区133所存储的用户数据,任何其他用户无法直接访问,可以有效保
证用户数据的安全性及保密性,满足用户对私有数据的独立存储的需求。
闪存控制器110,用于与所述闪存系统配置区132交互闪存芯片130的状态
信息,并从闪存扩展存储区133中读取所述用户数据,供CPU 120执行,或者
对闪存扩展存储区133所存储的用户数据进行改写;还用于对闪存主存储区131
进行读写访问。所述嵌入式系统通过闪存控制器110对闪存芯片130的操作一
般主要为读操作,可直接从闪存芯片130中读取用户数据;当闪存芯片130中
的数据需要修改时,也可执行写操作,写操作需要先擦除闪存芯片130中相应
的位置,然后通过编程的方式改写数据。
本发明实施例所提供的技术方案,通过在闪存芯片中增加闪存扩展存储
区,可定制给特殊用户独立使用,为用户提供了独立使用的存储空间,且任何
其他用户不可见,实现了用户私有数据的安全存储,通过闪存控制器能够对闪
存扩展存储区进行读写访问;同时,由于闪存芯片一般都会有一些闲置空间,
采用上述技术方案,可以将闪存芯片的闲置空间用作闪存扩展存储区,不需要
增加闪存芯片面积,同时节省了外接一颗小的闪存芯片或EEPROM,不需要增
加额外的硬件开销,而且还具有读取、擦写所述闪存扩展存储区的逻辑可与读
取、擦写闪存主存储区的逻辑复用的有益效果。
实施例二
图2A为本发明实施例二提供的一种嵌入式系统的结构示意图,如图2所
示,本实施例在上述实施例的基础上,提供了闪存控制器210的优选实现方案。
闪存控制器210包括:闪存系统总线接口211、闪存配置寄存器212、主控
单元213和闪存控制单元214。
其中,闪存配置寄存器212与闪存系统总线接口211连接;主控单元213
与闪存系统总线接口211和闪存配置寄存器212分别连接;闪存控制单元214
与闪存配置寄存器212、主控单元213和闪存芯片230分别连接。
闪存系统总线接口211,用于将系统总线220发出的第一读指令和对应的地
址发送至主控单元213,其中,所述第一读指令,用于对所述闪存扩展存储区
进行读访问;还用于将系统总线220发出的第一写指令和对应的地址发送至主
控单元213,其中,所述第一写指令,用于对所述闪存扩展存储区进行写访问
具体的,可以通过控制通路1发送至主控单元213。
闪存配置寄存器212,用于在所述嵌入式系统上电后,自动读取所述闪存
系统配置区中的闪存芯片230的状态信息,闪存芯片230的状态信息包括:闪
存扩展存储区是否有效信息;将与闪存系统总线接口211交互的与所述第一读
指令对应的地址或与所述第一写指令对应的地址,映射为闪存芯片230中的所
述闪存扩展存储区的物理地址信息,作为闪存扩展存储区的地址映射信息;并
向主控单元213提供闪存扩展存储区的地址映射信息和闪存扩展存储区是否有
效信息。
主控单元213,可以用于根据所述地址映射信息和所述扩展存储区是否有
效信息,判断系统总线220发出的第一读指令和对应的地址是否有效,若是,
则控制闪存控制单元214对闪存芯片230中闪存扩展存储区所存储的用户数据
进行读取;还用于根据所述地址映射信息和所述扩展存储区是否有效信息,判
断系统总线220发出的第一写指令和对应的地址是否有效,若是,则控制闪存
控制单元214对闪存芯片230中闪存扩展存储区所存储的用户数据进行改写。
进一步地,主控单元213还可以根据系统总线220的第一读指令和对应的
地址或者第一写指令和对应的地址,通过控制通路2发送至闪存控制单元214。
闪存控制单元214,可以用于根据所述主控单元213的控制,对闪存芯片
230中闪存扩展存储区所存储的用户数据进行读取或改写。闪存控制单元214
可以通过数据通路2将闪存芯片230中的闪存系统配置区中的闪存芯片230的
状态信息,提供至闪存配置寄存器212,进一步的,闪存配置寄存器212可以
通过控制通路3为主控单元213提供闪存芯片230中的通用程序数据和用户数
据信息。
此外,系统总线220还可通过数据通路1(为闪存系统总线接口211到闪存
配置寄存器212之间的数据通路)配置闪存配置寄存器212的信息。
闪存系统总线接口211的功能除了将系统总线220的读写访问转化为对闪
存芯片230的读写访问之外,还可以用于将系统总线220的读写访问转化为对
闪存配置寄存器212的读写访问,从地址可以区分。当对闪存配置寄存器212
读写时,则直接通过数据通路1读出或写入到闪存配置寄存器212中。
在上述实施例的基础上,所述主控单元213可以包括:操作控制单元2131
和扩展存储地址比较单元2132。
其中,操作控制单元2131,用于控制所述闪存控制单元214对所述闪存芯
片230进行擦除、写入或读取操作;具体的,在控制所述闪存控制单元214对
所述闪存芯片230中的闪存扩展存储区进行擦除、写入或读取操作时,需要在
扩展存储地址比较单元2132判定当前操作为有效的情况下才会进行。
扩展存储地址比较单元2132,用于判定接收到的所述系统总线发出的第一
读指令和对应的地址或发出的第一写指令和对应的地址是否有效。
也就是说,主控单元213可通过控制通路1从闪存系统总线接口211得到
系统总线220要执行的操作,比如读操作,或写操作。通过控制通路2,给闪
存控制单元214发出指令,如擦除,编程,或读指令等。具体的,如果读写闪
存芯片230中的闪存扩展存储区中的用户数据,从控制通路1得到系统总线220
发出的读写指令以及地址,从控制通路3得到闪存扩展存储区的地址映射信息,
以及扩展存储区是否有效信息,通过扩展存储地址比较单元,判断系统总线220
发出的读写指令以及地址是否有效,如有效则对闪存芯片230中的闪存扩展存
储区进行读写,如无效,则忽略系统总线220的操作。
在上述实施例的基础上,所述闪存配置寄存器212可以包括:
扩展存储使能寄存器2123,用于上电后自动从所述闪存芯片230中的所述
闪存系统配置区读取闪存扩展存储区是否有效信息,并提供至所述主控单元
213;需要说明的是,所读取的闪存扩展存储区是否有效信息为闪存芯片230中
的闪存系统配置区所配置的闪存芯片230的状态信息中的其中一种。
扩展存储映射地址寄存器2124,用于将与闪存系统总线接口211交互的与
所述第一读指令对应的地址或与所述第一写指令对应的地址,映射为闪存芯片
230中的所述闪存扩展存储区的物理地址信息,作为闪存扩展存储区的地址映
射信息,提供至所述主控单元213。
相应的,闪存系统总线接口211,还用于直接对闪存配置寄存器212进行
读写访问,系统总线220可以通过闪存系统总线接口211到闪存配置寄存器212
之间的数据通路1配置闪存寄存器212信息;闪存芯片230的所述闪存系统配
置区还包括扩展存储使能寄存器2123以及扩展存储映射地址寄存器2124的状
态信息。在上电后,扩展存储使能寄存器2123以及扩展存储映射地址寄存器
2124的状态信息可以自动更新到扩展存储使能寄存器2123和扩展存储映射地
址寄存器2124中。
在上述实施例的基础上,所述判定接收到的所述系统总线220发出的第一
读指令和对应的地址或发出的第一写指令和对应的地址是否有效,具体可以是:
1、判定系统总线220发出的第一读指令对应的地址是否在闪存扩展存储区
设定的有效地址范围之内;
2、通过比较扩展存储映射地址寄存器2124与系统总线220发出的第一读
指令对应的地址,判定当前地址是否在地址映射范围之内;
3、通过扩展存储使能寄存器2123判定当前地址对应的闪存扩展存储区是
否有效。
当3步均判定成功后,则操作控制单元2131发出相应的读取操作指令。
需要说明的是,此处以读取闪存芯片230中的闪存扩展存储区为例进行说
明,对闪存扩展存储区而言,改写,擦除或编程指令和对应的地址是否有效的
判断类似。
在上述实施例的基础上,闪存配置寄存212器还可以包括:闪存密钥寄存
器2121和/或闪存操作寄存器2122。其中,所述闪存密钥寄存器2121,用于存
放访问闪存芯片230中的所述闪存系统配置区的密钥,密钥通常预先配置于闪
存密钥寄存器2121中,在需要改写闪存系统配置区中的数据时,需要判断密钥
是否正确,闪存密钥寄存器2121可以有效防止非法改写。闪存芯片230中闪存
系统配置区为厂家配置,为用户不可用,不可见,通过判断密钥是否正确来阻
止非法改写。
闪存操作寄存器2122,可以用于对闪存芯片230中的所述闪存系统配置区
的数据进行擦除、写入或读取。具体的,当厂家需要改写闪存芯片230中闪存
系统配置区时,可通过闪存操作寄存器2122发出擦除,以及编程操作指令,以
达到改写闪存芯片230中闪存系统配置区的目的。
本实施例还提供一种嵌入式系统中闪存芯片中的闪存系统配置区的改写方
法,参见图2B,所述方法具体包括:
S210、上电复位,读取闪存芯片中闪存系统配置区中的系统状态信息。
S220、CPU通过系统总线读取闪存芯片中的通用程序数据,控制系统运行。
从闪存芯片中读取程序数据,通过系统总线的程序数据总线提供到CPU中,所
述嵌入式系统开始正常运行。
S230、判断主控单元是否接收到系统总线的第一写指令和对应的地址,若
是,执行S240,若否,则返回S220。也就是说,判断是否需要改写系统配置,
若是,则进入写密钥的步骤。
S240、闪存密钥寄存器判定接收到的密钥是否正确,若是,执行S250、若
否,则返回S210。只有闪存密钥寄存器判定接收到的密钥正确,才可以执行相
应的擦写所述闪存芯片的状态信息的操作,否则将接收到的系统总线的第一写
指令和对应的地址视为非法操作。
S250、根据所述系统总线的所述第一写指令和对应的地址,在闪存芯片中
的闪存系统配置区,擦除并写入相应的所述闪存芯片的状态信息。本案中,系
统总线写入所述扩展存储使能寄存器和所述扩展存储映射地址寄存器要更新的
值,由闪存操作寄存器根据系统总线的第一写命令和对应的地址,通过数据通
路2改写闪存系统配置区的闪存芯片的状态信息。
在上述技术方案的基础上,所述方法还可以包括:所述闪存操作寄存器根
据所述系统总线写入的第一读指令,将当前闪存系统配置区的所述闪存芯片的
状态信息更新到闪存配置寄存器中。进一步地,然后通过系统总线读取当前所
述闪存芯片的状态信息,并与所述第一写指令进行比对;根据比对结果,确定
当前闪存系统配置区的系统配置状态。具体的,如当前所述闪存芯片的状态信
息与所述第一写指令一致,则判定所述闪存芯片的状态信息正确,否则,判定
所述闪存芯片的状态信息错误,可以根据需要,直接丢弃改芯片,或重新配置
所述闪存系统配置区的所述闪存芯片的状态信息。
采用上述技术方案,通过增加扩展存储使能寄存器,扩展存储映射地址寄
存器以及扩展存储地址比较单元,既满足了需要存储关键保密信息的用户的需
求,便于用户开发,并且在扩展用户存储空间,保护用户数据私有性和独立性
的同时,有效保护闪存芯片数据的安全性。
实施例三
图3为本发明实施例二提供的一种嵌入式系统的结构示意图,如图3所示,
本实施例的技术方案是在上述实施例的基础上进一步的优化,相比较与上述实
施例,所述系统还包括:
静态随机存储器(SRAM)310,用于在上电后存储闪存芯片320中的通用程
序数据和用户数据。所述嵌入式系统对闪存芯片320的读操作,可直接从闪存
芯片320中读取,由于闪存芯片320的读取速度较慢,优选是可通过SRAM 310
读取,可以实现对闪存芯片320中通用程序数据和用户数据的实时读取,提高
对闪存芯片320中通用程序数据和用户数据的读取速度。
为了更好地满足快速读取闪存芯片320中的通用程序数据和用户数据,并
考虑到SRAM面积及所占用的地址空间,SRAM 310可以包括主SRAM和辅助SRAM,
主SRAM的地址空间一般不能太大,比如可以为几十千字节,在具体操作中,当
主SRAM的地址空间不足时,可以采用辅助SRAM。
所述闪存控制器330还包括:SRAM控制单元331,与闪存系统总线接口332、
主控单元333、闪存控制单元334和SRAM310分别连接。
主控单元333,还用于根据所述地址映射信息和所述闪存扩展存储区是否
有效信息,判断系统总线340发出的第一读指令和对应的地址是否有效,若是,
则控制SRAM控制单元331对SRAM 310中所存储的用户数据进行读取;还用于
根据所述地址映射信息和所述闪存扩展存储区是否有效信息,判断系统总线340
发出的第一写指令和对应的地址是否有效,若是,则控制SRAM控制单元331对
SRAM 310中所存储的用户数据进行改写,或控制闪存控制单元334对闪存芯片
320中所存储的用户数据进行改写。
在上述实施例的基础上,系统总线340还可以发出用于对闪存芯片320中
闪存主存储区所存储的通用程序数据进行改写的指令与对应的地址,所述闪存
控制单元334通过数据通路5与闪存系统总线接口332交互所述指令与对应的
地址,从而实现对闪存芯片320中的闪存主存储区中所存储的通用程序数据进
行改写。
在本实施例中,闪存配置寄存器335的具体结构和功能与上述实施例相同。
主控单元333接收系统总线340通过控制通路1发出的第一读指令和对应
的地址,并根据闪存配置寄存器335提供的地址映射信息和扩展存储区是否有
效信息,判断系统总线340发出的第一读指令和对应的地址有效,优选是通过
SRAM 310读取闪存芯片320中的数据。若所述嵌入式系统上电后,主控单元333
所需读取的目标数据在存储在SRAM 310中,则直接从SRAM 310中读取,并通
过数据通路1发送至系统总线340中;如所述目标数据未存储于SRAM 310中,
则可以先从闪存芯片320中将所述目标数据读取数据到SRAM 310中,再从SRAM
310中读取。
具体的,SRAM 310所存储的用户数据可以通过闪存控制单元到SRAM控制
单元之间的数据通路4,将闪存芯片320中的通用程序数据和用户数据读取到
SRAM 310中,并且所述嵌入式系统上电后,SRAM 310可以自动读取并存储闪存
芯片320中闪存主存储区中的通用程序数据或闪存扩展存储区中的用户数据。
SRAM控制单元331,用于根据所述主控单元333的控制,对SRAM 310中所
存储的用户数据进行读取或改写。SRAM控制单元331可以将接收到的主控单元
333通过控制通路4的第一读指令和对应的地址翻译成SRAM 310的第一读指令
和对应的地址,还可以将接收到的主控单元333的第一写指令和对应的地址翻
译成SRAM 310的第一写指令和对应的地址。
在上述实施例中,主控单元333可以通过主SRAM 310读取闪存芯片320中
的通用程序数据和用户数据,例如具体可以是主SRAM进行1:1复制闪存芯片
320中的闪存主存储区中需要实时响应的通用程序数据,通过数据通路4提供
至闪存系统总线接口332,也就是说,此部分数据系统总线可以直接从主SRAM
中读取,为实时读取,没有等待周期,读取速度最快;也可以通过辅助SRAM读
取闪存芯片320中的通用程序数据和用户数据,若辅助SRAM中有相应的目标数
据,则直接从辅助SRAM中读取,若辅助SRAM中没有相应的数据,可以先将需
要读取的数据从闪存芯片320中读取到辅助SRAM中,由辅助SRAM提供通过数
据通路3至闪存系统总线接口332。也就是说,通过类似cache的操作方式,如
果辅助SRAM中有相应的数据(类似于cache hit),则直接从辅助SRAM中读
取,如果辅助SRAM中没有相应的数据(类似于cache miss),先将需要读取的
数据从闪存芯片读取到辅助SRAM中,系统总线再从辅助SRAM中读取。
辅助SRAM一般存储海量不常更改的数据。对读取速度要求不高,一般读
取均有一定的等待周期。在本案中,闪存扩展存储区比较小(比如1K bytes),
可通过主SRAM进行1:1复制,这样可实时读取,但会增加SRAM的面积。也
可通过辅助SRAM读取,读取方式与前面所述一致,这样读取会增加一些等待
周期,但不会增加SRAM面积。
综上,上述技术方案通过SRAM 310读取所述闪存芯片320中的通用程序数
据和用户数据,有效加快了所述嵌入式系统对所述闪存芯片320中的通用程序
数据和用户数据的读取速度,并实现了实时读取,极大提升了用户体验。
实施例四
本发明实施例提供两种嵌入式系统,在上述各实施例的基础上,实现多用
户存储。
方式一
图4A为本发明实施例四提供的一种闪存扩展存储区的结构示意图,如图
4A所示,本实施例的技术方案是在上述实施例的基础上进一步的优化,相比较
与上述实施例,区别在于,优选是,闪存扩展存储区410包括至少一个闪存扩
展存储块411。其中,闪存扩展存储块411的大小可以根据实际需求进行设定,
在此不做限定。例如,闪存扩展存储区410总共为128K字节,分为32个扩展
存储块411,每个块为4千字节大小。
相应的,所述扩展存储使能寄存器,用于上电后自动从所述闪存芯片中的
所述闪存系统配置区读取任意一个或者任意多个闪存扩展存储块411是否有效
信息,并提供至所述主控单元。采用本技术方案可以将闪存扩展存储区410分
割成多个闪存扩展存储块411,进而可配置每个闪存扩展存储块411是否有效,
这样可配置给多个用户,每个用户的闪存扩展存储块411在物理存储上隔离。
而且,可灵活配置任意一个或多个闪存扩展存储块411有效,以满足不同用户
对扩展存储块411大小的需求。
举例而言,假设闪存扩展存储区410有32个闪存扩展存储块411,每个闪
存扩展存储块411有4Kbytes(字节),总共占用128K bytes的空间;所述扩展
存储使能寄存器为32bits,每bit控制1个闪存扩展存储块411是否有效。现有
6个用户分别需要4KB、4KB、8KB、16KB、32KB、64KB大小的扩展存储区
域,则可以分别配置所述扩展存储使能寄存器为32’h1(最低位为1,其他为
0)、32’h2、32’hC、32’hF0、32’hFF00、32’hFFFF_0000。除这上述6个
用户外,其他所有的通用标准用户均没有扩展存储区域,则配置成32’h0(所
有bit为0)。这样此6家用户均可使用不同的闪存扩展存储块411,从而实现6
个用户存储在闪存扩展存储区410的数据互相隔离,达到保密效果。
方式二
在方式一中,由于每增加一个闪存扩展存储块411则需要在闪片芯片中增
加同样的物理空间,为了使得闪存扩展存储区410可以满足更多用户的数据存
储需求,所述扩展存储映射地址寄存器,优选是还用于将与所述闪存系统总线
接口交互的多个不同的与所述第一读指令对应的地址或与所述第一写指令对应
的地址,映射为闪存芯片中的闪存扩展存储区410的相同的物理地址信息,作
为闪存扩展存储区的地址映射信息,提供至所述主控单元。
其中,所述闪存扩展存储区的地址映射信息通常作为闪存扩展存储区410
的相同的物理地址信息的逻辑地址信息,以供用户通过系统总线实现对闪存扩
展存储区410的读写访问。
举例而言,假设第一用户需要4K扩展存储区对应第一闪存扩展存储块,扩
展存储使能寄存器为32’h1,可配置扩展存储映射地址寄存器为0,若总共4K
bytes的逻辑地址范围,则映射到的系统总线地址为32’h00C0_0000到32’
h00C0_0FFF;第二用户同样使用第一闪存扩展存储块,扩展存储使能寄存器仍
为32’h1,此时可以配置所述扩展存储映射地址寄存器为1,则映射到的系统
总线地址为32’h00C2_0000到32’h00C2_0FFF。这样由于两家用户访问所述
闪存扩展存储区的逻辑地址不同,同样可以达到数据隔离,互相保密的效果。
上述技术方案,采用所述扩展存储映射地址寄存器将同一个所述闪存控制
快的物理地址信息映射为系统总线的多个不同的逻辑地址信息,由于用户在实
际操作中,通常只需要使用系统总线的逻辑地址信息,使得同一所述闪存扩展
存储块可配置给不同用户,从而实现可以满足更多用户的数据存储需求,将闪
存芯片有限的物理空间,更好地配置给更多用户进行数据存储。
为了更好的满足用户对所述闪存芯片的需求,合理分配空间,优选是所述
闪存扩展存储区的存储空间小于所述闪存主存储区的存储空间。
采用上述技术方案所提供的嵌入式系统,即使存储有用户A的数据信息的
闪存芯片A,被用户B破解,用户B也只能读取闪存芯片A中闪存主存储区的
通用程序数据,由于用户A的芯片的闪存扩展存储区所用的物理地址或逻辑地
址与用户B的扩展存储区所用的物理地址和/或逻辑地址不同,使得闪存芯片A
中闪存主存储区的通用程序数据无法在用户B的闪存芯片B上使用,充分保护
了每个用户的数据存储的私有性、独立性,大大提高了安全性。
图4B为本实施例提供的一种嵌入式系统的闪存扩展存储区的读写方法的
流程图,所述方法包括:
S410、上电复位,读取闪存芯片中闪存系统配置区中的系统状态信息。具
体包括,上电复位后,闪存芯片中的闪存系统配置区所存储的扩展存储使能寄
存器的信息,以及扩展存储映射地址寄存器的信息,可以自动更新至扩展存储
使能寄存器和扩展存储映射地址寄存器中。
S420、CPU通过系统总线读取闪存芯片中的通用程序数据,控制系统运行。
S430、判断所述系统总线的指令是否为读写闪存芯片中的闪存扩展存储区,
若是,执行S440;若否,则返回S420。
S440、主控单元根据所述系统总线的指令执行相应的操作。
S450、若所述系统总线指令为第一读指令和对应的地址,则所述主控单元
根据所述地址映射信息和所述扩展存储区是否有效信息,判断系统总线发出的
第一读指令和对应的地址是否有效,若是,执行S470,若否,则返回S420。
S460、若所述系统总线指令为第一写指令和对应的地址,则主控单元根据
所述闪存芯片中的所述闪存系统配置区的系统状态信息配置闪存控制器,执行
S480。
S470、所述CPU通过闪存控制单元读取闪存扩展存储区相应的数据。
S480、所述主控单元根据所述地址映射信息和所述扩展存储区是否有效信
息,判断系统总线发出的第一写指令和对应的地址是否有效,若是,执行S490;
若否,则返回S420。
在S450和S480中,所述主控单元可以通过扩展存储地址比较单元判断所
述系统总线发出的第一读指令和对应的地址或发出的第一写指令和对应的地址
否为闪存扩展存储区有效地址。
举例而言,假设扩展存储使能寄存器2123为32bits,总共有32个扩展存
储块,每块4Kbytes,变量设为ext_en[31:0](从0~31,总共32个配置)。扩展
存储映射地址寄存器2124可将每个扩展存储块的物理地址映射为32个不同的
逻辑地址,变量设为ext_ad[4:0],则需要逻辑地址范围为32x4KBx32=4096KB,
可以设定闪存扩展存储区的逻辑地址范围为32’h00C0_0000~32’h00FF_FFFF,
其中,每种逻辑地址的映射范围为4096/32=128KB,而每个128KB分为32个
扩展存储块。则每个闪存扩展存储块为128KB/32=4KB。此时系统总线发出读
指令,读地址为addr。此时,需要通过扩展存储地址比较单元判定当前地址是
否为闪存扩展存储区的有效地址,判定步骤为:
1.addr<=32’h00FF_FFFF且addr>=32’h00C0_0000;
2.addr[21:17]==ext_ad[4:0];
3.ext_en[addr[16:12]]为1。
当3个判定条件均满足时,则说明当前地址为扩展存储区的有效地址。
S490、所述CPU通过主控单元中的操作控制单元擦写所述闪存扩展存储
区。
采用上述技术方案,不仅可以满足多用户的私有存储的需求,而且在读写
闪存扩展存储区时,通过对地址有效性的判断,充分保证数据的安全。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员
会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进
行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽
然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以
上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,
而本发明的范围由所附的权利要求范围决定。