嵌入式NorFlash数据安全存储系统设计

2022-09-11

在嵌入式系统应用中, Flash是必不可少的一种设备, 例如在嵌入式Linux应用中, 它是Boot Loader、Linux内核和文件系统的最佳载体。嵌入式系统应用中存在两种主要的Flash类型, 一种是Nor Flash, 另外一种是Nand Flash。Nor Flash技术是Intel于1988年提出, 用于替代当时在市场上占据主要地位的EPROM和EEPROM。紧接着Toshiba发表了Nand Flash结构, 强调降低每比特的成本, 有更高的性能, 并且像磁盘一样可以通过接口轻松升级。Nor Flash的特点是芯片内执行 (XIP, e Xecute In Place) , 这样应用程序可以直接在Flash闪存内运行, 不必再把代码读到系统RAM中。Nor Flash的传输效率很高, 在1~4MByte的小容量时具有很高的成本效益, 并且具备高可靠性和易于使用等优点[1,2,3]。

在嵌入式产品应用中, Nor Flash是重要的数据存储载体, 可存储嵌入式操作系统、各种可执行的应用软件和关键数据。数据在存储过程中往往会按照某种存储序列要求, 将Flash划分为不同的分区, 用于存储不同类型的数据。Flash中某些关键分区在写入数据后, 一般不需要进行改动, 而这些分区存储的数据往往是应用系统的核心数据所在, 例如在嵌入式Linux应用中, 在Flash中划分了Boot Loader、Linux内核、根文件系统、用户文件系统等分区, 其中Boot Loader、Linux内核和根文件系统分区写入数据后一般不涉及到改动。而在嵌入式系统应用中Flash关键分区数据遭受损害往往会导致系统运行异常, 例如操作系统数据的破坏, 将直接导致系统无法运行, 对于产品应用来说这样的结果将是致命性的[4]。

本文实现了一种嵌入式Nor Flash数据安全存储系统设计方法, 给出了详细的处理机制, 可以解决在系统启动、运行过程及系统复位中Flash关键分区数据被恶意修改和非法访问的问题[2]。

一、系统设计与实现

本文设计并实现了一种嵌入式Nor Flash数据安全存储系统, 包括嵌入式处理器控制电路、与处理器控制电路相连的CPLD控制电路和与CPLD控制电路相连的Flash写保护接口电路, 系统设计如图1所示。

如图1所示该系统设计的电路包括嵌入式处理器控制电路、CPLD控制电路和Flash写保护接口电路。其中CPLD控制电路包括IOA管脚、IOB管脚和REG_BIT寄存器, Flash写保护接口电路包括写保护控制管脚。IOA管脚、IOB管脚和REG_BIT寄存器的逻辑关系是IOA= (IOB+REG_BIT) , IOA管脚与Flash写保护接口电路连接, 用于向Flash写保护接口电路的写保护控制管脚输出电平, IOB管脚与跳线帽连接。在研发或生产调试阶段, 当IOB所接电路的跳线帽接上时, IOB管脚输入高电平, IOA管脚会输出一个高电平, 处于这种状态下的Flash芯片会解除锁定, 此时可以对Flash芯片进行烧写、升级数据等操作, Flash芯片的写操作权限是完全开放的。在产品正式发布时是不需要接跳线帽的, 应用程序可以通过访问和控制CPLD控制电路的REG_BIT寄存器状态, 实时的调整Flash芯片的写保护状态, 具有高度的灵活性和可操作性。此安全存储系统针对嵌入式系统启动、运行过程和系统复位, 分别实现了对Flash芯片数据安全保护[3]。

(一) 系统启动阶段保护机制

在嵌入式系统启动阶段, 系统往往处于不稳定状态, 容易受到外部的干扰, 此时需要禁止对Flash的写入操作。如图2所示是系统启动阶段Flash数据安全保护机制:

(1) 在系统上电启动, CPLD控制电路检测IOB管脚输入是否为低电平, 如果IOB管脚输入低电平, 则执行2) ;如果IOB管脚输入高电平, 则执行4) 。

(2) CPLD控制电路检测REG_BIT寄存器的值是否为0, 如果REG_BIT寄存器的值为0, 则执行3) ;如果REG_BIT寄存器的值为1, 则执行4) 。

(3) IOA管脚输出低电平, 对Flash芯片进行写锁定[4]。

(4) IOA管脚输出高电平给Flash写保护接口电路的写保护控制管脚, 解除对Flash芯片的写锁定。

由于在系统启动阶段中, 默认设置REG_BIT寄存器的值为0, 并且设置IOB管脚输入低电平, 同时没有接上跳线帽, 则对Flash芯片进行了写锁定, 保证了Flash在启动过程中禁止写入操作。

