连载·设计一个理想的数字播放器(一)

来源:bbs.hifidiy.net 发布者:kelan 版权:原创

数字播放的核心是数字处理,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——尤其是嵌入式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文件调试很麻烦,用了很长时间才搞定。

关注【HIFI音响】公众平台

    ID:HIFI中国音响网 ID:hifidiy_2016