嵌入式技术论坛
直播中

陈静

7年用户 1290经验值
私信 关注
[问答]

怎么去解决posix文件系统文件读取异常的问题呢?

在移植wavplay过程中,发现文件读取异常,获取的WAV文件描述错误。wavplay中用到fopen、fread。
在使用fread读取文件时,会根据文件的大小出现异常;
在文件很小时,读出是正确的;
在文件比较大时(超出一个scetor时),读出是错误的。
采用2b.wav测试文件6737036字节,7b.wav为2b.wav的前80个字节。
如图所示,我用2b.wav时,读取wavheader_read时,
2.jpg
3.jpg
我用7b.wav时,读取wavheader_read时,
2.jpg
配置如下:
2.jpg
请问,这个问题要如何解决?
刚刚写了个读写测试函数,fread的前512个字节,是无法读取到的,相当于往后偏移了512个字节。
问题解决了,确认是BSP驱动的BUG。用的是华芯微特swm32的BSP,在swm_sdio_rxconfig中,使用2个块,但是写入BUF地址没有实现块的偏移,导致BUF只有1个块的数据。


回帖(5)

刘勇

2023-2-13 13:57:55
可以定位下,驱动层返回的数据对不对。
重点怀疑
驱动本身,
地址非对齐(如果用了DMA),
cache没刷新(如果有cache)
举报

陈静

2023-2-13 13:58:03
没有采用DMA,不带内存cache。刚刚写了个读写测试函数,fread的前512个字节,是无法读取到的,相当于往后偏移了512个字节。是否存在BUG?
举报

刘勇

2023-2-13 13:58:14
项目测试中也经常用到wavplay,没发现这个问题。
你用的哪个版本和平台?建议跟综调一下吧。
举报

陈静

2023-2-13 13:58:37
2.jpg
举报

陈静

2023-2-13 13:58:42
确定是BSP驱动的问题,非常感谢。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分