发烧论坛

注册

 

发新话题

窥一斑而知全豹 ,通过蛛丝马迹来分析高清播放机的系统架构 [复制链接]

1#
窥一斑而知全豹,通过蛛丝马迹来分析高清播放机的系统架构
    时下,各种品牌多种价格的高清音乐播放器,如雨后春笋般出现在市场上。本人就是一穷烧,面对网络上浩瀚如海的无损资源,禁不住诱惑,于是乎开始勒紧腰带,扎紧脖梗,终于积攒了一点小钱。由于这点小钱来之不易,所以出手格外小心。高清播放器的理论我不懂,但可以学习,有了网络,学习变得不再是难事。看测评,拜帖子,这是最常用的手段了,再加上自己的分析,最终确定了自己的购买目标,买到了自己感到满意的播放器和解码器。在此,将相关经验与诸位烧友分享。
    注:本文不涉及任何厂家、任何个人,不涉及任何产品。请诸位切勿对号入座,如有巧合,纯属偶然。

下面就分享一下我的做法,不当之处,请诸位专家斧正。

一、目前,常见的高清播放器,多为嵌入式系统,操作系统大都是Linux或Android,而Android也是一种以Linux为基础的开放源码操作系统。至于系统架构的有关知识,在此不再讨论,大家可以自己上网搜索资料学习。
二、需要用的工具软件:
    1、Winrar -压缩解压利器
    2、WinImage – 功能较强的磁盘镜像工具
    3、UltraEdit32 - 强大的文件编辑器,可以打开任何类型的文件,显示其内容
    4、IDA 4.8,强大的静态反汇编工具,可以将可执行文件、动态链接库反汇编成汇编代码,支持Linux 下可执行文件的反汇编(IDA4.8因相对比较专业,在此不作讨论)
三、操作步骤及分析
    大家知道,不论系统封装的如何严密,系统升级终究是要通过发布固件,由用户来进行升级这种形式来实现的。也就是说,你拿到手的固件,最终会写到系统的内部。这就为我们提供了一个有效的切入点。
    目前,固件大都是通过软件打包的方式封装成一个文件来发布,也就是说发布的固件表面上看起来是一个文件,其实它是一个软件包。那么,如何来将软件解包,解压出包内文件呢?请随我来。

    1、固件包
    固件打包,固件包要么是使用通用软件将文件打包,要么是厂家自己开发的封装工具来打包。我们今天只讨论通用软件打包这一方式的解包办法。目前,压缩文件的格式常用的有.RAR、.ZIP、.GZ、.tar,还有一种磁盘镜像格式:.IMG。在嵌入式系统中最使用的操作系统是Linux,而Linux中最流行的压缩格式一般为.tar和.gz。这两种格式的压缩包,在windows操作系统下,用Winrar均可以解压。.IMG格式的封包,可以用WinImage打开并提取出来保存。

    2、解压固件
    我们就开始想办法把固件解包。这一过程可能比较繁琐,也需要碰运气,折腾半天,有可能一无所获,实在解不开的话,只能从自己的RP方面找原因了。固件大家可以到有关高清播放器官网去下载官方提供的固件升级包,一般厂家的固件都是以压缩包的形式提供的。下载以后,用Winrar之类的解压工具解压到任意目录即可。固件压缩包中一般会有一个或几个文件,包括升级用固件、升级说明甚至是此版本固件有哪些改进等等。我们关心的就是升级用固件。我从某网站下载了升级用固件包,文件名:“20121221末日版fireware.rar”,用Winrar解压缩到20121221末日版fireware目录后,进入目录,目录中只有一个名为:“20121221末日版 update_firmware.bin”的文件,这个文件是要放在U盘上由播放机的系统软件来读取并写入播放机来完成升级的。前面已经提到Linux下常用的封包格式,我们来碰碰运气,先把扩展名bin改成tar试试,文件扩展名改完后文件图标就变了,不要管他,双击试试Winrar能否打开,运气还不错,Winrar成功把文件打开了,打开一看,包里又只有一个文件:20121221末日版 update_firmware,不去管他,直接解压,解压后,给这个文件再加上个扩展名:.tar,继续用Winrar解压,解压后的目录里终于出现多个文件了,其中有一个文件是压缩格式,文件名为:update-files.tar.gz,再次将其解压缩,解压缩后,包中有个usr目录,目录中包含多个目录和文件。至此,固件解包完成了。


    3、固件内容分析。
    固件内容分析的目的,就是从固件中的有关文件中查找对我们有帮助的蛛丝马迹。比如开发商,硬件相关的信息等。既然是播放器,我们就把注意力放在那些文件名与音乐、视频相关的文件上,比如:hifi,mv,player,audio之类名称的文件,当然也可能用yinyuebofang之类的汉语拼音设置文件名。固件内容分析要用到的一个工具,就是UltraEdit,简称UE,这是个编辑器,使用方面很简单。
