主题 : 关于QQ2440开发板的uda1341录音驱动问题(已解决) 复制链接 | 浏览器收藏 | 打印
生命是如此脆弱,死亡是如此接近.
级别: 新手上路
UID: 5391
精华: 0
发帖: 24
金钱: 240 两
威望: 240 点
综合积分: 48 分
注册时间: 2009-04-21
最后登录: 2009-06-04
楼主  发表于: 2009-04-22 13:47

 关于QQ2440开发板的uda1341录音驱动问题(已解决)

最近刚接触嵌入式,在写一个录音程序,在主机的linux下可以正常录音
但是移植到开发板上,运行到read函数就返回 -1 并输出Illegal seek
经调查发现是驱动出了问题,但不知问题在哪...

在板上使用cat /dev/dsp > record.wav 测试时总是输出 Read Error:Illegal seek
cat /dev/sound/dsp > record.wav 也是一样
用cat播放wav正常

有没有人遇到或解决了这方面的问题?



//**************************解决方案***************************************
其实我不是改这里http://www.aiothome.com/bbs/read.php?tid-1176.html,改了之后问题仍存在,因此我没改
板的内核是2.6.13
除了把
sound/oss/sbc2440-audio.c
function: sbc2440_audio_read这个函数里面的
if (ppos != &file->f_pos)
    return -ESPIPE
这两句注释掉之外
function:audio_init_dma这个函数中ai_dcon与ao_dcon的赋值也有问题
改为:
ao_dcon = 0xa0800000;
ai_dcon = 0xa2900000;

据了解,原来的好像是寄存器配置错误,再具体我也不太清楚了,呵呵,还是小白菜


现在有cat录音和放音都正常,不过还有个问题,当调用read()函数录音后调用write()回放时会连续输出下面几条信息
dma2:loadbuffer:timeout loading buffer
同时程序陷入死锁,需要按ctrl+c退出,这个问题大家有没有遇到?或者说是我程序的错误?
[ 此帖被sky_ysk在2009-05-16 13:23重新编辑 ]
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2009-04-22 15:20
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
生命是如此脆弱,死亡是如此接近.
级别: 新手上路
UID: 5391
精华: 0
发帖: 24
金钱: 240 两
威望: 240 点
综合积分: 48 分
注册时间: 2009-04-21
最后登录: 2009-06-04
2楼  发表于: 2009-04-23 13:02
谢谢您的回复,但是我按照那个方法重新烧了内核zImage问题仍然存在
板子是QQ2440V3,内核linux2.6.13
是不是还需要改其它内容?
级别: 侠客
UID: 944
精华: 3
发帖: 71
金钱: 22760 两
威望: 4838 点
综合积分: 202 分
注册时间: 2008-06-27
最后登录: 2017-07-16
3楼  发表于: 2009-04-23 14:12
driver/oss/sbc2440-audio.c
function: sbc2440_audio_read
级别: 侠客
UID: 944
精华: 3
发帖: 71
金钱: 22760 两
威望: 4838 点
综合积分: 202 分
注册时间: 2008-06-27
最后登录: 2017-07-16
4楼  发表于: 2009-04-23 14:13

 回 3楼(hulifox008) 的帖子

不好意思,误按了ctrl+enter
把这个函数里面的
if (ppos != &file->f_pos)
    return -ESPIPE

这两句注释掉
生命是如此脆弱,死亡是如此接近.
级别: 新手上路
UID: 5391
精华: 0
发帖: 24
金钱: 240 两
威望: 240 点
综合积分: 48 分
注册时间: 2009-04-21
最后登录: 2009-06-04
5楼  发表于: 2009-04-24 00:03
太感谢大家的帮助了,终于解决了录音问题,我的毕业设计可以继续做下去了
生命是如此脆弱,死亡是如此接近.
级别: 新手上路
UID: 5391
精华: 0
发帖: 24
金钱: 240 两
威望: 240 点
综合积分: 48 分
注册时间: 2009-04-21
最后登录: 2009-06-04
6楼  发表于: 2009-04-24 14:18
忘记说了,其实我不是改这里http://www.aiothome.com/bbs/read.php?tid-1176.html,改了之后问题仍存在,因此我没改
除了把
sound/oss/sbc2440-audio.c
function: sbc2440_audio_read这个函数里面的
if (ppos != &file->f_pos)
    return -ESPIPE
这两句注释掉之外
function:audio_init_dma这个函数中ai_dcon与ao_dcon的赋值也有问题
改为:
ao_dcon = 0xa0800000;
ai_dcon = 0xa2900000;

据了解,原来的好像是寄存器配置错误,再具体我也不太清楚了,呵呵,还是小白菜
[ 此帖被sky_ysk在2009-05-16 13:23重新编辑 ]
级别: 新手上路
UID: 5447
精华: 0
发帖: 34
金钱: 325 两
威望: 313 点
综合积分: 68 分
注册时间: 2009-04-23
最后登录: 2012-08-22
7楼  发表于: 2009-05-13 16:41

 回 5楼(sky_ysk) 的帖子

解决了录音问题,但你的录音程序里可以设置录音的采样位数吗?我的程序里不能设置
生命是如此脆弱,死亡是如此接近.
级别: 新手上路
UID: 5391
精华: 0
发帖: 24
金钱: 240 两
威望: 240 点
综合积分: 48 分
注册时间: 2009-04-21
最后登录: 2009-06-04
8楼  发表于: 2009-05-15 18:24
我也不能设置采样位数,只能够设置采样频率
级别: 新手上路
UID: 5447
精华: 0
发帖: 34
金钱: 325 两
威望: 313 点
综合积分: 68 分
注册时间: 2009-04-23
最后登录: 2012-08-22
9楼  发表于: 2009-05-22 12:51
也不能设置采样率吧?
怎么设都是16K的采样率,没有效果。