一种闪存控制器和闪存控制器的控制方法转让专利

申请号 : CN201410851175.3

文献号 : CN104598402B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李宝魁王景华王南飞

申请人 : 北京兆易创新科技股份有限公司

摘要 :

本发明提供了一种闪存控制器和闪存控制器的控制方法,所述闪存控制器包括指令总线接口、数据总线接口、配置寄存器、擦除访问过滤单元、读写访问过滤单元和闪存控制单元;读写访问过滤单元,用于接收控制信息;当接收到来自指令总线接口或数据总线接口的读写访问时,根据所述控制信息判断是否将所述读写访问传送给闪存控制单元;擦除访问过滤单元,用于接收控制信息;当接收到来自配置寄存器的擦除访问时,根据所述控制信息判断是否将所述擦除访问传送给闪存控制单元;闪存控制单元,用于根据所述读写访问或擦除访问完成针对闪存的访问。本发明用以保护程序不被客户窃取,同时保护合作开发程序的公司不能相互窃取对方的程序。

权利要求 :

1.一种闪存控制器,其特征在于,所述闪存控制器包括指令总线接口、数据总线接口、配置寄存器、擦除访问过滤单元、读写访问过滤单元和闪存控制单元;

读写访问过滤单元,用于接收控制信息;当接收到来自指令总线接口或数据总线接口的读写访问时,根据所述控制信息判断是否将所述读写访问传送给闪存控制单元;

擦除访问过滤单元,用于接收控制信息;当接收到来自配置寄存器的擦除访问时,根据所述控制信息判断是否将所述擦除访问传送给闪存控制单元;

闪存控制单元,用于根据所述读写访问或擦除访问完成针对闪存的访问;

所述闪存控制器还包括选项字节镜像和调试手段监测单元;

选项字节镜像,用于复制闪存信息区中的选项字节;

调试手段监测单元,用于监测当前对闪存用户区的访问是否来自调试手段。

2.根据权利要求1所述的闪存控制器,其特征在于,所述闪存包括闪存用户区和闪存信息区,所述闪存控制单元针对闪存的访问包括对闪存用户区的访问和对闪存信息区的访问,所述控制信息包括分区保护工作方式、读保护级别和读保护状态,所述闪存控制器还包括分区保护控制单元和读保护控制单元;

读保护控制单元,用于接收选项字节;判断当前对闪存用户区的访问是否来自调试手段,以及根据所述选项字节确定读保护级别和读保护状态;将所述读保护级别、读保护状态以及当前对闪存用户区的访问是否来自调试手段控制信息传送给所述擦除访问过滤单元和所述读写访问过滤单元;所述访问包括读写访问和擦除访问;

分区保护控制单元,用于确定当前的分区保护工作方式。

3.根据权利要求1所述的闪存控制器,其特征在于,所述闪存控制器包括内部总线矩阵,所述读写访问包括需要立即响应的读写访问,需 要延迟响应的读写访问,以及不需要响应的读写访问;

读写访问过滤单元,用于在判断为需要立即响应的读写访问时,通过内部总线矩阵传送给闪存控制单元,在所述闪存控制单元根据所述读写访问完成针对闪存的访问时,产生正确完成响应信号并传送给相应的指令总线接口或数据总线接口;

和/或,

读写访问过滤单元,用于在判断为需要延迟响应的读写访问时,在延迟指定的时间后,通过内部总线矩阵传送给闪存控制单元,在所述闪存控制单元根据所述读写访问完成针对闪存的访问时,产生正确完成响应信号并传送给相应的指令总线接口或数据总线接口;

和/或,

读写访问过滤单元,用于在判断为不需要响应的读写访问时,产生错误完成响应信号并传送给相应的指令总线接口或数据总线接口。

4.根据权利要求1所述的闪存控制器,其特征在于,所述读写访问包括更改选项字节的访问;

读写访问过滤单元,还用于在所述读写访问为更改选项字节的访问时,将所述更改选项字节的访问传送给选项字节镜像。

5.根据权利要求1所述的闪存控制器,其特征在于,所述擦除访问包括需要响应的擦除访问和不需要响应的擦除访问;

擦除访问过滤单元,用于在判断为需要响应的擦除访问时,将所述需要响应的擦除访问传送给所述闪存控制单元,在闪存控制单元根据所述擦除访问完成针对闪存的访问时,产生成功擦除响应信号并传送给所述配置寄存器;

和/或,

擦除访问过滤单元,用于在判断为不需要响应的擦除访问时,产生失败擦除响应信号并传送给所述配置寄存器。

6.根据权利要求5所述的闪存控制器,其特征在于,所述配置寄存器包括擦除访问完成状态位;

配置寄存器,用于在接收到所述成功擦除响应信号或者所述失败擦除响应信号时,更改所述擦除访问完成状态位。

7.根据权利要求6所述的闪存控制器,其特征在于,所述配置寄存器包括出错标志位;

配置寄存器,用于在接收到所述失败擦除响应信号时,更改所述出错标志位。

8.根据权利要求3所述的闪存控制器,其特征在于,所述内部总线矩阵为指令总线和数据总线的互联矩阵。

9.根据权利要求1或3所述的闪存控制器,其特征在于,所述闪存控制器包括主控单元,所述主控单元,用于控制闪存控制器各个模块协调工作。

10.一种闪存控制器的控制方法,其特征在于,所述闪存控制器包括指令总线接口、数据总线接口、配置寄存器、擦除访问过滤单元、读写访问过滤单元和闪存控制单元;

采用所述读写访问过滤单元接收控制信息;当接收到来自指令总线接口或数据总线接口的读写访问时,根据所述控制信息判断是否将所述读写访问传送给闪存控制单元;

采用所述擦除访问过滤单元接收控制信息;当接收到来自配置寄存器的擦除访问时,根据所述控制信息判断是否将所述擦除访问传送给闪存控制单元;

采用所述闪存控制单元根据所述读写访问或擦除访问完成针对闪存的访问;

