shadow3d 发表于 2024-4-13 03:00:38

如何以内存映射的方式访问NandFlash?

STM32-V6开发板有一个通过 FMC 扩展的 Nand Flash。

数据已经正常写入了,但是直接通过地址读的时候发现读不到数据,代码如下:
uint8_t rBuf = {0};
NAND_AddressTypeDef nand_addr = {.Page = 0, .Block = 0, .Plane = 0};
HAL_NAND_Read_Page_8b(&hnand1, &nand_addr, rBuf, 1);
LOG_DBG("read Nand %02x\n", rBuf);
LOG_DBG("read Nand 0x70000005 = %02x\n", *(uint8_t*)0x70000005);
读出来的结果为:
read Nand 05
read Nand 0x70000005 = FF
05是正确的结果,FF是错误的。
我想问一下,NandFlash支持这种方式读吗,如果支持为什么读不出来呢?
如果不支持,那NandFlash映射到FMC总线的地址有什么作用呢?
谢谢!


eric2013 发表于 2024-4-14 10:05:39

不能,F429挂NAND不支持内存映射。

不同于NOR,NOR Flash可以在支持XIP的芯片下做内存映射。NAND不行,NAND读取还要做ECC校验,还有坏块问题。

shadow3d 发表于 2024-4-14 16:45:08

eric2013 发表于 2024-4-14 10:05
不能,F429挂NAND不支持内存映射。

不同于NOR,NOR Flash可以在支持XIP的芯片下做内存映射。NAND不行,N ...

原来如此,我用手上的H743也试了一下,发现通过这种方式也访问不了。
是不是NandFlash就不支持通过内存映射这种方式访问啊?
我在编程手册中看到,都是需要在对应的指令区写入指令,然后地址区写入地址后,才能够进行对数据进行读写,这个看起来和内存映射方式不一样。。。

eric2013 发表于 2024-4-15 09:47:56

shadow3d 发表于 2024-4-14 16:45
原来如此,我用手上的H743也试了一下,发现通过这种方式也访问不了。
是不是NandFlash就不支持通过内存 ...

是的,现在NAND还没这种用法,基本都是XIP QSPI NOR Flash或者XIP OctoSPI NOR Flash做内存映射运行程序。使用NAND基本都是上电加载到内存运行。

shadow3d 发表于 2024-4-17 09:23:04

eric2013 发表于 2024-4-15 09:47
是的,现在NAND还没这种用法,基本都是XIP QSPI NOR Flash或者XIP OctoSPI NOR Flash做内存映射运行程序 ...

好的,谢谢哥
页: [1]
查看完整版本: 如何以内存映射的方式访问NandFlash?