我先打开一个名字hiendplayer的文件,UE打开该文件后,左边显示的16进制代码,右边显示的ASCII字符,我们所要关注的不是左边的天书,而是右边的字符。拖动窗口垂直滚动条或者按键盘上的翻页键,可以往前或往后查看。由于程序设计过程中不可避免的要输出某些信息,比如出错后的提示信息、厂家的版权信息等,这些信息可以为我们分析系统架构提供指导。翻动过程中,我发现了一行信息 “Jz47 alloc frame failed: can not mmap the memor”,很显然这是一个错误提示。




    等等!Jz47,我的昂达VX989+,主控不是Jz4725吗?难道是君正的方案?再找找看,文件中多次出现了JZ字符,现在可以暂定该播放器是采用的君正方案。

    查阅官方资料,进一步分析架构
    先到君正官网上了解一下当前常用方案,君正现在推荐的芯片有:JZ4750,JZ4755,JZ4760,JZ4770,依稀记得播放器官网中提到升级后的产品CPU更快,而且支持浮点运算,好了,这又是一个切入点
看一下官方的产品概述

    以下文字完全引用自君正官网:

    http://www.ingenic.cn/product.aspx?ID=57
    JZ4755是一款高性价比多媒体处理器SOC,主要适用于中低端PMP等便携式消费电子产品。JZ4755基于君正创新的XBurst CPU微体系架构,CPU主频达到360MHz,集成了丰富的外部设备接口。JZ4755 集成了君正创新的视频处理单元,支持多格式720P解码。

    http://www.ingenic.cn/product.aspx?ID=58
    JZ4760是一款高性能、高集成度、超低功耗的应用处理器芯片,内置强大的视频引擎和图形引擎, 适用于智能手机、平板电脑、GPS导航仪和电子书等移动设备。JZ4760芯片基于君正创新的XBurst CPU微体系架构,CPU主频可达600MHz,支持SIMD和浮点指令,集成了丰富的通用外设接口。JZ4760支持Android、Linux、WinCE、RTOS等多种操作系统,支持WiFi/3G/BT/TV模块,可以提供流畅的移动互联网体验。

    http://www.ingenic.cn/product.aspx?ID=78
    JZ4770是一款高性能、高集成度、超低功耗的应用处理器芯片,内置强大的视频引擎和图形引擎, 适用于智能手机、平板电脑、GPS导航仪和电子书等移动设备。JZ4770芯片基于君正创新的XBurst CPU微体系架构,CPU主频可达1GHz,支持SIMD和浮点指令,集成了丰富的通用外设接口。JZ4770支持Android、Linux、WinCE、RTOS等多种操作系统,支持WiFi/3G/BT/TV模块,可以提供流畅的移动互联网体验。

    根据官网资料,自JZ4760开始支持浮点运算了。下一步就专门针对JZ4760的性能参数进行检索,与播放器厂家提供的相关指标进行对比核对,以进一步确定是否是采用的这一方案。

    我们从官网上下载JZ4760的Datasheet,链接是:ftp://ftp.ingenic.cn/2soc/4760/JZ4760_ds.pdf,下载后用PDF阅读器打开。通过查看芯片文档,我们可以了解该芯片的性能指标,用途及其结构模块。君正官网上对JZ4760芯片产品的性能及用途介绍如下:
    JZ4760是一款高性能、高集成度、超低功耗的应用处理器芯片,内置强大的视频引擎和图形引擎, 适用于智能手机、平板电脑、GPS导航仪和电子书等移动设备。JZ4760芯片基于君正创新的XBurst CPU微体系架构,CPU主频可达600MHz,支持SIMD和浮点指令,集成了丰富的通用外设接口。JZ4760支持Android、Linux、WinCE、RTOS等多种操作系统,支持WiFi/3G/BT/TV模块,可以提供流畅的移动互联网体验。(以上内容完整引用自君正官网http://www.ingenic.cn/product.aspx?ID=58

看来,播放器仅仅使用了这款芯片的音频及外部接口。正因为此播放器是HIFI级音乐播放器,所以,我也只对其音频部分以及其外部接口感兴趣。

重头戏开场了:

    先看一下官网上JZ4760的结构框图





    官网上对外部接口的类型罗列如下:

    Peripherals:AC97/I2S/SPDIF, Audio Code, LCD-IF, TV Encoder, EPD-IF, Camera-IF, Touch ADC, 1-wire, PCM,;I2C, SPI, UART, SIM-IF, SD/MMC/SDIO, USB Host, USB OTG 2.0, TS-IF
    看来功能蛮强大的(注:功能不等于性能)
最后编辑flywolfw 最后编辑于 2012-01-17 23:45:48
本主题由 版主 eric 于 2012/2/17 21:48:26 执行 关闭主题/取消 操作
分享 转发
TOP
2#

再来看JZ4760的Datasheet (ftp://ftp.ingenic.cn/2soc/4760/JZ4760_ds.pdf)
     我们依旧只关注其音频和外设部分
On-chip audio CODEC
–  24-bit DAC, SNR: 95dB
–  24-bit ADC, SNR: 90dB
–  Sample rate: 8/9.6/11.025/12/16/22.05/24/32/44.1/48/96kHz
–  L/R channels line input
–  2 MICs input, differential or single-ended
–  L/R channels headphone output amplifier support up to 16ohm load
–  Capacitor-coupled
–  Mono differential line out
–  Mono 450mW amplifier for speaker out for 8ohm load
AC97/I2S/SPDIF controller
–  Supports 8, 16, 18, 20 and 24 bit for sample for AC-link and I2S/MSB-Justified format
–  Support 2/4/6/8 channels data out for I2S
–  Support compress data format for SPDIF
–  DMA transfer mode support
–  Support variable sample rate mode for AC-link format
–  Power down mode and two wake-up mode support for AC-link format
–  Programmable Interrupt function support
–  Support the on-chip CODEC
–  Support off-chip CODEC
–  Support off-chip HDMI transmitter audio
PCM interface
–  Data starts with the frame PCMSYN or one PCMCLK later
–  Support three modes of operation for PCM: Short frame sync mode, Long frame sync
mode, Multi-slot mode
–  Data is transferred and received with the MSB first
–  Support master mode and slave mode
–  The PCM serial output data, PCMDOUT, is clocked out using the rising edge of the
PCMSCLK
–  The PCM serial input data, PCMDIN, is clocked in on the falling edge of the PCMSCLK.
–  8/16 bit sample data sizes supported
–  DMA transfer mode supported
–  Two FIFOs for transmit and receive respectively with 16 samples capacity in every
Direction
简单总结一下Datasheet中音频及接口部分:
内置音频编、译码器(CODEC):采样频率最高支持96K,24Bit DAC 信噪比95dB,24Bit ADC信噪比90dB,2路MIC输入,内置功率放大电路和耳机驱动电路
AC97/I2S/SPDIF 控制器:支持在线和离线编译码器接口(即内置和外置DAC),SPDIF音频接口方式支持压缩数据,I2S接口支持:2/4/6/8 通道数据输出
PCM 接口:具有PCM 串行输入和PCM串行输出两种接口。
外部设备接口主要有:SD/MMC/SDIO, USB Host, USB OTG 2.0
好了,我们对JZ4760的音频接口功能和外部设备接口已经有了初步了解,现在再来看看固件对应产品的部分指标:
1.支持最高32Bit/358.2KHz的数码流播放
2.支持数据流硬盘录音(24Bit/96KHz)
3.支持WAV/FLAC/ACC等数字音频格式
4. 支持2路USB2.0 接口
5. 不支持SATA接口硬盘,不支持IDE接口硬盘
6. 不支持DSD解码
现在,将JZ4670和固件对应播放器的主要功能、指标建立起联系,一一分析是否能够建立对应关系:
1) 播放器最高支持32bint/358.2KHz数码流播放,而JZ4760只支持24Bit/96KHz数码流播放,这一点二者并不矛盾,JZ4760的AC97/I2S/SPDIF 控制器支持在线和离线式编译码器,也就是说,只要驱动外置DAC,可以播放更高规格的数字音频文件。
2) 数字录音功能,JZ4760,具备PCM 串行输入接口,也就可以将PCM流保存至储存载体。但由于内置CODEC最高支持24Bit/96KHz,因而,更高规格的PCM数据输入对于JZ4760来说,是无法或者说是没有必要支持的。播放器提供的数字录音格式恰巧也是24Bit/96KHz
3) 接口方面,播放器支持的外部存储设备恰巧也在JZ4760提供的范围之内
4) DSD编码,播放器和JZ4760均不提供支持
JZ4760的Datasheet中提到的其他一些功能,诸如:触摸屏控制,红外线接口,视频解码等功能,在播放器上均有所体现。喜欢探个究竟的朋友可以自行对比分析。
至此:根据固件剖析该播放器的工作基本完成,现对该播放器架构简单总结如下:
主控部分:使用的是JZ4760芯片,并且,对芯片的提供的视频、摄像头、话筒录音等功能进行了屏蔽。
解码部分:舍弃了芯片本身的DAC,而通过I2S或其他接口,将数据流送至离线(外部)DAC解码输出。受架构限制不支持SATA硬盘,更无法实现DSD解码。
    本文旨在为各位烧友提供一种分析思路和方法,文中提到的数据,除芯片数据引用自君正官网数据外,其他数据均为虚构,请厂家和个人切勿对号入座。文中观点仅代表个人观点,与任何厂家、团体无关,不当之处,请诸君斧正,大家共同探讨共同提高。
