硬汉嵌入式论坛

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

[ThreadX全家桶] 请问下,有没有使用 LevelX + FileX 直接操作 nand flash 的例程啊,也就是不使用模拟u盘的例子 ?

[复制链接]

613

主题

3067

回帖

4926

积分

至尊会员

积分
4926
发表于 2022-5-16 15:00:06 | 显示全部楼层 |阅读模式
本帖最后由 hpdell 于 2022-5-16 17:25 编辑

请问下,有没有使用 LevelX + FileX 直接操作 nand flash  的例程啊,也就是不使用模拟u盘的例子 ?

我自己捣鼓了一下,关于使用 fx_media_format 函数与 nand flash  里面的相关数据对应时,貌似有些迷糊了,望大神们指点指点,如下
nand flash 相关容量大小的资料介绍

nand-2.png


我使用 fx_media_format 这个函数,第 138,139 行 该如何配置啊,这个地方的配置是不是需要与 nand flash 资料里面介绍的对应起来 ??
nand-3.png

在 fx_media_format 中,是以扇区为单位,第138行是以 32 的倍数为单位,貌似推荐使用的是 512,而在 nand flash 里面是以 页,块 为单位,所以这个地方有些犯迷糊,  。。。 ?? 还有第 139 行这个的参数也是
如果按照上面的资料显示来看的话,第 139 行我定义的是 4096 ,那么第 138 行是不是就是 4096(页大小)*128(block 的大小)*4096(bloocks 数量)/4096(第139行我定义的大小) ,我这样理解对还是不对呀 ??


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107439
QQ
发表于 2022-5-17 00:26:55 | 显示全部楼层
这个是坛友分享的例子。

NAND LEVELX STM32 V7
https://www.armbbs.cn/forum.php? ... 2016&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

613

主题

3067

回帖

4926

积分

至尊会员

积分
4926
 楼主| 发表于 2022-5-17 10:11:06 | 显示全部楼层
eric2013 发表于 2022-5-17 00:26
这个是坛友分享的例子。

NAND LEVELX STM32 V7

号的,我捣鼓看看,多谢多谢了啊
回复

使用道具 举报

613

主题

3067

回帖

4926

积分

至尊会员

积分
4926
 楼主| 发表于 2022-5-18 09:12:50 | 显示全部楼层
本帖最后由 hpdell 于 2022-5-18 14:52 编辑
eric2013 发表于 2022-5-17 00:26
这个是坛友分享的例子。

NAND LEVELX STM32 V7

你好,按照 这个例程捣鼓了一下,已经基本成功了,
但是目前遇到了 几 个问题,继续请教下:

1. 就是读写操作 nand flash 后,有时显示屏上的 时间,触摸屏 等有时会没有反应 ??
   但是只要不牵扯到显示界面的程序还是在继续运行,这个是不是与 fmc 他们发生了什么冲突 ?

2. 有时uart 接收程序也是没有反应  ??

3. 请问怎么会出现这样的问题呀 ???

4. 关于 nand 的 mpu 配置,配置大小不能够超过 1GByte ,如果超过了 1GB 会出现系统错误,这个又是怎么回事啊 ?
 我目前使用的 nand flash 大小为是 2GByte ,在哪里可以查看 h7 的 nand 能够支持到多大 ??

   刚刚看了一下 资料,貌似最大只能是 256MB ?    fmc-nand.png

   如果真是这样的话,那我的 nand flash 貌似已经严重的超出范围了哟 。。。 。。。 ???

5. 擦除 正片 nand flash ,应该只是擦除一次就可以了吧 ?(除非是工作异常或者是搜到某个指令后才进行擦除操作 除外)。
 还有  格式化 nand flash 的 fx_media_format 这个函数,是每次上电后都需要格式化一次还是 与 擦除操作一样 啊 ? (正常工作时只需要格式化一次即可)
6. 测试读写速度:
6【6 - TestSpeed】
开始写文件Speed00.txt 2048KB ...
................................................................................................................................
  写耗时 : 8439ms   平均写速度 : 248507B/S (242KB/S)
开始读文件 2048KB ...
................................................................................................................................
  读耗时 : 859ms   平均读速度 : 2441387B/S (2384KB/S)

-------------  这个读写速度会不会慢啦 --------------- ??



回复

使用道具 举报

17

主题

84

回帖

135

积分

初级会员

