作者dnaspirit (XD)
看板Headphone
标题[心得]USB Audio在ARM架构的Linux套件播放
时间Mon Jan 28 17:13:34 2013
全线性电源系统在x86架构下的电脑去实现,有现实上的难处。大抵就是耗电量太高,电
供体积势必过大,散热需非常注意。
选用ARM处理器的好处,就是省电,但是效能上就无法跟主流的x86处理器。另一个问题在
於很多USB Audio的装置并没有支援Linux的环境,因此使用上就会受限。不过由於智慧型
手机的兴起,投入於崁入式系统的资源就变多了,也许厂商也愿意投入这部分的驱动开发
也不一定。
最近开始玩起了ARM的开发板,知名的Beagleboard与Beagleboard XM是属於Cortex-A8的
架构,Ti也把自家的DSP内建,因此可以做很多硬体的加速在讯号处理上。但是进入门槛
有点高,很多与Linux kernel的支援有关。目前尚未玩到这部分。这次用来实验的版子其
实是Pandaboard ES,这块使用的CPU是OMAP4460,是Cortex-A9架构的双核心处理器,实
脉高达1.5G。并搭配1G LPDDR2记忆体。
ARM系统的开机方式与x86有很大的不同,因为没有BIOS的关系,因此有别於传统的开机方
式。安装系统这边就不详述了,若有兴趣可以私下交流。本次选用Debian的armhf架构的
套件,代号是wheezy,不属於stable的版本,但好处是支援比较多的硬体。而电源的使用
上更是省事,只要一个5V/2A的变压器就可以搞定整套系统。
一开始比较克难一点,我们用ALSA (Advanced Linux Sound Architecture) 的命令模式
来播放wav档案。选用的USB Audio是 TE7022L的方案。首先把aune T1接到pandaboard的
usb。接着kernel就会检测到有新的usb 装置,并载入必要的模组。
列出可用的声音装置,TE7022L位於装置2上,等下用aplay去拨放wav档案时,必须使用这
个id来启动装置。
root@pandaes:~# cat /proc/asound/cards
0 [PandaBoardES ]: PandaBoardES - PandaBoardES
PandaBoardES
1 [OMAPHDMI ]: OMAPHDMI - OMAPHDMI
OMAPHDMI
2 [Audio ]: USB-Audio - DigiHug USB Audio
GFEC ASSP DigiHug USB Audio at usb-ehci-omap.0-1.2,
full speed
播放档案也很简单,使用aplay即可。
-Dhw:2,0代表指定装置ID=2进行拨放。
aplay -v -Dhw:2,0 ./"Prologue ~ deai.wav"
播放後发现音量实在过低,使用amixer可以进行调整。
首先列出id=2有哪些mixer可调整。
root@pandaes:~# amixer -c 2 contents
numid=1,iface=MIXER,name='PCM Playback Switch'
; type=BOOLEAN,access=rw------,values=1
: values=on
numid=2,iface=MIXER,name='PCM Playback Volume'
; type=INTEGER,access=rw---R--,values=2,min=0,max=110,step=0
: values=110,110
| dBminmax-min=-55.00dB,max=0.00dB
numid=5,iface=MIXER,name='PCM Capture Source'
; type=ENUMERATED,access=rw------,values=1,items=2
; Item #0 'Line'
; Item #1 'IEC958 In'
: values=0
numid=3,iface=MIXER,name='Line Capture Switch'
; type=BOOLEAN,access=rw------,values=1
: values=on
numid=4,iface=MIXER,name='Line Capture Volume'
; type=INTEGER,access=rw---R--,values=2,min=0,max=104,step=0
: values=0,0
| dBminmax-min=-40.00dB,max=12.00dB
调整音量为100%的指令。
amixer -c 2 cset numid=2 100% 100%
接着再用aplay去拨放即可得到正常的音量。
这样的过程实在有点烦人,最方便的就是装上桌面套件,这样就可以透过GUI介面去拨放
。有如使用windows系统的便利性。
版上有些对x86系统的调整,不外乎就是让系统单纯化,电源全线性化,在ARM系统下,自
由度更高,线性化更为简单。只不过硬体支援度不够高,进入门槛高。尤其是要打这麽多
指令,会让更多人怯步。
接下来会找XMOS的晶片来试试。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.124.168.214
※ 编辑: dnaspirit 来自: 59.124.168.214 (01/28 17:14)
1F:推 odanaga:先推! 01/28 17:25
2F:→ odanaga:话说这样是不是PCIE装置用不了... 01/28 17:26
3F:→ legendmtg:有没有编个realtime的kernel XD 01/28 17:26
4F:→ dnaspirit:之後想跑android,毕竟kernel事差不多的 01/28 17:49
5F:→ dnaspirit:如果说只拿来放音乐,可以不需要用到debian套件xd 01/28 17:50
6F:推 Dopin:真怀念 这种用参数调音量的玩具 XD 01/28 17:58
7F:→ sorkayi:linux 的音讯处理不是很悲剧吗@@? 01/28 18:19
8F:推 Dopin:多工分时不可能 realtime 啦 除非用单工的 OS 现在那里找 XD 01/28 18:39
9F:→ Dopin: ^^^^^^^^ ^^^^^^ 你该不会是指 EZGo 吧 ... 01/28 18:40
10F:推 fuhsi:快推!不然别人以为我听不懂 01/28 19:17
11F:推 delaluna:我觉得嵌入式系统拨放会是未来电脑讯源的主流 可以真正 01/28 20:41
12F:→ delaluna:实现完全隔离 01/28 20:41
13F:推 turtleknight:.....为何不用rasberryPi 01/28 20:49
14F:→ dnaspirit:realtime可以用RTOS,选择还蛮多的 01/28 21:23
15F:→ dnaspirit:ARM PC应该可以找到pci-e的插槽 01/28 21:32
16F:推 legendmtg:单然是单工啊XD realtime kernel要自己编啊XDD 01/28 22:51
18F:→ legendmtg:现在有有PCI-E的产品吗? 之前好像没看过.... 01/28 22:54
19F:推 Dopin:别的 OS 我不知道 但是 Linux 做为单工真的有点小拼现在大多 01/28 23:29
20F:→ Dopin:都是靠控制 nice 来实现(模拟) RT ... 编 kernel 变 RTOS 这 01/28 23:30
21F:→ Dopin:样 Unix 都不 Unix 了 (不过似乎真的有搞<赚>头 ? (炸)) 01/28 23:31
22F:→ dnaspirit:rasberryPi 是用broadcom方案,没跟RS买过东西,有机会 01/29 07:44
23F:→ dnaspirit:对岸用三星arm有lay mini pci-e,Ti有arm内建2lane pci-e 01/29 07:56
24F:→ Greentale:intel最近的atom功耗有在追上arm了喔~ 01/29 10:15
※ 编辑: dnaspirit 来自: 1.34.102.250 (04/27 20:56)