TOP
3#

回复 8# 1011 的帖子

如果我说我就是一普通烧友,而且还是个穷烧,你肯定不相信。但事实确实如此。
至于我用的哪家的播放器,我刻意没说,就是怕给烧友们带来误会。其实,我就是上了照片,不相信的人还会说是假的。或者说某些人还是会说我不是普通烧友。
TOP
4#

回复 11# 1011 的帖子

我的设备,在自己能力允许的情况下,能自己做就自己做,2010年10月在hifidiy上发过一次我自己做的障板,有我的设备照片,不过没有播放器,那时播放器还没买呢。
链接在这里:http://bbs.hifidiy.net/viewthread.php?tid=423720&extra=&page=1,胆坛的链接:http://www.tubebbs.com/thread-151209-1-1.html
最后编辑flywolfw 最后编辑于 2012-01-18 07:52:23
TOP
5#

听感是极其主观的东西,所以,在帖子里我没有任何关于听感的内容。
对于声音回放过程中的每一个环节,我认为不论哪一个环节,对数据的处理都是一个加工的过程。以功放为例,功放不仅仅完成了功率上的放大,而且在功率放大的过程中不可避免地加入了一些东西,这个加工过程带来的结果,对于每个人来说是不同的,甚至是截然相反的感受,而我们追求的理想境界是完全忠于源头信号的回放。事实上这是不可能的,正因为如此,才会有各种风格的器材出现,HIFI产品才会层出不穷。不能完全忠实回放并不影响我们去追求每一个环节上的完美。再者,玩HIFI要玩得其实是取舍,知道自己想要的是什么,自己能得到的又是什么。正如收音机和CD机一样,指标的差距,并不影响爱好者对它们的关爱,但是不管大家如何选择,指标差异确实是存在的。
TOP
6#

