zclcom79 发表于 2010-12-3 22:47:20

uCGUI lm3s9B95软解压mp3 demo程序。(cortex-m3 最后一贴)

步入正题之前,发一个牢骚。不想看的,直接跳到技术章节。早段时间在论坛里发了一个帖子,因为有几块多的pcb,希望能转给lm3s的初学者,顺便收回个成本。我的帖子里写的很清楚了,空pcb,加上一些非标的接插件,0402的阻容,还有一个非标的usb转串口线,45块。lcd也是45块。主要是担心非标的东西,不好买,还有就是0402的器件不好焊,所以这些算在一起45块。结果,还剩一块的时候,正好坛里的一个朋友定了hellom3,正好这个板子也可以配合hellom3用,所以就卖给他了。没想到,这个朋友拿到东西以后,居然说要退货。原因更是无俚头,他说我帖子里贴的照片是一个整套,为什么发给他的是一个只焊了阻容和非标器件的板子。我X,难道这个人买东西只看图片,不看_中国字吗?还是故意找事。是不是淘宝买个衣服,店主要把女模特也送给你?我帖子里写的很清楚了,其他购买pcb的朋友都能理解,就是这个兄弟“不明白”,还跟我说“我搞arm9 wince很多年了”。好在淘宝的MM还是明事理的,答应我给他退货。然后额外赔偿我几十块钱。算了,事情过了也就不说了。发个感慨而已。说正题。

从业10年,从arm7,arm9,arm11,cortex-a8再到多核arm,只有学习cortex-M3是完全和工作不相干的。这要感谢“永远的不知”送我的hellom3 pcb。让我第一次在业余时间学习了cortex-m3,我一直做消费类电子产品,所以一直想试一下lm3s9b95这个芯片的能力。早一段时间,抽空完成了uC-OS II+uCFS+uCGUI在hellom3上的移植。后来比较忙,就放下了。其实,我一直想试一下cpu软解mp3的能力,因为hellom3上有i2S的codec。

之前有STM32软解mp3的例子,那个核心比较旧,所以在hellom3上我没有用,而是选用了mad库,来完成decoder。目前,我发现9B95的DMA,只能用SRAM到I2S,而且最大1024 units。这是一个瓶颈。导致我的解压FIFO只开到了7个,decode task的cpu占用率高,UI的响应不及时。如果能够使用SDRAM到I2S的话,FIFO可以更多,那样的话,CPU会释放出来一些。

目前,我写的这个mp3 demo,可以流畅的一边读文件,一个解码。uCFS不好,所以自己在fatfs的基础上作了一套标准的接口,而且sd驱动加上了CRC校验,数据的正确性更有保证。

因为下周起就要用cortex-A8+android正式做产品了。没时间搞M3了,这就是为什么“cortex-m3 最后一贴”

本来预想的是把播放的时间加上去,可以seek mp3文件。还有中文的支持,一些bmp jpeg gif 图片的decode。看来是没有时间搞了,这些请“永远的不知”完善吧。

如果是做产品的话,我不会选择SDRAM。我会使用nor+sram的mcp,然后高地址扩展一个cs挂16bit的LCD,这样的话lcd的效率会提高,而且i2s的录音功能可以实现,多出来的IO可以做键盘。

太晚了,先传图片和视频。其他的明天再传。

http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_602140MO8RKT.JPG
(原文件名:boot.JPG)

http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_602141GLJ6H5.JPG
(原文件名:IMG_0622.JPG)

http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_602142YRAODP.jpg
(原文件名:IMG_0623.jpg)

http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_602143WQJKOT.JPG
(原文件名:IMG_0626.JPG)

zclcom79 发表于 2010-12-3 22:51:58

点击此处下载 ourdev_602145RE5T25.rar(文件大小:8.18M) (原文件名:mp3 demo.rar)

90999 发表于 2010-12-3 23:14:07

