硬汉嵌入式论坛

 找回密码
 立即注册
查看: 245|回复: 4
收起左侧

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

[复制链接]

3

主题

6

回帖

15

积分

新手上路

积分
15
发表于 2024-4-13 03:00:38 | 显示全部楼层 |阅读模式
STM32-V6开发板有一个通过 FMC 扩展的 Nand Flash。

数据已经正常写入了,但是直接通过地址读的时候发现读不到数据,代码如下:
[C] 纯文本查看 复制代码
uint8_t rBuf[2048] = {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[5]);
LOG_DBG("read Nand 0x70000005 = %02x\n", *(uint8_t*)0x70000005);

读出来的结果为:
[C] 纯文本查看 复制代码
read Nand 05
read Nand 0x70000005 = FF

05是正确的结果,FF是错误的。
我想问一下,NandFlash支持这种方式读吗,如果支持为什么读不出来呢?
如果不支持,那NandFlash映射到FMC总线的地址有什么作用呢?
谢谢!


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2024-4-14 10:05:39 | 显示全部楼层
不能,F429挂NAND不支持内存映射。

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

使用道具 举报

3

主题

6

回帖

15

积分

新手上路

积分
15
 楼主| 发表于 2024-4-14 16:45:08 | 显示全部楼层
eric2013 发表于 2024-4-14 10:05
不能,F429挂NAND不支持内存映射。

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

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

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2024-4-15 09:47:56 | 显示全部楼层
shadow3d 发表于 2024-4-14 16:45
原来如此,我用手上的H743也试了一下,发现通过这种方式也访问不了。
是不是NandFlash就不支持通过内存 ...

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

使用道具 举报

3

主题

6

回帖

15

积分

新手上路

积分
15
 楼主| 发表于 2024-4-17 09:23:04 | 显示全部楼层
eric2013 发表于 2024-4-15 09:47
是的,现在NAND还没这种用法,基本都是XIP QSPI NOR Flash或者XIP OctoSPI NOR Flash做内存映射运行程序 ...

好的,谢谢哥
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-2 06:47 , Processed in 0.254075 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表