芯片打磨的目的:
1、芯片属于通用产品,为了加强方案的保密性,把芯片的标签文字打磨掉,更有甚者,把整个电路板用树脂灌封起来,以保护自己的产品。
2、产品用于比特殊的场合,而且同行业很少有制造该设备的,比如场矿企业用的专用设备,自动控制电路之类的,设备价格高,而产品本身使用的某些芯片,是价格便宜的通用器件,设备制造商为了维护自己的利益,对芯片进行打磨,这样一来,一旦芯片损坏需要更换时,独此一家别无分号,一个芯片就能卖到几倍甚至上百倍的价钱。
3、某些神话了的产品,为了怕别人分析出电路结构从而对其功用提出疑义,因而把芯片标签打磨掉。此手法在医疗保健器械领域使用较多。
最后编辑flywolfw 最后编辑于 2012-01-18 14:46:05
TOP
7#

纸上谈兵与踏踏实实听音乐好像并不矛盾吧。
这样说比较合适:
人家喜欢纸上谈兵,我们喜欢以声论价,这叫萝卜青菜,各有所爱。
以声论价好像也属于纸上谈兵,而且比架构分析的主观成分更大。
最后编辑flywolfw 最后编辑于 2012-01-19 12:11:43
TOP
8#

原帖由 一年以来 于 2012-1-19 12:41:00 发表
我想,有些人可能太在意这个所谓的MP4芯片了。其实它主要还是控制功能,至于解码和音色调校应该不在它的功能范围之内。这方面的功能只要芯片够用就行。对于商家来说,能用便宜的就不会用贵的。这也可以理解。那么,剩下的就是:
对于这样一台机器,如果抛开主控功能不谈,对于机器的解码和音色来说,你是否愿意用1万多来买一个胆解+一个石解。
这就是个以声论价的事了。可能有的人觉得贵,有的人觉得便宜。有的人觉得可