所述闪存控制器还包括选项字节镜像和调试手段监测单元;所述的方法还包括:采用选项字节镜像复制闪存信息区中的选项字节;

采用调试手段监测单元监测当前对闪存用户区的访问是否来自调试手段。

11.根据权利要求10所述的方法,其特征在于,所述闪存包括闪存用户区和闪存信息区,所述闪存控制单元针对闪存的访问包括对闪存用户区的访问和对闪存信息区的访问,所述控制信息包括分区保护工作方式、读保护级别和读保护状态,所述闪存控制器还包括分区保护控制单元和读保护控制单元;所述的方法还包括:采用读保护控制单元接收选项字节;判断当前对闪存用户区的访问是否来自调试手段,以及根据所述选项字节确定读保护级别和读保护状态;将所述读保护级别、读保护状态以及当前对闪存用户区的访问是否来自调试手段控制信息传送给所述擦除访问过滤单元和所述读写访问过滤单元;所述访问包括读写访问和擦除访问;

采用分区保护控制单元确定当前的分区保护工作方式。

12.根据权利要求10所述的方法,其特征在于,所述闪存控制器包括内部总线矩阵,所述读写访问包括需要立即响应的读写访问,需要延迟响应的读写访问,以及不需要响应的读写访问;所述的方法还包括:采用读写访问过滤单元在判断为需要立即响应的读写访问时,通过内部总线矩阵传送给闪存控制单元,在所述闪存控制单元根据所述读写访问完成针对闪存的访问时,产生正确完成响应信号并传送给相应的指令总线接口或数据总线接口;

和/或,

采用读写访问过滤单元在判断为需要延迟响应的读写访问时,在延迟指定的时间后,通过内部总线矩阵传送给闪存控制单元,在所述闪存控制单元根据所述读写访问完成针对闪存的访问时,产生正确完成响应信号并传送给相应的指令总线接口或数据总线接口;

和/或,

采用读写访问过滤单元在判断为不需要响应的读写访问时,产生错误完成响应信号并传送给相应的指令总线接口或数据总线接口。

13.根据权利要求10所述的方法,其特征在于,所述读写访问包括更改选项字节的访问;所述的方法还包括:采用读写访问过滤单元在所述读写访问为更改选项字节的访问时,将所述更改选项字节的访问传送给选项字节镜像。

14.根据权利要求10所述的方法,其特征在于,所述擦除访问包括需要响应的擦除访问和不需要响应的擦除访问;所述的方法还包括:采用擦除访问过滤单元在判断为需要响应的擦除访问时,将所述需要响应的擦除访问传送给所述闪存控制单元,在闪存控制单元根据所述擦除访问完成针对闪存的访问时,产生成功擦除响应信号并传送给所述配置寄存器;

和/或,

采用擦除访问过滤单元在判断为不需要响应的擦除访问时,产生失败擦除响应信号并传送给所述配置寄存器。

15.根据权利要求14所述的方法,其特征在于,所述配置寄存器包括擦除访问完成状态位;所述的方法还包括:采用配置寄存器在接收到所述成功擦除响应信号或者所述失败擦除响应信号时,更改所述擦除访问完成状态位。

16.根据权利要求15所述的方法,其特征在于,所述配置寄存器包括出错标志位;所述的方法还包括:采用配置寄存器在接收到所述失败擦除响应信号时,更改所述出错标志位。

17.根据权利要求12所述的方法,其特征在于,所述内部总线矩阵为指令总线和数据总线的互联矩阵。

说明书 :

一种闪存控制器和闪存控制器的控制方法

技术领域

[0001] 本发明涉及电子电路技术领域,特别是涉及一种闪存控制器和一种闪存控制器的控制方法。

背景技术

[0002] 随着集成电路技术的不断提高,MCU(Micro Control Unit,微控制单元)芯片的应用越来越广泛,小到儿童玩具,大到工程机械,都需要用到MCU芯片。MCU芯片通常包含CPU(Central Processing Unit,中央处理器)、闪存(Flash Memory)、SRAM(Static Random Access Memory,静态随机存储器)和各种外围设备。在MCU芯片掉电时,闪存的内容不会丢失,而SRAM的内容则会丢失。闪存通常会被分为两个独立的区域:一个是闪存用户区,用来存储用户的程序;另一个是闪存信息区,用来存放MCU芯片的配置信息。SRAM一般用作片上缓存。
[0003] 对于MCU芯片的方案商而言,也就是基于MCU芯片开发程序和外围电路的厂商,程序最终会烧写到MCU芯片的闪存用户区中,由于方案商的核心价值在于所开发的程序,故需要保证程序绝对安全,不能被他人窃取。MCU芯片的信息保护方案的目标就是保护闪存用户区的内容不被他人窃取。目前市场上的MCU芯片的产品在信息保护方案方面,都只是对其闪存用户区的内容整体地保护,无法满足多家公司合作开发程序的需求。因为它只能保护闪存用户区的内容不被客户窃取,而不能阻止合作开发程序的公司相互窃取对方的程序。
[0004] 因此,目前需要本领域技术人员迫切解决的一个技术问题就是:提出一种闪存控制器,用以保护程序不被客户窃取,同时保护合作开发程序的公司不能相互窃取对方的程序。

发明内容

