发烧论坛

注册

 

返回列表 12345678» / 19
发新话题

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

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#

有点技术的都懂,不懂技术的只能以声论价!神话还少吗?
TOP
4#

楼主有所指啊.
TOP
5#

受架构限制不支持SATA硬盘,更无法实现DSD解码。
这个确实难受。
TOP
6#

还是音质表现第一,至于什么架构倒无关紧要。
最后编辑hownolulu 最后编辑于 2012-02-17 16:56:06
TOP
7#

楼主明显不是普通发烧友,如果不想大家猜疑的话我想大家都会希望看看楼主所说的自己选用的是什么播放器和解码器,见识一下楼主以如此专业的知识所选择器材的眼光~~~~~
-------有梦就有希望-------
TOP
8#

无图无真相哦~~
-------有梦就有希望-------
TOP
9#

回复 8# 1011 的帖子

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

我也就是好奇而已~~~~~~
-------有梦就有希望-------
TOP
11#

回复 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
12#

顶一顶!!!
欢迎访问淘宝店:http://store.taobao.com/shop/view_shop-842906440f6f98c0679d50b162e7a065.htm
TOP
13#

呵呵,我大概知道这个有所指的厂家是谁了?
只是心中有些疑惑,因为这个厂家在业界也有些知名度,卖的机器绝对也不算便宜。
而选择这个君正的方案来提供数字信号,个人觉得厂家应该不是从节约成本的角度考量的吧?
哪原因到底是啥呢?
1、业界对发烧支持力度不够,根本没有好的芯片可以选择?
2、这种mp4芯片也能提供足够好的数字信号了,完全没必要上高端的?
3、发烧的是钱多人傻,只配听mp4?
……
实在不理解
TOP
14#

技术贴,顶起。
TOP
15#

有什么不好说的呢,欧博就是欧博嘛,有什么好遮掩的呢。
其实楼主的总结说的很清楚了:
主控部分:使用的是JZ4760芯片,并且,对芯片的提供的视频、摄像头、话筒录音等功能进行了屏蔽。
解码部分:舍弃了芯片本身的DAC,而通过I2S或其他接口,将数据流送至离线(外部)DAC解码输出。受架构限制不支持SATA硬盘,更无法实现DSD解码。

JZ4760作为主控,实现的主要是文件操作、网络、显示、USB等功能。而烧友们真正关心的音质问题,并不是由它实现的。由此可以看出,各商家产品声音的好坏不是由JZ4760决定的。我们如果只是因为高档机使用这样的芯片,而认为欧博怎么怎么样,我个人认为是不欠公允的。起码JZ4760作为主控,功能上是可以的。物尽其用嘛。

其实不光是600MHz的JZ4760可以用。市面上卖的2-300的高清播放机里的realtek芯片也可以作主控。而且这样的机器也可以放192的FLAC,只是声音差而已。

所以,声音的好坏不在这里,而在于外围对音质的处理。
TOP
16#

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

该用户帖子内容已被屏蔽
TOP
18#

该用户帖子内容已被屏蔽
TOP
19#

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

专业,支持,好
TOP
发新话题