(二) 系统运行阶段保护机制

在嵌入式系统成功加载操作系统、文件系统和应用程序后, 需要防止应用程序恶意或非法修改Flash关键数据, 安全存储系统启动应用程序运行过程的Flash数据安全保护机制:

(1) 访问CPLD控制电路, 在CPLD控制电路的REG_BIT寄存器写入值为1。

(2) CPLD控制电路的IOA管脚输出高电平给Flash写保护接口电路的写保护控制管脚, 解除对Flash芯片的写锁定, 应用程序可以对指定分区的Flash数据进行读写操作。

(3) 访问Flash芯片内部的保护寄存器, 写入对应的控制字命令, 对Flash芯片内部指定的分区所包含的扇区sector进行锁定, 例如Flash芯片内部指定的分区Boot Loader、Linux Kernel、根文件系统分区等, 使得Flash关键数据分区被锁定而不允许被非法改写。

在应用程序开始运行时, 系统可以通过对CPLD控制电路的REG_BIT寄存器写入数值1来解除对Flash芯片指定区域的写保护, 具有高度的操作灵活性。同时访问Flash芯片内部的保护寄存器, 通过写入特定的控制字, 对Flash芯片内部指定的分区所包含的扇区sector进行锁定, 使得Flash关键数据所在的特定分区被锁定不允许非法写入。在嵌入式系统应用中, 有些特定分区例如Boot Loader、Linux Kernel、根文件系统分区, 在系统运行过程中一般不再需要进行写入, 因此可以对这些分区所包含的扇区sector进行锁定, 从而提高Flash分区数据的安全性。

(三) 系统复位阶段保护机制

在系统复位阶段, 需要防止外部的干扰, 安全存储系统启动系统复位过程的Flash数据安全保护机制:

(1) 应用程序访问CPLD控制电路, 在CPLD控制电路的REG_BIT寄存器写入值为0。

(2) CPLD控制电路的IOA管脚输出低电平给Flash写保护接口电路的写保护控制管脚, 对Flash芯片进行写锁定。

(3) 应用程序执行系统复位操作。

采用上述技术方案, 可以在启动和复位过程中通过外围硬件电路直接锁定Flash的写访问权限, 避免启动和复位操作中对Flash的非法写操作。同时在系统启动完成且进入稳定状态后, 才通过控制外部硬件电路放开Flash芯片写访问权限, 提高了Flash芯片访问的安全性。在系统启动完成后对Flash指定分区所包含的扇区sector进行锁定, 通过访问Nor Flash内部的保护寄存器, 写入相应控制命令可以实现对Flash指定分区的保护, 确保这些分区存储的数据不被异常破坏。将保护分区直接在Flash芯片内部寄存器级别进行锁定, 可以有效阻止在系统应用过程中外部环境干扰、各种非法指令、非法操作对Flash指定分区数据的破坏, 提高了Flash数据存储的安全性。

二、结论

本文设计了一种嵌入式Nor Flash数据安全存储系统, 此Nor Flash保护电路设计简单, 在需要进行Flash数据烧写和在线升级时, 通过接入跳线帽的方式解除对Flash的写入锁定;可以在系统正常运行的不同阶段, 根据需要通过控制外部电路可进行写锁定和解除锁定, 具有高度的灵活性和可操作性。此保护电路在系统启动、正常运行及复位过程中对Flash关键数据进行保护, 有效保障了Flash存储数据的安全性。

摘要:在嵌入式系统应用中, Flash是重要的数据存储载体, 本文介绍一种嵌入式Nor Flash数据安全存储系统设计方法, 该系统包括嵌入式处理器控制电路、与处理器控制电路相连的CPLD控制电路和与CPLD控制电路相连的Flash写保护接口电路, 可有效解决在系统启动、复位及运行过程中Flash数据被恶意修改和非法访问的问题[1]。

关键词:嵌入式系统,Nor Flash,CPLD,安全存储

参考文献

[1] 李亚峰, 欧文盛.ARM嵌入式Linux系统开发从入门到精通[M].北京:清华大学出版社, 2007.89-90.

[2] David Harris, Sarah Harris.Digital Design and Computer Architecture[M].USA:Morgan Kaufmann, 2007.44-45.

[3] 杜伟庆, 苏凯雄.嵌入式系统中NOR Flash的分块管理与实现[J].计算机与数字工程, 2009, (12) :80-85.

[4] 张金霞, 陈思捷, 乔彩婷.基于FLASH的智能卡数据掉电保护机制设计[J].电子技术与软件工程, 2015, (14) :216-218.

上一篇:腹腔镜胆囊切除术胆道损伤的预防下一篇:高考英语完形填空解题策略与技巧