[0005] 本发明实施例所要解决的技术问题是提供一种闪存控制器,用以保护程序不被客户窃取,同时保护合作开发程序的公司不能相互窃取对方的程序。
[0006] 相应的,本发明实施例还提供了一种闪存控制器的控制方法,用以保证上述装置的实现及应用。
[0007] 为了解决上述问题,本发明公开了一种闪存控制器,所述闪存控制器包括指令总线接口、数据总线接口、配置寄存器、擦除访问过滤单元、读写访问过滤单元和闪存控制单元;
[0008] 读写访问过滤单元,用于接收控制信息;当接收到来自指令总线接口或数据总线接口的读写访问时,根据所述控制信息判断是否将所述读写访问传送给闪存控制单元;
[0009] 擦除访问过滤单元,用于接收控制信息;当接收到来自配置寄存器的擦除访问时,根据所述控制信息判断是否将所述擦除访问传送给闪存控制单元;
[0010] 闪存控制单元,用于根据所述读写访问或擦除访问完成针对闪存的访问。
[0011] 优选地,所述闪存包括闪存用户区和闪存信息区,所述闪存控制单元针对闪存的访问包括对闪存用户区的访问和对闪存信息区的访问,所述控制信息包括分区保护工作方式、读保护级别和读保护状态,所述闪存控制器还包括分区保护控制单元和读保护控制单元;
[0012] 读保护控制单元,用于接收选项字节;判断当前对闪存用户区的访问是否来自调试手段,以及根据所述选项字节确定读保护级别和读保护状态;将所述读保护级别、读保护状态以及当前对闪存用户区的访问是否来自调试手段等控制信息传送给所述擦除访问过滤单元和所述读写访问过滤单元;所述访问包括读写访问和擦除访问;
[0013] 分区保护控制单元,用于确定当前的分区保护工作方式。
[0014] 优选地,所述闪存控制器还包括选项字节镜像和调试手段监测单元;
[0015] 选项字节镜像,用于复制闪存信息区中的选项字节;
[0016] 调试手段监测单元,用于监测当前对闪存用户区的访问是否来自调试手段。
[0017] 优选地,所述闪存控制器包括内部总线矩阵,所述读写访问包括需要立即响应的读写访问,需要延迟响应的读写访问,以及不需要响应的读写访问;
[0018] 读写访问过滤单元,用于在判断为需要立即响应的读写访问时,通过内部总线矩阵传送给闪存控制单元,在所述闪存控制单元根据所述读写访问完成针对闪存的访问时,产生正确完成响应信号并传送给相应的指令总线接口或数据总线接口;
[0019] 和/或,
[0020] 读写访问过滤单元,用于在判断为需要延迟响应的读写访问时,在延迟指定的时间后,通过内部总线矩阵传送给闪存控制单元,在所述闪存控制单元根据所述读写访问完成针对闪存的访问时,产生正确完成响应信号并传送给相应的指令总线接口或数据总线接口;
[0021] 和/或,
[0022] 读写访问过滤单元,用于在判断为不需要响应的读写访问时,产生错误完成响应信号并传送给相应的指令总线接口或数据总线接口。
[0023] 优选地,所述读写访问包括更改选项字节的访问;
[0024] 读写访问过滤单元,还用于在所述读写访问为更改选项字节的访问时,将所述更改选项字节的访问传送给选项字节镜像。
[0025] 优选地,所述擦除访问包括需要响应的擦除访问和不需要响应的擦除访问;
[0026] 擦除访问过滤单元,用于在判断为需要响应的擦除访问时,将所述需要响应的擦除访问传送给所述闪存控制单元,在闪存控制单元根据所述擦除访问完成针对闪存的访问时,产生成功擦除响应信号并传送给所述配置寄存器;
[0027] 和/或,
[0028] 擦除访问过滤单元,用于在判断为不需要响应的擦除访问时,产生失败擦除响应信号并传送给所述配置寄存器。
[0029] 优选地,所述配置寄存器包括擦除访问完成状态位;
[0030] 配置寄存器,用于在接收到所述成功擦除响应信号或者所述失败擦除响应信号时,更改所述擦除访问完成状态位;
[0031] 优选地,所述配置寄存器包括出错标志位;
[0032] 配置寄存器,用于在接收到所述失败擦除响应信号时,更改所述出错标志位。
[0033] 优选地,所述内部总线矩阵为指令总线和数据总线的互联矩阵。
[0034] 优选地,所述闪存控制器包括主控单元,
[0035] 所述主控单元,用于控制闪存控制器各个模块协调工作。
[0036] 本发明实施例还公开了一种闪存控制器的控制方法,所述闪存控制器包括指令总线接口、数据总线接口、配置寄存器、擦除访问过滤单元、读写访问过滤单元和闪存控制单元;
[0037] 采用所述读写访问过滤单元接收控制信息;当接收到来自指令总线接口或数据总线接口的读写访问时,根据所述控制信息判断是否将所述读写访问传送给闪存控制单元;
[0038] 采用所述擦除访问过滤单元接收控制信息;当接收到来自配置寄存器的擦除访问时,根据所述控制信息判断是否将所述擦除访问传送给闪存控制单元;
[0039] 采用所述闪存控制单元根据所述读写访问或擦除访问完成针对闪存的访问。
[0040] 优选地,所述闪存包括闪存用户区和闪存信息区,所述闪存控制单元针对闪存的访问包括对闪存用户区的访问和对闪存信息区的访问,所述控制信息包括分区保护工作方式、读保护级别和读保护状态,所述闪存控制器还包括分区保护控制单元和读保护控制单元;所述的方法还包括:
[0041] 采用读保护控制单元接收选项字节;判断当前对闪存用户区的访问是否来自调试手段,以及根据所述选项字节确定读保护级别和读保护状态;将所述读保护级别、读保护状态以及当前对闪存用户区的访问是否来自调试手段等控制信息传送给所述擦除访问过滤单元和所述读写访问过滤单元;所述访问包括读写访问和擦除访问;
[0042] 采用分区保护控制单元确定当前的分区保护工作方式。
[0043] 优选地,所述闪存控制器还包括选项字节镜像和调试手段监测单元;所述的方法还包括:
[0044] 采用选项字节镜像复制闪存信息区中的选项字节;
[0045] 采用调试手段监测单元监测当前对闪存用户区的访问是否来自调试手段。
[0046] 优选地,所述闪存控制器包括内部总线矩阵,所述读写访问包括需要立即响应的读写访问,需要延迟响应的读写访问,以及不需要响应的读写访问;所述的方法还包括:
[0047] 采用读写访问过滤单元在判断为需要立即响应的读写访问时,通过内部总线矩阵传送给闪存控制单元,在所述闪存控制单元根据所述读写访问完成针对闪存的访问时,产生正确完成响应信号并传送给相应的指令总线接口或数据总线接口;
[0048] 和/或,
[0049] 采用读写访问过滤单元在判断为需要延迟响应的读写访问时,在延迟指定的时间后,通过内部总线矩阵传送给闪存控制单元,在所述闪存控制单元根据所述读写访问完成针对闪存的访问时,产生正确完成响应信号并传送给相应的指令总线接口或数据总线接口;
[0050] 和/或,
[0051] 采用读写访问过滤单元在判断为不需要响应的读写访问时,产生错误完成响应信号并传送给相应的指令总线接口或数据总线接口。
[0052] 优选地,所述读写访问包括更改选项字节的访问;所述的方法还包括:
[0053] 采用读写访问过滤单元在所述读写访问为更改选项字节的访问时,将所述更改选项字节的访问传送给选项字节镜像。
[0054] 优选地,所述擦除访问包括需要响应的擦除访问和不需要响应的擦除访问;所述的方法还包括:
[0055] 采用擦除访问过滤单元在判断为需要响应的擦除访问时,将所述需要响应的擦除访问传送给所述闪存控制单元,在闪存控制单元根据所述擦除访问完成针对闪存的访问时,产生成功擦除响应信号并传送给所述配置寄存器;
[0056] 和/或,
[0057] 采用擦除访问过滤单元在判断为不需要响应的擦除访问时,产生失败擦除响应信号并传送给所述配置寄存器。
[0058] 优选地,所述配置寄存器包括擦除访问完成状态位;所述的方法还包括:
[0059] 采用配置寄存器在接收到所述成功擦除响应信号或者所述失败擦除响应信号时,更改所述擦除访问完成状态位;
[0060] 优选地,所述配置寄存器包括出错标志位;所述的方法还包括:
[0061] 采用配置寄存器在接收到所述失败擦除响应信号时,更改所述出错标志位。
[0062] 优选地,所述内部总线矩阵为指令总线和数据总线的互联矩阵。
[0063] 与现有技术相比,本发明实施例包括以下优点:
[0064] 在本发明实施例中,读写访问过滤单元和擦除访问过滤单元根据接收到的控制信息,在接收到读写访问或者擦除访问时,可以根据控制信息判断是否将所述读写访问或者擦除访问传送给闪存控制单元,使得闪存控制单元根据所述读写访问或擦除访问完成针对闪存的访问。本发明实施例在多家公司合作开发程序时,根据控制信息确定是否允许访问闪存,从而可以保护在闪存用户区中的程序不被合作开发程序的其他公司窃取。

