硬汉嵌入式论坛

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

关于FatFs文件系统f_read函数无法读取自己生成的文件的问题

[复制链接]

2

主题

9

回帖

15

积分

新手上路

积分
15
发表于 2020-11-28 17:02:16 | 显示全部楼层 |阅读模式
本帖最后由 nosi12 于 2020-11-28 17:09 编辑

我想在STM32F429上实现一定帧率的视频播放(不带音频), 但由于直接利用软件解码的方式速度过慢, 为此选择了在电脑上将图片文件保存为rgb565格式, 而后通过SD卡直接依次读取一张张图片, 并直接输入显存进行显示. 目前已经能够实现800*480屏幕, rgb565格式, 150ms/帧左右的刷新速度。
进入调试模式, 发现f_open与f_read的耗时分别为50ms与100ms。为了进一步提高帧率, 我就想把rgb565文件头尾相接, 直接合并在一起, 这样只需要调用一次f_open, 希望能够将帧数提升至10/s左右.
但在测试时, 却发现JPG_Buffer这个缓存区读不到数据。 执行完f_read指令后JPG_Buffer缓冲区仍然全为0. 但单张读取rgb565格式的文件就是正常的.
代码部分.png
进入调试模式, 检查f_open的返回值, 为FR_OK; 检查f_read的返回值, 为FR_OK, 说明文件已经正常开启, 读取. 再查看JPG_File结构体, 得到结果如下:
结构体1.png
文件大小信息与实际是相符的, 但扇区缓冲区win数据全为0, 应该就是这个地方出了问题。
正常读取rgb文件时得到的JPG_File结构体如下
结构体2.png
扇区缓冲区win数据不为0, 而是有相应读数. 请教下大家是什么问题呢?

JPGresult.raw

1.46 MB, 下载次数: 0

回复

使用道具 举报

2

主题

9

回帖

15

积分

新手上路

积分
15
 楼主| 发表于 2020-11-28 17:23:16 | 显示全部楼层
我也试了一下打开硬汉哥"安富莱_STM32-V6开发板emWin教程(V2.0).pdf"这个文件, 发现也是没法通过f_read去读数, 应该是相同的问题~
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2020-11-28 17:36:07 | 显示全部楼层
你的fatfs是不是无法读取大文件。
移植我这个吧

继续提升STM32F4的4线SDIO DMA方式的读写稳定性,发布新版案例(2020-06-30)
http://www.armbbs.cn/forum.php?m ... 8560&fromuid=58
(出处: 硬汉嵌入式论坛)


回复

使用道具 举报

2

主题

9

回帖

15

积分

新手上路

积分
15
 楼主| 发表于 2020-11-28 20:12:22 | 显示全部楼层
不行的, 换成您的文件系统还是一样的问题。原来是R0.13版本
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2020-11-29 10:25:50 | 显示全部楼层
nosi12 发表于 2020-11-28 20:12
不行的, 换成您的文件系统还是一样的问题。原来是R0.13版本

不是文件系统,我说的是底层驱动。
回复

使用道具 举报

2

主题

9

回帖

15

积分

新手上路

积分
15
 楼主| 发表于 2020-11-30 00:00:44 | 显示全部楼层
今天我修改了fatfs的底层驱动, 发现还是只读到0x00。我后来想试试安富莱的代码, 结果烧录进去后程序没法运行,也没法通过swd下载程序了, 怀疑是时钟和安富莱默认配置不一样(板子的时钟是25MHz的). 此外, 我进到bsp的sd卡驱动里看, 发现有些代码确实不太相同。我明天改一下BOOT0脚看看能不能正常烧入进程序,然后再试试看是不是bsp的驱动问题
回复

使用道具 举报

2

主题

9

回帖

15

积分

新手上路

积分
15
 楼主| 发表于 2020-11-30 08:53:01 | 显示全部楼层
还是不行...修改了sd卡驱动, 依旧读不到该文件的数据.但是f_open返回值都是正确的, 和电脑上看到的结果相同
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2020-11-30 13:02:37 | 显示全部楼层
nosi12 发表于 2020-11-30 08:53
还是不行...修改了sd卡驱动, 依旧读不到该文件的数据.但是f_open返回值都是正确的, 和电脑上看到的结果相同

有个我们的板子就方便了,这个我有例子测试,之前那emWin的13MB矢量字体就是直接FatFS一次就加载到SDRAM测试的。
回复

使用道具 举报

2

主题

9

回帖

15

积分

新手上路

积分
15
 楼主| 发表于 2020-11-30 14:13:59 | 显示全部楼层
是这样的, 其他比这个文件大的文件都可以用fatfs读取, 返回数据也都正常,但是就这个文件不太行。硬汉哥方便把这个程序放到SD卡上用f_read读取读取, 看看能读出数据吗?
回复

使用道具 举报

2

主题

9

回帖

15

积分

新手上路

积分
15
 楼主| 发表于 2020-11-30 23:58:16 | 显示全部楼层
我换了一个代码跑了一下,可以正常该文件的数据。估计是读取部分哪里出了问题,之后有时间对比下代码。谢谢硬汉哥啦!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2020-12-1 16:10:51 | 显示全部楼层
nosi12 发表于 2020-11-30 23:58
我换了一个代码跑了一下,可以正常该文件的数据。估计是读取部分哪里出了问题,之后有时间对比下代码。谢谢 ...

好的,后面有问题了再交流。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-17 17:38 , Processed in 0.321150 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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