关于帖子里提到的主控,并非只负责人机交互及控制各部分协调工作,而是分担了一部分工作,比如文件的读取,各种音频编码的解码,理论上讲,数字部分1就是1,2就是2,应该不会存在其他差异,但实际上可能并非如此。对于追求极致的烧友来说,电源线、USB线、网线、硬盘线等线材,都已经成了他们的对比的对象,对于承担文件读取、解码的数字电路来说,他们难道能放弃对其性能的追求么?
再者,数字电路也并非不会发生错误,我们都有类似的PC使用经验,当CPU温度过高时,系统可能会变慢,究其原因,无非就是温度升高后,可能会导致数字信号波形发生变化,信号不再清晰,1、0区分的可能就不是是很明显了,此时,校验功能就会起到作用,数据检验失败,重新再发送,这样一来,系统就变慢了,如果校验电路此时也出现类似的问题呢?当然,这个例子用在这里貌似不太准确,但我想说明的即便是数字电路,也不是百分百可靠。
所以说,如果主控部分没有任何影响,高清播放器的主控部分乃至音频编码部分,就天下一统了,一个方案,一个电路就解决了。
另外,所谓的主控部分对声音是否有影响,大家可以参看本坛某些烧友对某些品牌播放器的测评对比。多看多想,其中的区别自会有体会。
TOP
9#

回复 44# gaojiu 的帖子

关于温度的影响是显而易见的,如交换机、路由器之类的网络设备,在温度升到一定数值首先表现出来的不是死机,而是速度变慢,然后才是死机。
貌似有点跑题了。
TOP
10#

回复 46# Lilybaba 的帖子

本贴旨在为烧友提供一种思路,为了避嫌,我不会说哪种架构更理想。
不过,我们不妨假设一下,我说您最看好的OB架构最为理想,您信么?
TOP
11#

回复 46# Lilybaba 的帖子

本贴旨在为烧友提供一种思路,为了避嫌,我不会说哪种架构更理想。
不过,我们不妨假设一下,我说您最看好的OB架构最为理想,您信么?
TOP
12#

回复 48# Xcar 的帖子

说到拉个排名,实在是令人汗颜,本人穷烧一下,既没能力把所有高清机都买上一台研究一下,也没有厂家或商家肯借来一观。MP4方案就更多了,而且产品层出不穷,我是既无财力也无能力来分析个遍。
说来惭愧,MP3,MP4我也有好几个,我前段时间把自己的扔在一边MP4找了出来,准备把I2S数据线引出,接到我的DAC上,没想到,厂家已经提前想到这一步了,看来,个人的力量终究还是弱了些。当我还在为自己的这个想法沾沾自喜的时候,人家已经搞出产品来了。
TOP
13#

原帖由 Lilybaba 于 2012-1-20 23:32:00 发表
您既然费那么大劲,大胆地说某某不行,那还避啥嫌,不如给我们交待交代谁行啊?

