硬汉嵌入式论坛

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

[ThreadX全家桶] 关于filex+levelx打开media速度问题

[复制链接]

6

主题

19

回帖

37

积分

新手上路

积分
37
发表于 2020-8-18 23:08:39 | 显示全部楼层 |阅读模式
我使用的是stm32f103re的片子,移植了threadx6.02(AC5),filex6.0.1+levelx6.01,现在可以正常打开读写文件。1.无论是使用hal和std库,这个函数fx_media_open都要执行5-10秒,感觉有很大问题。
2.fx_media_open和fx_media_close这对函数,是不是同时要出现啊。同时加上时,可以正常读写数据,只有fx_media_open时,断电后重新读数据失败。
3.我使用的nor flash是w25q64。fx_media_format()函数如下
  1. fx_media_format(&nor_disk,
  2.                          nor_flash_driver,                                        // Driver entry
  3.                          FX_NULL,                          // Unused
  4.                          media_memory,                     // Media buffer pointer
  5.                          sizeof(media_memory),             // Media buffer size
  6.                          "NOR_DISK",                    // Volume Name
  7.                          1,                                // Number of FATs
  8.                          32,                               // Directory Entries
  9.                          0,                                // Hidden sectors
  10.                          W25Q_FLASH_SIZE/W25Q_SECTOR_SIZE, // Total sectors 0x800000/0x1000
  11.                          W25Q_SECTOR_SIZE,                 // Sector size  0x1000
  12.                         1,                                // Sectors per cluster
  13.                         1,                                // Heads
  14.                        1);                               // Sectors per track
复制代码


回复

使用道具 举报

6

主题

19

回帖

37

积分

新手上路

积分
37
 楼主| 发表于 2020-8-18 23:21:11 | 显示全部楼层
第一个问题解决了,W25Q_FLASH_SIZE定义成0x8000000,多了一个0。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115804
QQ
发表于 2020-8-19 01:55:29 | 显示全部楼层
炮灰向前冲 发表于 2020-8-18 23:21
第一个问题解决了,W25Q_FLASH_SIZE定义成0x8000000,多了一个0。

要的,一般close了,write的内容才可以真正的写入。另外还有一些sync,fflush之类的刷新函数,可以让write的内容立即写入。
回复

使用道具 举报

8

主题

107

回帖

141

积分

初级会员

积分
141
发表于 2020-8-19 08:22:13 | 显示全部楼层
如果你写入后,有调用file close后断电大部分是没问题的。里面有读写缓存机制,提高了对同一文件的频繁访问效率。不过media断电前不close容易导致元数据损坏,不过文件系统里面应该是有备份恢复机制的。
回复

使用道具 举报

8

主题

107

回帖

141

积分

初级会员

积分
141
发表于 2020-8-19 08:26:01 | 显示全部楼层
调用file close后断电是没问题的。有读写缓存机制,提高对同一文件的多次访问效率。  不调用media close直接退出容易丢失元数据,不过对于这种掉电保护的文件系统都有备份恢复功能。
回复

使用道具 举报

6

主题

19

回帖

37

积分

新手上路

积分
37
 楼主| 发表于 2020-8-19 09:03:06 | 显示全部楼层
eric2013 发表于 2020-8-19 01:55
要的,一般close了,write的内容才可以真正的写入。另外还有一些sync,fflush之类的刷新函数,可以让writ ...

好的,感谢硬汉
回复

使用道具 举报

79

主题

191

回帖

428

积分

高级会员

积分
428
发表于 2021-2-24 11:57:20 | 显示全部楼层
能把你移植的Levelx读写W25Q64的驱动和接口部分拿出来参考一下么?我的卡在FX_DRIVER_BOOT_READ这里过不去,不知道是格式化的问题还是读写的问题。什么原因。谢谢!
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115804
QQ
发表于 2021-2-24 12:04:39 | 显示全部楼层
天马行空 发表于 2021-2-24 11:57
能把你移植的Levelx读写W25Q64的驱动和接口部分拿出来参考一下么?我的卡在FX_DRIVER_BOOT_READ这里过不去 ...

这个有个坛友做了,你试试

裸机移植FileX+LevelX NOR FLASH 与 NANDFLASH实现
http://www.armbbs.cn/forum.php?m ... 8810&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

79

主题

191

回帖

428

积分

高级会员

积分
428
发表于 2021-2-24 13:21:20 | 显示全部楼层
谢谢版主!我就是参考这位坛友的。不晓得这位坛友有没有做过nor设备的实测,我参考移植到w25q64上面跑,open设备失败,卡在FX_DRIVER_BOOT_READ那里。W25Q64的底层读写函数是没有问题的,裸跑很正常。
回复

使用道具 举报

8

主题

107

回帖

141

积分

初级会员

积分
141
发表于 2021-2-24 16:10:12 | 显示全部楼层
天马行空 发表于 2021-2-24 13:21
谢谢版主!我就是参考这位坛友的。不晓得这位坛友有没有做过nor设备的实测,我参考移植到w25q64上面跑,ope ...

NOR驱动是经过测试的。其中驱动的整片擦除中有一样忙判断需要更改为while(BSP_W25Q256_GetStatus() == W25Q256_BUSY),

在第一次使用LevelX前,或者因其他原因导致LevelX、FileX元数据损坏的,也都必须调用一次整片擦除。之后再进行测试。  移植可以分步进行,先移植一个LeveX的,测试完毕后再集成到FileX中。
回复

使用道具 举报

79

主题

191

回帖

428

积分

高级会员

积分
428
发表于 2021-2-24 17:26:00 | 显示全部楼层
李益达 发表于 2021-2-24 16:10
NOR驱动是经过测试的。其中驱动的整片擦除中有一样忙判断需要更改为while(BSP_W25Q256_GetStatus() == W2 ...

谢谢告知,我再找找原因。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-20 06:15 , Processed in 0.344573 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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