Flash 功能特性
Nor Flash Block 大小为 64KB,Sector 大小为4KB,Page 大小为 256B 。 Nand Flash Block 大小为 128KB,Page 大小为 2KB 。
Flash 读取,可以任意地址和任意长度读取 。 Flash 的写入,只能把数据(bit)从1改为0, 写入只能按照 Page 为单位写,写入地址必须要 Page 大小对齐,写入长度必须要 Page 大小的整数倍 。 Flash 的擦除,只能把数据(bit)从0改为1, 擦除只能 Block 或者 Sector 为单位, 擦除地址必须要 Block 或者 Sector 大小对齐,擦除长度必须要 Block 或者 Sector 大小的整数倍 。具体是 Block 还是 Sector ,取决于对应的芯片平台支持 Block 擦除还是 Sector 擦除 。
Flash 访问有两种方式:
- 通过 Flash 接口,可以对 Flash 进行读写擦。
- 通过 XIP 访问 Flash, XIP 功能可以实现访问内存一样访问 Flash 的数据,XIP 访问只能读 Flash,不能写和擦除 Flash 。
Flash 两种访问方式使用注意:
- 使用 XIP 访问 Flash 和 使用 Flash 接口访问 Flash(包括读写擦 Flash)两种访问方式需要软件上做好互斥,不能同时使用 。
- 需要保证每次调用 Flash 接口过程中不能有 XIP 的访问 。
- 以下几种典型情况是错误使用方式:
- Flash 驱动代码通过 XIP 访问,调用 Flash 接口时会同时使用 XIP 。
- Flash 驱动代码放在内存,其它驱动程序中断服务程序通过 XIP 访问,调用 Flash 接口时,可能会被中断打断调用中断服务程序,导致同时使用 XIP 。
当前平台的 Flash 类型支持情况: GX8009x 、GX8010x、GX8008 支持 Spi Nor Flash 和 Spi Nand Flash, 支持 Block 为单位擦除。 GX8008C 、GX8002x 支持 Spi Nor Flash, 支持xip, 支持 Sector 为单位擦除。
注意: GX8002x 对 Flash 最后 4KB 做了保护,用户无法使用。