我想,你可能曲解了我发帖的目的了,我在帖子里说过谁不行么?
TOP
14#

原帖由 Lilybaba 于 2012-1-20 23:47:00 发表
那我误解你了。
可我还是想问问您,您有什么更好的方案?
不用这些嵌入式,改用低功耗主板?用Win7?
然后机箱外面帖上inter inside?

我在帖子里好像也没从没提到过嵌入式不适合做播放器吧。
真想不出您为何如此咄咄逼人,大家本是平等交流,您却让我给你们“交待交代谁行”,还要我说什么更好的方案。
我再重申一下我的出发点,为烧友提供一条分析思路和常用的分析手段。
帖子里我没有说哪个方案不好,自然也就不会有哪个方案更好的说法。
最后编辑flywolfw 最后编辑于 2012-01-21 00:20:06
TOP
15#

回复 57# tiange 的帖子

这不涉及职业道德的问题,我的职业,与HIFI不沾边。计算机、电子都是爱好而已。
TOP
16#

回复 62# gaojiu 的帖子

既然是技术交流,大家还是平心静气比较好,动不动就吵架,没什么意思。所谓言多必失,一不留神,授人以柄,我想后果是非常严重的。
只谈技术,只谈技术。
TOP
17#

回复 64# glpttlb 的帖子

帖子里确实没有推荐任何品牌。个人以为洋货、国货,哪怕是烧友的DIY作品,都是可圈可点的,架构、指标、校声手段,缺一不可。
最后编辑flywolfw 最后编辑于 2012-01-21 10:16:11
TOP
18#

回复 69# 一年以来 的帖子

一年以来兄,感谢您回帖:

首先说明一点,我只是客观地分析架构,并不针对某一产品。

1、我的示例中,最后的结论是:
解码部分:舍弃了芯片本身的DAC,而通过I2S或其他接口,将数据流送至离线(外部)DAC解码输出。
这个观点其实就是根据JZ 的资料中提到的“Support off-chip CODEC”来判断的,我也没真正地去拆解分析过任何一部设备和产品。当然如果一个产品,把MP4装到箱子里来愚弄烧友,我想这个厂家可能真的走到头了。

2、关于芯片速度问题,按常理来说,只要速度够用就可以,没必要盲目提高。这一点我认同。而且在帖子里我没有任何关于芯片速度会劣化音质的观点,不过,芯片速度肯定是越快越好,数据处理过程中难免会出现错误,而应对错误最简单、最有效的做法就是重新处理,如果芯片速度足够快,那么这个重新处理过程,在用户眼中就感觉不到,相反,就会出现延迟、卡顿甚至是长时间的等待。对于芯片来说,术有专攻更好,如果芯片只负责人机交互、文件读取倒也无关紧要,但方案中的芯片并非只是负责此部分工作,更是参与了各类音频文件的转换。到底是由主控芯片来软解效果好,还是增加专门的硬解效果好,这是个争执以久的问题,我想,为了避免出现无谓的争论,软解、硬解孰优孰劣,我们就不讨论了。

3、关于温度的问题,兄可能曲解我的意思了,我的本意是数字电路对声音是有影响,硬盘电路有影响,USB线有影响,更有烧友认为硬盘的摆放方式、放置位置对声音都有影响,难道对数字电路就没有任何要求么?我帖子里我也提到,用温度影响这个例子不太合适,但我找不出更直观、更容易理解的例子来了。

还有一点,兄在帖子里提到R7,我认为不妥。对于R7,我没有任何观点可以陈述。
我发贴的目的并不是要诟病某某厂的某某产品,只是为烧友提供一点辨别(我甚至不敢用“明辨是非”这个字眼)的思路罢了。

我一直在避免把这个帖子变成商家相互诟病、相互指责的战场,尽管有人一直有有意无意地把我放到他们的对立位置来对待我,甚至一直不断地在给我挖坑。
最后编辑flywolfw 最后编辑于 2012-01-21 12:54:12
TOP
19#

回复 74# zmi 的帖子

zmi你好
三菱M3.1,我的网上没有找到任何资料。
我想您说的是否应该是山灵M3.1呢?
网上找不到OM860和DM860的资料,因而我目前对于您的问题,我无法提供任何帮助,实在是抱歉。
TOP
发新话题