中级会员
 
- 积分
- 300
- 金钱
- 300
- 注册时间
- 2014-6-12
- 在线时间
- 54 小时
|
5金钱
是这样的,我把探索者的综合例程中的MP3解码部分给移植到自己的工程中,因为目前主要是验证MP3软解,也就没有用RTOS,纯裸奔的,然后发现部分歌曲会全程帧解码错误,返回错误代码-2,-8,-9;还有一部分歌曲会在开始解码错误以后,返回错误代码-3,然后F4进hardfault,跟踪此类错误进入代码中,发现memcpy(mp3DecInfo->mainBuf + mp3DecInfo->mainDataBegin, *inbuf, mp3DecInfo->nSlots);这句代码导致问题产生,也许是跟堆栈设置有关?
Heap_Size EQU 0x00000400
Stack_Size EQU 0x00000800
我把综合例程烧入板子,发现出问题的2首音乐是可以播放的,按理说裸奔的代码和使用UCOS时候应该是一样的,不应该会出错的,昨天晚上查找一晚上没找到问题,现发贴上来问问,求各位不吝赐教 |
最佳答案
查看完整内容[请看2#楼]
MP3文件前面有ID3标签的话需要偏移过标签的数据到真正的MP3帧数据再解码,另外需要注意如果SD卡采用DMA读取的话要考虑DMA地址4字节对齐的问题,如果前面都没问题的话那就是MP3读文件解码播放那里的程序(mp3_play())的问题了,这三部分具体可以参考原子哥的综合例程里的代码,我刚弄过这个,当时也是遇到各种问题,还是要感谢原子哥的开源,哈哈
|