數字播放的核心是數字處理,CPU是必不可少的功能器件,我設計的初衷不僅僅是做個簡單的數字播放,還需要強大的交互操作和云數據處理能力,因此必須用能力強的CPU。
雙11買了一臺數字播放器,在這臺近萬元的號稱非常NB的播放器到手后,沒用多久就另我對市面上這些數字播放器愈加不滿意了,無論其聲音、操控、云數據能力、交互體驗宣稱的有多完美,實際用來——全是些昂貴的“垃圾”。
這些年我幾乎聽遍了,卻沒有一臺完全符合我的要求:聲音達到(萬元級)CD水平、操控人性、交互體驗較好、云數據能力出色。
好吧,這次確實玩得有點“瘋了”,我想:要不自己設計一臺吧!
自己設計數播,首先確定目標,那就對照前面的一條條落實吧……或者換個角度,我對目前市場上這些數播究竟哪些方面不滿意:
1、操控太差:手機都普及這么久了,居然沒一款人性化的APP與數播交互的產品出現,市場上那幾個可以用手機app控制的機器,那界面、那操作反饋、那是為用戶著想設計的嗎!
2、交互體驗:數播天然聽音樂的優勢就是數字化內容,數字化內容可以很方便的讓聽眾了解音樂背后的故事,但很遺憾目前市場還沒有聽讓我們邊聽音樂邊看內容的數播;
3、音樂交友:為什么不讓喜歡聽同一首歌曲的人相互認識交流呢,至少我有這個想法,但目前的產品無一做到這點;
4、云數據:這都什么年代了,數據還只能本地或簡單的NAS存儲,太讓人窒息的體驗了……
我要設計的數播,必須滿足這樣幾個功能:
1、手機APP操作,全交互;
2、高保真回放能力;
3、音樂云存儲;
4、音樂交友;
這是最基本的目標,在這個目標基礎上,再根據設計進度不斷加強功能。
定下目標,先從框架開始。上面列的4個基本目標要求我設計的數播平臺必須有非常強悍的數據處理能力,那么首先必須選擇一個有能力處理這么多數據的CPU或SOC核心,否則無法完成大量的基礎運算。
其次,播放和數據處理、人機交互,這么多功能必須有穩健成熟可靠的操作系統。
第三本地操控和手機端(客戶端)操控要保持一致的品質,因此大型觸控屏少不了。有了這些基本的元素,一個數播的原型在頭腦就出來了。這里面的各個要素需要一個個摸索,好在有萬能的X寶。
接下來,根據設計進度,按以下順序敘述:
CPU選擇 —— 信號處理 —— DAC部分 —— 模擬電路 —— 電源 —— 操作系統 —— 觸控屏與觸控操作 —— 手機APP(Android & iOS) —— 云數據 —— 音樂交友 —— 音樂“源”。
數字播放的核心是數字處理,CPU是必不可少的功能器件,好在這幾年智能手機的大規模普及,極大的提高了CPU——尤其是嵌入式CPU的發展,記得在30年前我第一次遇到6502和Z80的時候,一個是好貴,一個是好難用。而如今比起當時不知道要進步了多少倍了,一個芯片不僅集成了CPU,更是把常用的I/O都集成進去了,編程工具也一個比一個好用,技術文檔也全面豐富,比起當年現在的技術人員真是太幸福了!
由于我設計的初衷不僅僅是做個簡單的數字播放,還需要強大的交互操作和云數據處理能力,因此必須用能力強的CPU。
在之前體驗過的數播當中,有一個比較突出的問題就是開機啟動時長,我們知道那些啟動時間短的數播一般采用單片機結構,內置簡單的程序處理,因此啟動時間很短,缺點是無法進行復雜的交互操作。啟動時間長的數播,或是基于LINUX或安卓,優點是操作豐富,但啟動時候都太長了。
由于我需要處理復雜的交互操作,因此必須采用基于操作系統的數據處理結構,一個功能強大的高速CPU是迫切需求。好在中國是世界制造中心,沒有找不到只有想不到,網上產品非常豐富,多比較幾下,應該能找到我需要的產品。
由于CPU是與操作系統相結合,考慮到未來幾年這個數播的擴展性和易用性,操作系統能選擇空間只有LINUX、安卓、WINCE(WES)。WES需要微軟授權,版本費用很貴,而我又不想盜取他們的知識產權(使用D版),想想還是算了吧。安卓系統是個好選擇,但底層處理音頻架構讓人蛋疼,怎么優化都是那個德性,還是在LINUX上下功夫吧,畢竟那么多數字音視步處理平臺都是基于LINUX的,而且已有好多基于LINUX的數字播放包,如Daphile、Volumio等。
確定了操作系統,基本上也就確定了CPU選擇方向,毫無疑問基于ARM內核的SOC是重點方向,接下就是如何找到好用的產品了。
找到好用的CPU沒想象的難,網上已經有現成的速度比較了,而且比較也非常直觀,雷軍已經告訴了我們篩選方法——“不服跑個分試試”!
這個表簡單直觀,RK3288是一個不錯的選擇,為了驗證這個選擇是否客觀正確,從網上采購些板子測試下,為了做橫向比較,同時采購的還有珠海炬力的S700,非常流行的樹莓派,以及運行WIN8的intel Z3735。網上反復比較后下單,經過幾天的等待,物流陸續將測試板子送過來。
這些板子都是通用型設計,CPU沒有針對音頻做專門的硬解碼處理,因此測試主要是想了解單核運行速度和多核數據處理能力問題,而音質主要是通過算法處理和信號線路優化來解決。RK3288是目標產品,因此重點測試。操作系統使用Debian(德班),幾個產品都需要做系統編譯才能完成安裝,而S700不能提供相關文檔,暫時只能運行android5.1.1.
RK3288芯片集成了SPDIF和I2S總線,方便外接DAC和數字輸出。樹莓派因為已經有DIGI+板子了,直接購了一塊看看聲音怎么,Z3735板子集成了聲卡,但聲音不好,直接PASS,外接USB界面試試怎么樣吧,S700由于目前只支持安卓,因此沒有做太多測試,簡單測試就PASS了。這幾個板子都是支持5V電壓,很方便外接電源。
為了驗證系統可行性,需要安裝實測,找了塊環氧樹脂板,打孔轉眼安好銅柱,將驗證功能需要的各個板子安裝上去。
接下來是大量的軟件移植工作了。
選擇Debian這個非常好用的LINUX系統,要知道大名鼎鼎的Ubuntu就是在這個基礎上開發的。整個移植工作分了好幾塊,包括:
①編譯生成內核,編譯修改devicetree,生成dtb文件;build kernel image: (output : boot.img and out/kernel)build/mk-kernel.sh rk3288-evb
②編譯生成uboot;
build u-boot image: (output : out/u-boot)
build/mk-uboot.sh rk3288-evb
③編譯生成文件系統;
build rootfs image:
follow readme in rk-rootfs-build
④將生成的uboot、kernel、文件系統鏡像整合為一個系統鏡像包;build one system image: (output : system.img)build/mk-image.sh -c rk3288 -t system -r rk-rootfs-build/linaro-rootfs.img(5)更新鏡像包到emmc或者SD卡中,在更新鏡像過程中會對emmc或者SD進行分區,并將文件寫入到對應的存儲區域中;update image:
eMMC: build/flash_tool.sh -c rk3288 -p system -i out/system.imgsdcard: build/flash_tool.sh -c rk3288 -d /dev/sdb -p system -i out/system.img
此外,需要重新編譯實時內核以提高音頻數據處理優先級,于是編譯了一版實時內核版Debian。關于實時內核和非實時內核對聲音的影響,大家可以百度了解下(有興趣看這個http://blog.csdn.net/zhourui1982/article/details/5282361)。
整個驗證可行性的系統硬件由數據處理部分——MIQI的RK3288板、SPDIF輸出板、IIS入的DAC解碼板、電源板、變壓器共同構成。
MIQI的3288板已經自帶了SPDIF輸出,為此我特意測試了自連板數字輸出質量,與專用的同軸輸出板比,確實輸出質量有差別,聽音表現就是直接輸出聲音聽起來沒有深度,發干(HIFI處外是玄學),而經過同軸板的數字輸出整形后,聲音要圓潤得多,太不可思議了。
按說數字信號無非就是0、1,怎么可能有這種無聊的區別,但實際聽感比較差異,連木耳的人都聽得出來!SPDIF輸出需要配置硬件腳本文件,I2S同樣需要配置腳本文件,I2S文件調試很麻煩,用了很長時間才搞定。
Copyright 2004-2015 武漢奧萊爾科技發展有限公司,All rights reserved
HIFI音響(鄂ICP備05007555號-2)增值電信業務經營許可證:鄂B2-20130019 公安局網監備:420100007348