NorFlash 知识点总结

一、介绍

        NorFlash(也称为 NOR 型闪存)是一种非易失性存储器,常用于嵌入式系统和存储设备中。NorFlash 是一种闪存类型,可以用于存储程序代码、固件、操作系统以及其他数据。与 NAND Flash 相比,NorFlash 具有较低的存储密度和较高的成本,但具有较快的读取速度、较低的读取延迟和较好的随机访问性能。这使得 NorFlash 适合用作执行代码和存储需要低延迟和高可靠性的关键数据的应用程序。它在嵌入式系统中被广泛应用于引导存储器和关键数据存储,为设备的启动和运行提供了可靠的解决方案。

二、相关知识补充

1、NorFlash ID

        NorFlash 的 ID 定义规则是根据具体的芯片型号和厂商的规定而定的,一般格式如下:

厂商 ID

用于标识 NorFlash 芯片的制造厂商。每个厂商都有自己独特的 ID

设备 ID

设备 ID 是指 NorFlash 芯片的设备标识符。不同芯片厂商有不同的设备 ID 命名规则

存储密度

用于标识 NorFlash 芯片的存储容量

Flash ID 可在对应的 NorFlash 手册中查询,以 GD25LT 为例:

2、命令

        主控制器通过总线发送不同的命令访问 NorFlash 芯片,常见的命令包括 GET ID、GET STATUS、READ、WRITE、ERASE 等。不同的命令拥有不同的命令字和传输协议,这部分在 NorFlash 手册中有详细的描述。以 GD25LT 的读命令为例:

        上表中可以看出,GD25LT 包含 5 种 READ 命令,对应了 5 中不同的命令传输协议,适配 NorFlash 时根据实际情况选择合适的命令即可。

3、命令传输协议

命令组成结构

        主控制器对 NorFlash 的所有操作都基于命令进行,一条命令由 Command、Address、Extra、Dummy、Data 五个命令段中的部分段组成。如下图所示:

命令段

描述

Command

命令字段

Address

地址字段

Extra

扩展字段

Dummy

延时字段

Data

数据字段

        以 GD25LT 的读命令 03H 为例,包含 1B 的命令字 03H,3B 的地址字段,后面紧接着是若干字节的数据字段。各字段数据均以 1 线方式传输:

        再以 GD25LT 的读命令 6BH 为例,包含 1B 的命令字 6BH,3B 的地址字段,8 位 Dummy 周期,后面紧接着是若干字节的数据字段。其中命令字段、地址字段以 1 线方式传输,数据字段以 4 线方式传输:

1/2/4/8 线和 SDR/DDR

        用于传输数据的 Data 线数量可能存在 1/2/4/8 这四种情况。数据线上有 SDR、DDR 两种模式,SDR 表示一个时钟周期采样一位,DDR 表示一个时钟周期采样两位。1 线 SDR 模式一个时钟周期传输一位数据,而 8 线 SDR 模式一个时钟周期传输 1 字节数据。以此类推 8 线 DDR 模式一个时钟周期传输 2 字节数据。不同芯片、不同命令、不同字段需要使用的 Data 线数量和模式都不一样,具体需要在手册中查询。

        我们在这里将一条命令的传输协议用 xy-xy-xy 的形式表示,三个部分分别代表 Command、Address、Data 字段,x 表示 Data 线数量,y 表示 Data 线模式。具体表示方式参考如下几个案例。

        还以 GD25LT 的读命令 03H 为例,从手册中可以看出 Command、Address、Data 三个字段均以 1 线形式传输,且都为 SDR 模式,因此 GD25LT 的读命令 03H 的传输协议可以被标记为 1s-1s-1s

        再看 GD25LT 的读命令 6BH,从手册中可以看出 Command、Address 这两个字段的数据通过 1 线形式传输,Data 字段以 4 线形式传输,且都为 SDR 模式,因此 GD25LT 的读命令 6BH 的传输协议可以被标记为 1s-1s-4s

        再来看一个 DDR 的情况,MT35XU 的读命令 9DH Command 字段使用 1 线 DDR 模式(可以看成 DDR 模式传输 2 字节 Cmd),Address、Data 使用 8 线 DDR 模式。因此 MT35XU 的读命令 9DH 的传输协议可以被标记为 1d-8d-8d:

Dummy

        Dummy 延时一般出现在读数据、状态命令的 Address 字段和 Data 字段之间,是为了让 Flash 有时间去准备被读取的数据。芯片手册中会规定具体的 Dummy 延时周期数,某些芯片中这个值可以通过 Nor 寄存器进行配置。

4B 地址模式

        命令传输协议中默认 Address 字段长度为 3 字节,即寻址范围为 0 - 16MB。当 NorFlash 的容量超过 16MB 时,3 字节的 Address 字段就不够了,这时需要使能 4B 地址模式。使能 4B 地址模式后,主控制器需要在传输 Address 字段是发送 4 字节地址。

Data Strobe Signal(DQS)

        DQS 信号在主控制器期读操作期间由 Flash Device 输出,一般用于在高速模式下代替 CLK 信号,已达到提高数据采样稳定性的作用。在 DQS 使能后,主控制器会根据 DQS 的时钟边沿从数据线上采样数据。

4、状态/配置寄存器

        NorFlash 芯片中包含一系列状态、配置寄存器,可以通过读取、写入状态、配置寄存器完成 NorFlash 状态查询、设置 Dummy 值、设置模式等操作。GD25LT 的状态寄存器如下所示:

        从上表中可以看状态、配置寄存器有 Volatile、Non-volatile 两种模式。Volatile 表示易失,即配置后掉电(复位)后丢失,Non-volatile 表示非易失,即配置后掉电(复位)后数据不丢失。NorFlash 会提供具体的命令用于读取、写入状态、配置寄存器。GD25LT 的读寄存器命令如下所示:

5、Busy 状态

        NorFlash 在执行擦除、写入数据、写入非易失寄存器后会立即进入 Busy 状态。在此期间除了读取状态寄存器命令外,NorFlash 不会响应任何其他的命令。在 NorFlash 内部完成对应的擦除、写入操作后会恢复到 Idle 状态,主控制器可以通过查询状态寄存器 WIP 位判断当前 NorFlash 状态,1 表示 Busy 状态,0 表示 Idle 状态。

  • 23
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Nor Flash代码是一种非易失性存储器的编程语言。Nor Flash是一种常见的闪存技术,用于存储固件、操作系统和其他固化数据。Nor Flash代码使用类似于C语言的语法,它可以用来编写存储在Nor Flash芯片中的程序和数据。以下是一个简单的Nor Flash代码示例: ```c #include <flash.h> // 定义存储位置和大小 #define FIRMWARE_START_ADDRESS 0x100000 #define FIRMWARE_SIZE 0x8000 // 定义固件数据 const uint8_t firmware_data[FIRMWARE_SIZE] = { 0x00, 0x01, 0x02, 0x03, // 在这里添加实际的固件数据 }; // 主程序入口 int main() { // 初始化Nor Flash硬件 flash_init(); // 擦除存储区域 flash_erase(FIRMWARE_START_ADDRESS, FIRMWARE_SIZE); // 写入固件数据 flash_write(FIRMWARE_START_ADDRESS, firmware_data, FIRMWARE_SIZE); // 退出程序 return 0; } ``` 以上是一个简单的Nor Flash代码示例,它首先包含了flash头文件,然后定义了固件在Nor Flash中的存储位置和大小。接着,定义了固件数据的数组,这里只是一个简单的示例,实际情况下应该包含实际的固件数据。然后,在主程序入口函数中,通过flash_init()函数初始化Nor Flash硬件,然后使用flash_erase()函数擦除存储区域,最后使用flash_write()函数写入固件数据。最后,返回0表示程序正常退出。 这只是一个简单的示例,实际应用中可能涉及更复杂的代码和功能。Nor Flash代码可以根据具体需求进行编写和调整,以实现相应的应用功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

stone8761

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值