[心得]USB Audio在ARM架構的Linux套件播放

看板Headphone (耳機)作者 (XD)時間13年前 (2013/01/28 17:13), 編輯推噓9(9017)
留言26則, 10人參與, 最新討論串1/1
全線性電源系統在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)

01/28 17:25, , 1F
先推!
01/28 17:25, 1F

01/28 17:26, , 2F
話說這樣是不是PCIE裝置用不了...
01/28 17:26, 2F

01/28 17:26, , 3F
有沒有編個realtime的kernel XD
01/28 17:26, 3F

01/28 17:49, , 4F
之後想跑android,畢竟kernel事差不多的
01/28 17:49, 4F

01/28 17:50, , 5F
如果說只拿來放音樂,可以不需要用到debian套件xd
01/28 17:50, 5F

01/28 17:58, , 6F
真懷念 這種用參數調音量的玩具 XD
01/28 17:58, 6F

01/28 18:19, , 7F
linux 的音訊處理不是很悲劇嗎@@?
01/28 18:19, 7F

01/28 18:39, , 8F
多工分時不可能 realtime 啦 除非用單工的 OS 現在那裡找 XD
01/28 18:39, 8F

01/28 18:40, , 9F
^^^^^^^^ ^^^^^^ 你該不會是指 EZGo 吧 ...
01/28 18:40, 9F

01/28 19:17, , 10F
快推!不然別人以為我聽不懂
01/28 19:17, 10F

01/28 20:41, , 11F
我覺得嵌入式系統撥放會是未來電腦訊源的主流 可以真正
01/28 20:41, 11F

01/28 20:41, , 12F
實現完全隔離
01/28 20:41, 12F

01/28 20:49, , 13F
.....為何不用rasberryPi
01/28 20:49, 13F

01/28 21:23, , 14F
realtime可以用RTOS,選擇還蠻多的
01/28 21:23, 14F

01/28 21:32, , 15F
ARM PC應該可以找到pci-e的插槽
01/28 21:32, 15F

01/28 22:51, , 16F
單然是單工啊XD realtime kernel要自己編啊XDD
01/28 22:51, 16F

01/28 22:53, , 17F

01/28 22:54, , 18F
現在有有PCI-E的產品嗎? 之前好像沒看過....
01/28 22:54, 18F

01/28 23:29, , 19F
別的 OS 我不知道 但是 Linux 做為單工真的有點小拼現在大多
01/28 23:29, 19F

01/28 23:30, , 20F
都是靠控制 nice 來實現(模擬) RT ... 編 kernel 變 RTOS 這
01/28 23:30, 20F

01/28 23:31, , 21F
樣 Unix 都不 Unix 了 (不過似乎真的有搞<賺>頭 ? (炸))
01/28 23:31, 21F

01/29 07:44, , 22F
rasberryPi 是用broadcom方案,沒跟RS買過東西,有機會
01/29 07:44, 22F

01/29 07:56, , 23F
對岸用三星arm有lay mini pci-e,Ti有arm內建2lane pci-e
01/29 07:56, 23F

01/29 10:15, , 24F
intel最近的atom功耗有在追上arm了喔~
01/29 10:15, 24F
※ 編輯: dnaspirit 來自: 1.34.102.250 (04/27 20:56)

08/18 06:39, , 25F
之後想跑android https://muxiv.com
08/18 06:39, 25F

10/05 05:12, , 26F
我覺得嵌入式系統撥放會 https://daxiv.com
10/05 05:12, 26F
文章代碼(AID): #1H1a50Yw (Headphone)
文章代碼(AID): #1H1a50Yw (Headphone)