关于SD驱动加上了CRC校验,我上过20MHZ,没有遇到错误,是不是再快一点就会出错了?

dgtg 发表于 2010-12-4 10:29:29

mask~!以后有用~!

vipcff 发表于 2010-12-4 10:35:14

好贴 mark

holged 发表于 2010-12-4 10:45:38

支持,请问那位兄弟退回来的板子可以转给我不?

wuyya 发表于 2010-12-4 10:55:25

回复【3楼】dgtg
mask~!以后有用~!
-----------------------------------------------------------------------
"mask"???楼上的兄弟周末在和苍井空约会?

qhdz 发表于 2010-12-4 11:06:46

是视频,没程序?

界面做得很漂亮

zxy1217 发表于 2010-12-4 11:12:23

准备搞9b96 顶个

zclcom79 发表于 2010-12-4 12:38:51

libmad-0.15.1b不提供源码,有兴趣研究的,网上下载。这是一个很优秀的解码核心,我只是做了部分优化,还有就是针对边读边解得处理。主要是libmad是gcc编译的。在keil上不好移植。所以,在这里我直接放了一个类似ROM库的bin。rom里面提供下列的功能。

typedef struct tagDLLFUN
{
        int (*rom_mp3_play)(void **start_address,unsigned long len );
        int (*rom_mp3_initialize)( void );
        void (*rom_mp3_finish)( void );
        void (*rom_InitLibMad)(void);
}DLLFUN;

这个rom占用flash 0x30000~3FFFF 64Kb的空间。 SRAM 占用0x20010A00~0x20017fff 29.5Kb空间。

开机时调用rom_InitLibMad,初始化lib。
播放mp3前,调用rom_mp3_initialize,
播放时,将读出的mp3文件 传给rom_mp3_play
播放结束时,调用rom_mp3_finish。
libmad会要求一个output的回调函数。输出pcm数据。

想深入了解mp3的,可以用这个ROM去写应用。界面可以用我之前上传得那个ucgui工程来做。

不想费事,只想玩玩的。过段时间,我把东西提供给给“永远的不知”,让他在hellom3上做一个完善的demo。大家直接拿去玩就好了。

UI我写的很简单。本来想把能量均衡器,mp3时间 ,快进 快退 做上去的。现在没时间了,直接放上来吧。

点击此处下载 ourdev_602218O791P6.rar(文件大小:30K) (原文件名:libmad.rar)

zclcom79 发表于 2010-12-4 12:46:39

点击此处下载 ourdev_602219CH4W6S.rar(文件大小:5K) (原文件名:mp3task_demo.rar)

点击此处下载 ourdev_602220Q4M91K.rar(文件大小:4K) (原文件名:widget_mp3.rar)


widget_mp3 和 mp3_task 写的极其简单。 dir遍历的时候使用了链变都没有考虑free的问题。没时间完善了。给大家一个参考。了解这个rom lib怎么用,用兴趣的自己研究吧

zclcom79 发表于 2010-12-4 12:51:52

回复【2楼】90999 张耀扬
关于sd驱动加上了crc校验,我上过20mhz,没有遇到错误,是不是再快一点就会出错了?
-----------------------------------------------------------------------

SD正常下,数据不会错的。只有极端情况下会有问题,如开关机,掉电,严重干扰。
自己玩的,就不需要加CRC了,影响速度的。
但是做产品的一定要加,我们很早以前有一个产品因为没有CRC和crc出错之后的保护机制。
到了用户手上会偶发,TF卡不能使用,除非format。原因是读到错误数据,回写,破坏了文件系统。
产品上,你可以弹提示框告诉用户写失败,要求重试,但是决不能把用户的卡写坏。

zclcom79 发表于 2010-12-4 13:03:18

回复【5楼】holged
支持,请问那位兄弟退回来的板子可以转给我不?
-----------------------------------------------------------------------

pcb 和 LCD都在,真想要,70 ,一起拿走。

