最近刚接触嵌入式,在写一个录音程序,在主机的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重新编辑 ]