积分
135
QQ
发表于 2022-5-18 10:25:15 | 显示全部楼层
hpdell 发表于 2022-5-18 09:12
你好,按照 这个例程捣鼓了一下,已经基本成功了,
但是目前遇到了 几 个问题,继续请教下:

回答一下问题5.擦除flash的话一般是在格式化时擦除一次,格式化的话只要格式化一次就行了,以后每次上电后可以直接挂载使用文件系统
回复

使用道具 举报

613

主题

3067

回帖

4926

积分

至尊会员

积分
4926
 楼主| 发表于 2022-5-21 13:35:46 | 显示全部楼层
本帖最后由 hpdell 于 2022-5-21 13:48 编辑
linminghui 发表于 2022-5-18 10:25
回答一下问题5.擦除flash的话一般是在格式化时擦除一次,格式化的话只要格式化一次就行了,以后每次上电 ...

感谢感谢,确实是这样的,

之前的几个问题我也都搞定了,原来是我 把触摸屏的程序放在 定时器中断里面执行造成的后果,惭愧惭愧
另外还有个事情请教下,就是使用 格式化 后获取到的 信息很多时候都是不同的 ??
在格式化操作前都是整片芯片擦除的

_lx_nand_flash_fsmc_erase_all();   // 整片擦除的返回值都是 成功的

                        nand_total_block = (((_TOTAL_BLOCKS-1) * _PHYSICAL_PAGES_PER_BLOCK * _BYTES_PER_PHYSICAL_PAGE)
                                            / NAND_DISK_SECTOR_SIZE);


                        // 格式化一次即可
                  status = fx_media_format((FX_MEDIA *)&nand_disk,  //指向媒体控制块的指针。 该参数仅用于提供驱动程序运行所需的一些基本信息
                                          _fx_nand_flash_fsmc_driver,  // Driver entry 指向此媒体的 I/O 驱动程序的指针。 这通常是提供给后续 fx_media_open 调用的同一个驱动程序。
                                          FX_NULL,                     // Unused 指向 I/O 驱动程序可以使用的可选信息的指针
                                          media_memory,        // Media buffer pointer 指向媒体的工作内存的指针
                                          MEDIA_MEMORY_SIZE,           // Media buffer size  指定工作媒体内存的大小。 大小必须至少与媒体扇区的大小相同
                                          "NAND_FLASH_DISK",           // Volume Name 指向卷名称字符串的指针,最多为 11 个字符
                                          1,                           // Number of FATs 媒体中的 FAT 数。 对于主 FAT,最小值为 1。 大于 1 的值会导致在运行时保留其他 FAT 副本。
                                          32,                          // Directory Entries 根目录中目录条目的数目
                                          0,                           // Hidden sectors 在此媒体启动扇区前隐藏的扇区数。 如果存在多个分区,则通常会出现这种情况
                                          nand_total_block,            // Total number of sectors 媒体中的扇区总数

                              4096,       // Number of bytes per sector  每个扇区的字节数,通常为 512。 FileX 要求此数为 32 的倍数

                              1,                           // Sectors per cluster 每个群集中的扇区数。 群集是 FAT 文件系统中的最小分配单元
                                          1,                           // Heads 物理磁头的数目
                                          1);                          // Sectors per track  每个磁道的扇区数



输出信息 1:
User available NAND Flash disk space size before file is written: 17432576 bytes.
User available NAND Flash disk space size after file is written: 23612 bytes.
The test file occupied a total of 0 cluster(s) (0 per cluster).


输出信息2:
                        User available NAND Flash disk space size before file is written: 0 bytes.
                        User available NAND Flash disk space size after file is written: 604013280 bytes.
                        The test file occupied a total of 901111 cluster(s) (4096 per cluster).
                        
输出信息3
                        User available NAND Flash disk space size before file is written: 0 bytes.
                        User available NAND Flash disk space size after file is written: 0 bytes.
                        The test file occupied a total of 0 cluster(s) (0 per cluster).


上述的 三种信息,貌似测试读写时时可以正常工作,就是不知道会有那些隐患没有啊 ??

按道理来说,条件都是 一样的情况下,怎么格式化后输出的 信息 差别那抹大啊  ???

回复

使用道具 举报

17

主题

84

回帖

135

积分

初级会员

积分
135
QQ
发表于 2022-5-23 15:30:47 | 显示全部楼层
感觉你这每次输出的信息都不对
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-31 18:01 , Processed in 0.291238 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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