puppy居
puppy居士
posts - 41,comments - 27,trackbacks - 0
@kingoverworld
没有遇到这个问题
看你的内核版本是多少?可以自己printk调试一下 要不google一下

这都是去年弄的了 也是匆匆调试了一遍基本OK后就移交给同事了,忘记的也都差不多了,很多问题无法回复,请见谅!
@emux
dma.c属于内核部分,我记得没有对dma.c部分进行修改.你先试试嘛!
@zljjb
那你把dvd相关的配置选项禁干净掉试试,我是在fedora 8下面编译的。
这种东西就是这样的,不是咱们弄的,咱们只能点点的去试。然后平台啊,版本什么的差异很大,即使完全一样都会产生不同的结果,所以只能慢慢的去试,基本上就是个体力活。
还有你上面那个问题,你可以先这样试试: cat test.mp3 > /dev/sound/dsp 这样都不行就是音频驱动没弄好。
@zljjb
自己创建嘛 然后把 libmad.a mad.h分别放进去
@zhangjie
声卡部分用的是UDA1341
驱动已经贴出来了 内核版本linux-2.6.26
2.6.26中semaphore结构体做了改动,所以我修改的驱动不一定适合你.你可以参考luofuchong大侠的2.6.22版本的驱动http://www.linuxforum.net/forum/showflat.php?Cat=&Board=embedded&Number=674018&page=0&view=collapsed&sb=5&o=0&fpart=&vc=1&PHPSESSID

我就是用他的驱动加上修改了semaphore相关部分就可以了.
如果你用的是mplayer,还应该做如下修改:

加上如下一段代码,

if ((file->f_mode & FMODE_WRITE)){

init_s3c2410_iis_bus_tx();

audio_clear_buf(&output_stream);

// 加上以下这行代码

if (!output_stream .buffers && audio_setup_buf(&output_stream))

return -ENOMEM;

按以上的方法做了,但是还是出现同样的提示,仔细的看了驱动,在驱动上加了大量的调试信息最后发现在smdk2410_audio_ioctl 中调用的一个函数老是返回错误,这个函数是access_ok(VERIFY_WRITE, inf, sizeof(*inf)),查了这个函数的代码发现返回1的时候是表示可以访问,而不是错误,所以导致下面代码老是出错,其实运行都是对的:

int err = access_ok(VERIFY_WRITE, inf, sizeof(*inf));

if (err)

return err;

于是改成int err = !access_ok(VERIFY_WRITE, inf, sizeof(*inf));


加上 -idle 就可以不关掉了 不加的话放完了就会自动关掉。
-ac mad参数是放mp3的时候用的啊 好像没什么问题啊