嵌入式系统 CORE9G25 上的 alsa

Posted

技术标签:

【中文标题】嵌入式系统 CORE9G25 上的 alsa【英文标题】:alsa on embedded system CORE9G25 【发布时间】:2014-10-23 17:21:27 【问题描述】:

我有一个安装了嵌入式 linux 的 CORE9G25-CON (256MBRAM) (http://armdevs.com/core9g25.html) 设备。 linux的版本是:

# uname -or
3.6.9 GNU/Linux
# cat /etc/os-release
NAME=Buildroot
VERSION=2012.11.1-dirty
ID=buildroot
VERSION_ID=2012.11.1
PRETTY_NAME="Buildroot 2012.11.1

该设备配备了 USB 主机连接器,我在其中连接了一个 USB-AUDIO 接口

USB接口被系统识别

# cat /proc/asound/cards
0 [Device         ]: USB-Audio - USB PnP Sound Device
                     C-Media Electronics Inc. USB PnP Sound Device at usb-at91-1, full speed

# cat /proc/asound/devices
      0: [ 0]   : control
     16: [ 0- 0]: digital audio playback
     24: [ 0- 0]: digital audio capture
     33:        : timer

# ls /dev/snd
controlC0  pcmC0D0c   pcmC0D0p   timer

我想使用 ALSA 处理 AUDIO 接口,但这是使用简单命令 aplay -l 显示在控制台上的错误

# aplay -l
**** List of PLAYBACK Hardware Devices ****
ALSA lib control.c:739:(snd_ctl_open_noupdate) Invalid CTL hw:0
aplay: device_list:226: control open (0): No such file or directory
aplay: conf.c:3095: snd_config_update_free: Assertion `update->count > 0 && update->finfo' failed.
Aborted

我用谷歌搜索了大约一周试图解决这个问题,但到目前为止,我没有找到任何解决方案。

你能帮我解决这个问题吗? 你有其他类似的经历吗?

非常感谢您的帮助与合作

最好的问候

【问题讨论】:

【参考方案1】:

你的 alsa.conf 是什么样的?这样做

locate alsa.conf

通常位于

/usr/share/alsa/alsa.conf

上谷歌

audio sound alsa Invalid CTL hw:0

这可能会让你走上正确的道路

#alsa.conf minimal configuration
ctl.hw 
   @args [ CARD ]
   @args.CARD 
       type string
   
   type hw
   card $CARD #with 0 alsamixer work, with $CARD alsamixer lend to invalid argument

【讨论】:

alsa.conf 文件位于 /usr/share/alsa 目录。 alsa.conf 文件由工具链生成。 我使用 strace 来跟踪 'aplay .l' 进程,我注意到没有读取 alsa.conf 文件。 aplay -l 进程试图打开 /usr/share/alsa (这是一个目录)作为 alsa.conf 文件,当然,我认为它不正确。如何解决?

以上是关于嵌入式系统 CORE9G25 上的 alsa的主要内容,如果未能解决你的问题,请参考以下文章

Linux 和处理器之间的兼容性

如何测试/测量嵌入式 Linux 启动代码?

在 Linux 上将 MCU 设置为低功耗模式

嵌入式linux/android alsa_aplay alsa_amixer命令行用法

嵌入式Bluetooth应用开发笔记第三篇:初探BLUE ALSA应用开发

SPI(串行端口通信)问题,卡在 ioctl()