附图说明

[0065] 图1是本发明的一种基于哈佛结构CPU的MCU芯片的系统结构示意图;
[0066] 图2是本发明的一种闪存控制器实施例的结构框图;
[0067] 图3是本发明的一种基于若干分区的MCU芯片闪存控制器的工作流程示意图;
[0068] 图4是本发明的一种闪存控制器的控制方法实施例的步骤流程图。

具体实施方式

[0069] 为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
[0070] 下面介绍了本发明实施例的一种MCU芯片的信息保护方案。
[0071] 通过闪存信息区的若干控制位来控制闪存控制器的读保护级别。闪存控制器的读保护级别分三级,各级别的特征如下:
[0072] 零级读保护:闪存用户区完全开放,可以任意读、写和擦除。闪存信息区也一样完全开放。
[0073] 一级读保护:从闪存用户区启动可以正常访问闪存用户区;其他启动方式(包括从其他位置启动以及JTAG(Joint Test Action Group,联合测试工作组))等调试手段均不能访问闪存用户区,读、写和擦除等操作都不行。在此级别下,可以访问闪存信息区,但如果修改控制位将闪存控制器的读保护级别改为零级,闪存用户区的内容会全部被擦除。
[0074] 二级读保护:从闪存用户区启动可以正常访问闪存用户区;其他启动方式(包括从其他位置启动以及JTAG等调试手段)均不可用。在此级别下,闪存信息区只可读,不可写,也不可擦除。
[0075] 上述的MCU芯片的信息保护方案是将闪存用户区作为一个整体来保护的。如果MCU芯片的程序完全由一家公司来开发,采用此方案可以满足需求。但随着MCU芯片应用日趋复杂,MCU芯片的程序会越来越复杂。将来会有多家公司合作开发程序的需求。而该MCU芯片信息保护方案是满足不了的。因为它只能保护闪存用户区的内容不被客户窃取,不能阻止合作开发程序的公司之间相互窃取对方的程序。基于这样的需求,本发明实施例进一步提出了一种MCU芯片的信息保护方案。
[0076] 应用本发明实施例的MCU信息保护方案,可以满足两家公司合作开发MCU芯片程序的需求。本发明实施例将闪存用户区分为若干分区,合作开发程序的多家公司可分别将自己开发的程序烧写到属于自己的分区中。本发明实施例可以保证多家公司的程序之间既可以正常实现相互调用,又不能相互窃取对方分区中的程序,同时保护程序不被客户窃取。另外,如果SRAM和其他外围设备都由合作的多家公司共享,程序有可能通过这些共享资源被合作方窃取。对此,本发明实施例还可以将特定SRAM或外围设备划分给某一方作为私有设备,扩宽了本发明实施例的应用范围。
[0077] 参照图1,示出了本发明的一种基于哈佛结构CPU的MCU芯片的系统结构示意图,MCU芯片通常包含CPU、总线、闪存、闪存控制器、SRAM、各种主设备和从设备(外围设备)等等。其中,所述总线可以包括指令总线、数据总线和系统总线。在具体实现中,CPU通过指令总线、数据总线和系统总线与总线互联矩阵相连。指令总线负责读取指令;数据总线负责数据访问;系统总线负责访问外围设备。
[0078] MCU芯片的闪存控制器是连接总线和闪存的桥梁。闪存控制器有同样的三条总线与总线互联矩阵相连,其中指令总线负责接受CPU的取指令访问;数据总线负责接受CPU的数据访问;它的配置寄存器是通过系统总线被访问的。SRAM以及各种外围设备都是连接在总线互联矩阵上的。在本发明实施例中,在多家公司合作开发MCU芯片的程序时,可以将若干分区分别划分给合作开发程序的多家公司,并且可以将外围设备设计为某一分区的私有设备,每个分区具有对应的分区使能信号,私有设备会受闪存控制器输出的分区使能信号控制。
[0079] 所述“访问”包含所有的操作。MCU芯片的总线有读操作和写操作,那么总线访问包含读操作和写操作。闪存有读操作、写操作和擦除操作,那么对闪存的访问就包含读操作、写操作和擦除操作。
[0080] 参照图2,示出了本发明的一种闪存控制器实施例的结构框图,所述闪存控制器可以包括指令总线接口、数据总线接口、配置寄存器、擦除访问过滤单元、读写访问过滤单元和闪存控制单元;
[0081] 读写访问过滤单元,用于接收控制信息;当接收到来自指令总线接口或数据总线接口的读写访问时,根据所述控制信息判断是否将所述读写访问传送给闪存控制单元;
[0082] 擦除访问过滤单元,用于接收控制信息;当接收到来自配置寄存器的擦除访问时,根据所述控制信息判断是否将所述擦除访问传送给闪存控制单元;
[0083] 闪存控制单元,用于根据所述读写访问或擦除访问完成针对闪存的访问。
[0084] 在本发明的一种优选实施例中,所述闪存控制器包括内部总线矩阵,所述读写访问包括需要立即响应的读写访问,需要延迟响应的读写访问,以及不需要响应的读写访问;
[0085] 读写访问过滤单元,用于在判断为需要立即响应的读写访问时,通过内部总线矩阵传送给闪存控制单元,在所述闪存控制单元根据所述读写访问完成针对闪存的访问时,产生正确完成响应信号并传送给相应的指令总线接口或数据总线接口;
[0086] 和/或,
[0087] 读写访问过滤单元,用于在判断为需要延迟响应的读写访问时,在延迟指定的时间后,通过内部总线矩阵传送给闪存控制单元,在所述闪存控制单元根据所述读写访问完成针对闪存的访问时,产生正确完成响应信号并传送给相应的指令总线接口或数据总线接口;
[0088] 和/或,
[0089] 读写访问过滤单元,用于在判断为不需要响应的读写访问时,产生错误完成响应信号并传送给相应的指令总线接口或数据总线接口。
[0090] 读写访问过滤单元的作用是立即放行需要立即响应的读写访问,延迟放行需要延迟响应的读写访问,以及过滤不需要响应的读写访问。控制的依据是所述分区保护工作方式和读保护方法,以及控制通路6和控制通路7传来的控制信息。来自指令总线接口和数据总线接口的读写访问分别通过数据路径1和数据路径2传送给读写访问过滤单元;未被过滤掉的来自指令总线接口和数据总线接口的读写访问分别通过数据路径3和数据路径4传送给内部总线矩阵。对于需要立即响应的读写访问,读写访问过滤单元会立即将它们传送给内部总线矩阵,并在访问完成时将正确完成的响应信号发送给相应的总线接口(指令总线接口或数据总线接口)。对于需要延迟响应的读写访问,读写访问过滤单元会延迟特定的时间之后再将它们传送给内部总线矩阵,并在访问完成时将正确完成的响应信号发送给相应的总线接口。对于不需要响应的读写访问,读写访问过滤单元不会将他们传送给内部总线矩阵,而是直接将错误完成的响应信号发送给相应的总线接口。
[0091] 在本发明实施例中,闪存控制单元的作用是根据闪存的控制方法和时序要求控制闪存,完成针对闪存的各种访问。
[0092] 在本发明的一种优选实施例中,所述读写访问可以包括更改选项字节的访问;
[0093] 读写访问过滤单元,还用于在所述读写访问为更改选项字节的访问时,将所述更改选项字节的访问传送给选项字节镜像。
[0094] 在本发明实施例中,如果当前访问是需要响应的更改选项字节的访问,读写访问过滤单元会通过数据路径8将该访问传送给选项字节镜像。
[0095] 在本发明的一种优选实施例中,所述擦除访问包括需要响应的擦除访问和不需要响应的擦除访问;
[0096] 擦除访问过滤单元,用于在判断为需要响应的擦除访问时,将所述需要响应的擦除访问传送给所述闪存控制单元,在闪存控制单元根据所述擦除访问完成针对闪存的访问时,产生成功擦除响应信号并传送给所述配置寄存器;
[0097] 和/或,
[0098] 擦除访问过滤单元,用于在判断为不需要响应的擦除访问时,产生失败擦除响应信号并传送给所述配置寄存器。
[0099] 在本发明的一种优选实施例中,所述配置寄存器包括擦除访问完成状态位;
[0100] 配置寄存器,用于在接收到所述成功擦除响应信号或者所述失败擦除响应信号时,更改所述擦除访问完成状态位;
[0101] 在本发明的一种可选实施例中,所述配置寄存器可以包括出错标志位;
[0102] 配置寄存器,用于在接收到所述失败擦除响应信号时,更改所述出错标志位。
[0103] 参照图2,指令总线接口连接指令总线,数据总线接口连接数据总线。它们的作用是遵循总线协议接受相应总线的访问,通过数据路径1和数据路径2将相应总线的读写访问传送给读写访问过滤单元,并根据读写访问过滤单元的状态产生总线响应信号。总线响应信号包含当前读写访问是否完成,以及当前读写访问完成得是否正确等信息。
[0104] 系统总线接口连接系统总线。系统总线通过系统总线接口和数据路径6访问配置寄存器。配置寄存器包含闪存控制器的所有配置信息和状态信息。更改配置寄存器可以调整闪存控制器的工作模式,查询配置寄存器可以了解闪存控制器的工作状态。相关控制信息通过控制通路1与主控单元交互。对闪存的擦除访问是通过配置寄存器发起的。配置寄存器包含需要擦除的地址空间和擦除使能相关的配置位,还包含表征擦除访问是否完成的擦除访问完成状态位。相关控制信息通过控制通路2与擦除访问过滤单元交互。
[0105] 擦除访问过滤单元的作用是放行需要响应的擦除访问和过滤不需要响应的擦除访问。控制的依据是所述分区保护工作方式和读保护方法,以及控制通路4和控制通路5传来的控制信息。需要响应的擦除访问由配置寄存器发起,通过控制通路2到达擦除访问过滤单元,再通过控制通路3到达闪存控制单元,由闪存控制单元控制闪存完成,完成信息通过控制通路3、擦除访问过滤单元和控制通路2反馈给配置寄存器,更新擦除访问完成状态位。不需要响应的擦除访问由配置寄存器发起,通过控制通路2到达擦除访问过滤单元,擦除访问过滤单元不是将该访问传送给闪存控制单元而是直接将完成信息通过控制通路2反馈给配置寄存器,更新擦除访问完成状态位。可选的,在本发明实施例中,如果配置寄存器中有擦除访问出错标志位,此时可将该标志位置1,表示擦除访问出错。
[0106] 在本发明的一种优选实施例中,所述内部总线矩阵为指令总线和数据总线的互联矩阵。
[0107] 参照图2,内部总线矩阵就是普通的总线互联矩阵。它的作用是将两条总线(数据通路3和数据通路4)合为一条总线(数据通路5)。当数据路径3和数据路径4之中只有一条数据路径上有访问时,内部总线矩阵会直接通过数据路径5将该访问传送给闪存控制单元。当数据通路3和数据通路4上同时有访问时,内部总线矩阵会选择其中之一先通过数据路径5传送给闪存控制单元,等该访问完成后再将另一个访问通过数据路径5传送给闪存控制单元。选择的方法有很多,可以永远优先选择来自数据路径4的访问,也可以用其他选择方法,本发明实施例对此不做限制。
[0108] 在本发明的一种优选实施例中,所述闪存控制器还可以包括主控单元,所述主控单元的作用是控制闪存控制器各模块协调工作。
[0109] 在本发明的一种优选实施例中,所述闪存可以包括闪存用户区和闪存信息区,所述闪存控制单元针对闪存的访问可以包括对闪存用户区的访问和对闪存信息区的访问,所述控制信息可以包括分区保护工作方式、读保护级别和读保护状态,所述闪存控制器还可以包括分区保护控制单元和读保护控制单元;
[0110] 读保护控制单元,用于接收选项字节;判断当前对所述闪存用户区的访问是否来自调试手段,以及根据所述选项字节确定读保护级别和读保护状态;将所述读保护级别、读保护状态以及当前对所述闪存用户区的访问是否来自调试手段等控制信息传送给所述擦除访问过滤单元和所述读写访问过滤单元;所述访问包括读写访问和擦除访问;
[0111] 分区保护控制单元,用于确定当前的分区保护工作方式。
[0112] 参照图2,在本示例中读保护控制单元的作用是根据控制通路8传来的信息确定当前访问是否来自调试手段,根据控制通路9传来的信息确定当前的读保护级别和读保护状态,并将擦除访问过滤相关的控制信息通过控制通路5传送给擦除访问过滤单元,将读写访问过滤相关的控制信息通过控制通路7传送给读写访问过滤单元。
[0113] 分区保护控制单元的作用是根据分区保护工作方式来确定当前处于什么分区工作状态,包括初始状态,各个分区的分区工作状态和过渡状态。并将当前的状态信息通过控制通路4传送给擦除访问过滤单元,通过控制通路6传送给读写访问过滤单元。
[0114] 在本发明的一种优选实施例中,所述闪存控制器还包括选项字节镜像和调试手段监测单元;
[0115] 选项字节镜像,用于复制所述闪存信息区中的选项字节;
[0116] 调试手段监测单元,用于监测当前对所述闪存用户区的访问是否来自调试手段。
[0117] 参照图2,在本示例中选项字节镜像是闪存信息区的选项字节的镜像寄存器。它的内容时刻与闪存信息区的选项字节保持一致。在芯片上电时,闪存控制单元会通过数据路径7自动将闪存信息区的选项字节内容复制到选项字节镜像中。在芯片运行时,如果要更改选项字节,读写访问过滤单元会通过数据路径8同时更改选项字节镜像。
[0118] 调试手段监测单元的作用是监测当前对闪存用户区的访问是否来自调试手段。本发明实施例限制除CPU之外的其他主设备不能访问闪存用户区,所以对闪存用户区的访问只可能来自CPU。如果CPU从闪存用户区启动,则判断当前访问来自正常工作方式;如果CPU从其他位置(如片上SRAM)启动或各种调试接口(如JTAG)正在控制CPU,则判断当前访问来自调试手段。
[0119] 应用本发明实施例,至少具有如下两个优点:第一,保护闪存的内容不被终端客户窃取;第二,确保合作开发程序的多家公司之间不能相互窃取对方的程序。
[0120] 合作开发程序的多家公司一定有一家是开发主程序的,其他则是开发库函数的。此处将开发主程序的公司称为主公司,开发库函数的公司称为从公司。合作开发程序的多家公司分别对应的不同的分区。较佳地,主分区位于靠前段地址空间,从分区位于靠后段地址空间。这样便于MCU芯片启动时率先执行主公司的程序。本发明实施例的MCU芯片信息保护的方法可以分为三部分来描述:第一部分是分区保护工作方式;第二部分是读保护的定义及使用方法;第三部分是私有设备的实现方法。前两部分是在闪存控制器中实现的;第三部分是根据闪存控制器输出的分区使能信号在私有设备中实现的。
[0121] 第一部分:分区保护工作方式。
[0122] 在闪存用户区启动时,闪存用户区可以正常接受CPU指令总线的访问,并可以受限制的接受CPU数据总线的访问,但不接受其他主设备的访问。
[0123] 参照图3所示的本发明的一种基于若干分区的MCU芯片闪存控制器的工作流程示意图,在本示例中,闪存用户区共有n个分区,每个分区分别具有对应工作状态、过渡状态以及一系列判断条件。在图3中只详细描述了第x分区工作状态,其他分区是类似的。在本发明实施例中有多少个分区,就可以有多少个分区状态,在以下的步骤中为了较好理解,只描述了第x分区工作状态、第y分区工作状态和第z分区工作状态,其他分区工作状态则略去了,但是不应当理解本发明实施例只有第x分区工作状态、第y分区工作状态和第z分区工作状态。其中,x,y,z,k都是大于等于1且小于等于n的任意正整数,x,y,z互不相等,且k不等于x。当n等于2这个特殊值时,1到n之间只有1和2两个正整数,在此情况下z不存在。具体的步骤如下所示:
[0124] 在MCU芯片复位后,闪存控制器处于初始状态。在初始状态下,指令总线可以访问所有分区,数据总线不能访问任何分区。如果指令总线没有访问闪存用户区,则保持在初始状态;否则,根据指令总线所访问的地址属于哪个分区来跳转到对应该分区的分区工作状态。
[0125] 在第x分区工作状态下,指令总线可以访问所有分区,数据总线可以访问第x分区但不能访问其他分区(若访问其他分区,返回错误响应)。如果指令总线没有访问闪存用户区,则保持在当前状态;否则,如果指令总线访问的是第x分区,则保持当前的分区工作状态,如果指令总线访问的是其他分区,则跳转到第x分区过渡状态。
[0126] 在第x分区过渡状态下,首先要记录刚才指令总线访问的是哪个分区(设为第k分区),同时暂停响应指令总线,数据总线可以访问第x分区但不能访问其他分区(访问其他分区,返回错误响应)。如果还没有达到预设的等待时间,则保持在当前状态;否则,跳转到第k分区工作状态。
[0127] 在本发明的具体应用的一种示例中,在过渡状态中的预设等待时间的长短与MCU芯片的CPU的特性相关。哈佛结构CPU通过指令总线读取指令,通过数据总线完成数据访问,两者是并行工作的。CPU通过指令总线取得要执行的指令,经过指令解析得出是否需要数据访问以及需要访问哪个地址的数据,然后通过数据总线完成相应数据访问。
[0128] 从指令总线读取指令到数据总线完成相应数据访问要经过若干周期。过渡状态的作用就是在阻止针对其他分区的指令总线访问完成的同时,让之前针对当前工作分区的指令所对应的数据访问都完成,然后再跳转到新的工作分区。等待时间需足够长,以确保之前针对当前工作分区的指令所对应的数据访问都完成。以ARM Cortex-M3为例,等待时间可设置为20个CPU时钟周期。
[0129] 第二部分:读保护的定义及使用方法。
[0130] 在本发明的一种优选实施例中,所述MCU芯片可以包括闪存信息区,所述闪存信息区可以包括选项字节;所述闪存用户区可以具有读保护级别,所述若干分区可以分别具有对应的读保护状态;所述的方法还可以包括如下:
[0131] 依据所述选项字节确定所述闪存用户区的读保护级别和各个分区的读保护状态。读保护的作用是限制各种调试手段对闪存用户区的访问。各种调试手段指,从除闪存用户区之外的其他位置启动,以及JTAG(Joint Test Action Group,联合测试工作组)等调试手段。在所述各种读保护级别和读保护状态下,从闪存用户区启动时,CPU都可以按分区保护工作方式访问闪存用户区。
[0132] 读保护级别分为三级,分别是零级、一级和二级。读保护状态仅在一级读保护下有效,闪存用户区的每个分区都有对应的读保护状态,若干个分区对应的读保护状态可以同时有效或同时无效。选项字节控制读保护级别和读保护状态的方法随意,只要能区分不同的读保护级别和读保护状态并且方便读保护级别和读保护状态按上述要求切换即可。作为实施例介绍一种控制方法如下。由一个字节来控制读保护级别:当该字节为0xA5(0x代表A5是十六进制数)时,读保护级别为零级;当该字节为0xFF时,读保护级别为一级;当该字节为0x5A时,读保护级别为二级。由n个字节来分别控制n个分区对应的读保护状态:当其中某字节为0xFF时,对应分区的读保护状态为无效;当其中某字节为0x00时,对应分区的读保护状态为有效。
[0133] 读保护级别和读保护状态的特征如下:
[0134] 零级读保护是MCU芯片的出厂设置。在此级别下,闪存用户区可以接受各种调试手段的访问;选项字节可以接受读、写和擦除操作。
[0135] 一级读保护是给合作开发程序的若干家公司用的。在此级别下,闪存用户区的每个分区都有对应的读保护状态。当读保护状态为无效时,对应分区可以接受各种调试手段的访问;当读保护状态为有效时,对应分区不能接受任何调试手段的访问。芯片的出厂设置是每个分区的读保护状态都为无效。选项字节可以接受读、写和擦除操作。也就是说,读保护状态和读保护级别都可以随意更改。但是,如果将已配置为有效的读保护状态更改为无效,对应分区的内容会在读保护状态变为无效之前自动被全部擦除;如果将读保护级别更改为零级,整个闪存用户区的内容会在读保护级别变为零级之前自动被全部擦除。
[0136] 二级读保护是MCU芯片交到终端客户手中的形态。在此级别下,所有调试手段均不可用;选项字节只接受读操作,不接受写操作和擦除操作。
[0137] 第三部分:私有设备的实现方法。
[0138] 在本发明的一种优选实施例中,所述MCU芯片可以设计有私有设备,所述若干分区可以分别具有对应的分区使能信号,所述私有设备可以用于在接收到所述分区使能信号时正常工作。
[0139] 在本发明实施例中,私有设备是通过闪存控制器输出的分区使能信号控制的设备。每个分区可以对应1比特分区使能信号。分区使能信号表示对应分区处于工作状态。例如,分区使能信号在对应分区的分区工作状态和分区过渡状态下为1,其他状态下为0。控制的方法就是根据特定分区使能信号的状态,开启或关闭相应设备的部分或全部功能。
[0140] 例如,若想让某私有SRAM只允许主公司的程序读,可以用主分区使能信号来作为SRAM读通路的使能信号;若想让某私有设备的运算结果寄存器只允许某个从公司的程序读,可以用该从公司对应的从分区使能信号来选通结果寄存器的读通路;若想让某私有设备只允许主公司的程序配置,可以用主分区使能信号来作为设备寄存器的配置使能信号。
[0141] 当然,在实际中也可以不设计私有设备。比如全部的设备可以为共享,本发明实施例对此不加以限制。
[0142] 参照图4,示出了本发明的一种闪存控制器的控制实施例的步骤流程图,所述闪存控制器可以包括指令总线接口、数据总线接口、配置寄存器、擦除访问过滤单元、读写访问过滤单元和闪存控制单元;
[0143] 步骤201,采用所述读写访问过滤单元接收控制信息;当接收到来自指令总线接口或数据总线接口的读写访问时,根据所述控制信息判断是否将所述读写访问传送给闪存控制单元;
[0144] 步骤202,采用所述擦除访问过滤单元接收控制信息;当接收到来自配置寄存器的擦除访问时,根据所述控制信息判断是否将所述擦除访问传送给闪存控制单元;
[0145] 步骤203,采用所述闪存控制单元根据所述读写访问或擦除访问完成针对闪存的访问。
[0146] 在本发明的一种优选实施例中,所述闪存包括闪存用户区和闪存信息区,所述闪存控制单元针对闪存的访问包括对闪存用户区的访问和对闪存信息区的访问,所述控制信息包括分区保护工作方式、读保护级别和读保护状态,所述闪存控制器还包括分区保护控制单元和读保护控制单元;所述的方法还可以包括如下步骤:
[0147] 采用读保护控制单元接收选项字节;判断当前对所述闪存用户区的访问是否来自调试手段,以及根据所述选项字节确定读保护级别和读保护状态;将所述读保护级别、读保护状态以及当前对所述闪存用户区的访问是否来自调试手段等控制信息传送给所述擦除访问过滤单元和所述读写访问过滤单元;所述访问包括读写访问和擦除访问;
[0148] 采用分区保护控制单元确定当前的分区保护工作方式。
[0149] 在本发明的一种优选实施例中,所述闪存控制器还包括选项字节镜像和调试手段监测单元;所述的方法还可以包括如下步骤:
[0150] 采用选项字节镜像复制所述闪存信息区中的选项字节;
[0151] 采用调试手段监测单元监测当前对所述闪存用户区的访问是否来自调试手段。
[0152] 在本发明的一种优选实施例中,所述闪存控制器包括内部总线矩阵,所述读写访问包括需要立即响应的读写访问,需要延迟响应的读写访问,以及不需要响应的读写访问;所述的方法还可以包括如下步骤:
[0153] 采用读写访问过滤单元在判断为需要立即响应的读写访问时,通过内部总线矩阵传送给闪存控制单元,在所述闪存控制单元根据所述读写访问完成针对闪存的访问时,产生正确完成响应信号并传送给相应的指令总线接口或数据总线接口;
[0154] 和/或,
[0155] 采用读写访问过滤单元在判断为需要延迟响应的读写访问时,在延迟指定的时间后,通过内部总线矩阵传送给闪存控制单元,在所述闪存控制单元根据所述读写访问完成针对闪存的访问时,产生正确完成响应信号并传送给相应的指令总线接口或数据总线接口;
[0156] 和/或,
[0157] 采用读写访问过滤单元在判断为不需要响应的读写访问时,产生错误完成响应信号并传送给相应的指令总线接口或数据总线接口。
[0158] 在本发明的一种优选实施例中,所述读写访问包括更改选项字节的访问;所述的方法还可以包括如下步骤:
[0159] 采用读写访问过滤单元在所述读写访问为更改选项字节的访问时,将所述更改选项字节的访问传送给选项字节镜像。
[0160] 在本发明的一种优选实施例中,所述擦除访问包括需要响应的擦除访问和不需要响应的擦除访问;所述的方法还可以包括如下步骤:
[0161] 采用擦除访问过滤单元在判断为需要响应的擦除访问时,将所述需要响应的擦除访问传送给所述闪存控制单元,在闪存控制单元根据所述擦除访问完成针对闪存的访问时,产生成功擦除响应信号并传送给所述配置寄存器;
[0162] 和/或,
[0163] 采用擦除访问过滤单元在判断为不需要响应的擦除访问时,产生失败擦除响应信号并传送给所述配置寄存器。
[0164] 在本发明的一种优选实施例中于,所述配置寄存器包括擦除访问完成状态位;
[0165] 采用配置寄存器在接收到所述成功擦除响应信号或者所述失败擦除响应信号时,更改所述擦除访问完成状态位;
[0166] 在本发明的一种优选实施例中,所述配置寄存器包括出错标志位;所述的方法还可以包括如下步骤:
[0167] 采用配置寄存器在接收到所述失败擦除响应信号时,更改所述出错标志位。
[0168] 在本发明的一种优选实施例中,所述内部总线矩阵为指令总线和数据总线的互联矩阵。
[0169] 在本发明的一种优选实施例中,所述闪存控制器包括主控单元,所述的方法还包括:
[0170] 采用所述主控单元控制闪存控制器各个模块协调工作。
[0171] 需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
[0172] 本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0173] 以上对本发明所提供的一种闪存控制器和一种闪存控制器控制的方法,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。