现在看到这个,我就有上淘宝买女装的冲动,说不定能讹到店家,送一个女模特呢? 呵呵。

我的邮箱,前面的帖子里有。

huwenhui 发表于 2010-12-4 13:22:10

谢谢楼主

jkhu 发表于 2010-12-4 17:06:51

支持张兄,多谢张兄分享,以后有机会再一起合作。

dgtg 发表于 2010-12-5 01:29:52

回复【6楼】wuyya
回复【3楼】dgtg
mask~!以后有用~!
-----------------------------------------------------------------------
"mask"???楼上的兄弟周末在和苍井空约会?

-----------------------------------------------------------------------

呵呵,你不说我还没注意到原来自己打错字了~!哈哈....汗呀~!!!

love_zjb 发表于 2010-12-5 08:35:54

mark

90999 发表于 2010-12-5 09:08:34

回复【11楼】zclcom79
回复【2楼】90999 张耀扬
关于sd驱动加上了crc校验,我上过20mhz,没有遇到错误,是不是再快一点就会出错了?
-----------------------------------------------------------------------

sd正常下,数据不会错的。只有极端情况下会有问题,如开关机,掉电,严重干扰。
自己玩的,就不需要加crc了,影响速度的。
但是做产品的一定要加,我们很早以前有一个产品因为没有crc和crc出错之后的保护机制。
到了用户手上会偶发,tf卡不能使用,除非format。原因是读到错误数据,回写,破坏了文件系统。
产品上,你可以弹提示框告诉用户写失败,要求重试,但是决不能把用户的卡写坏。
-----------------------------------------------------------------------

OK,谢谢了

mcu_lover 发表于 2010-12-5 10:53:59

xuexi

sky_walker 发表于 2010-12-7 23:11:11

楼主做的逻辑分析仪呢,怎么没有下文了

qiushui 发表于 2010-12-14 14:34:15

楼主牛人.

zclcom79 发表于 2010-12-17 11:32:47

回复【19楼】sky_walker
楼主做的逻辑分析仪呢,怎么没有下文了
-----------------------------------------------------------------------

从硬件上,我飞线了一块板子,功能是可以实现的。剩下的就是做PCB版,完善PC端的软件。不过,目前没有时间来写像usbee那样华丽

的PC端软件。

硬件上usb芯片和USBee是一样的,但是增加了FIFO和时钟控制电路,可以让FX2工作在slave FIFO模式,采样率会更高,数据会保证连

续。当然成本就上去了。

fengxin32 发表于 2010-12-17 12:56:52

cortex-A8+android正式做产品了

这个……让我想起国产MID了,比如安派^_^

jiangkehong 发表于 2010-12-17 13:33:44

支持,但是没时间玩,只能看看啦

linkerfu 发表于 2010-12-17 15:50:31

超级库柏

ljt8015 发表于 2010-12-18 00:38:52

mark!~

fengyuehaoran 发表于 2011-5-8 10:17:01

mark

mcu_lover 发表于 2011-5-8 11:22:20

学习。

felix_tang 发表于 2011-5-9 16:45:03

mark

tyronline 发表于 2011-6-21 17:11:13

mark

sytu_xww 发表于 2011-6-21 17:36:27

mark

boming 发表于 2011-6-21 23:05:04

超级库柏

llyuli 发表于 2011-6-22 09:49:50

记号

hjk3344547 发表于 2011-7-15 00:28:19

MARK

fengyunyu 发表于 2014-1-7 16:35:46

zclcom79 发表于 2010-12-4 12:46
点击此处下载 ourdev_602219CH4W6S.rar(文件大小:5K) (原文件名:mp3task_demo.rar)

点击此处下载 ourdev_ ...

LZ,是否可分享下完整的工程文件?

kobe1217241530 发表于 2014-1-9 09:27:22

   MARK!!!!!
页: [1]
查看完整版本: uCGUI lm3s9B95软解压mp3 demo程序。(cortex-m3 最后一贴)