【科普文章】我的MP3拆解分析

大二的时候买了个MP3,一直用到大学,但是有段时间因为掉在柜子后面以为不见了,于是后来陆续换了几个MP3,后来意外的找到这个MP3,但是陆续发现了很多问题,今天再给试了一下,拷贝歌曲没什么问题,但是歌曲拷贝完了再MP3的播放列表里面竟让好不到歌单,我猜这款MP3是彻底扑街了,于是萌生了拆解它的想法,毕竟我搞过硬件,所以可以稍微的分析一下这款MP3的工作原理,以下是我的拆解后的分析。

内部结构图如下图所示

其中最主要的有就两个部分,CPU和闪存

。下面详细地分析一下CPU,CPU使用的瑞芯微的Nano系列的芯片,因为瑞芯微是国产芯片做得最好的,而且公司就在我们公司的对面,所以我对瑞芯微的东西很感兴趣,我上了瑞芯微的官网查了这款芯片的参数:

下面我给大家分析一下上面参数的意思,首先是内核,内核是ARM Cortex M3的内核,你可以理解为一种处理器的架构,和我用过的stm32芯片的内核是一样的,这个内核的芯片的优点就是价格便宜,功能结构十分丰富,能够很好的满足了普通嵌入式产品的需求,主频为100M,这个数值当然是越高越好,我们程序的运行就是跟着这个频率在走的,频率越高程序运行得越快,但是对于产品这种需要严格控制成本的东西,要求是成本最低,性能满足即可,100M的速度已经能够支持音频的解码,但是视频的支持可能不会太好,分辨率低的画面还是能够带得动的,像单片机入门常用的51芯片,主频也就是12M,高配版的可能会高点。再来是存储,其中RAM是放程序的地方,我们经常说的笔记本的内存4GB还是8GB,说的就是这个RAM,像笔记本的RAM是在CPU外面的,因此可以更换和添加,但是对于嵌入式产品,为了满足产品便携和轻薄的需求,要把东西做得尽量小,而且嵌入式产品所需要的RAM不像电脑那么大,因此大都把RAM集成在CPU内部,两种RAM加起来有224KB,这已经很大了,毕竟即使用了μcos2这样的操作系统,真个程序的大小也不过几十KB。RAM是属于易失类存储,就是说掉电后,里面存储的东西都会不见了,你可能会问我的MP3总会有没电的时候,那么我没电的时候冲完电为什么MP3还能用,这个就要说到Nor
Flash和Nand Flash,这个就是放程序的地方,掉电后东西不会不见,上面的图标没有说明Nor Flash和Nand Flash是放在哪个地方,是集成在CPU的内部还是通过电路外置连接呢,但是肯定是支持的,一般程序存储在Nor Flash或者Nand Flash里面,如果是Nor Flash程序可以直接在里面运行,但是因为Nor Flash可能会出现位反转,因此可靠性不高,如果用的是Nand Flash的话,系统运行之后会把需要用到的程序拷贝到RAM里面,然后开始运行系统。

最下面一行还说明了这款CPU支持的操作系统RKOS,全称是Rockchip Operation System,就是瑞芯微操作系统,我上网了解下,是属于瑞芯微自己研发的嵌入式操作系统,对于瑞芯微的芯片提供了很好的支持,对于操作系统,大家比较熟悉的就是windows,我们电脑用的就是,大家可能会觉得惊讶,电脑和MP3看起来天差地别,怎么会都用操作系统,其实对于操作系统这种东西,大家不用觉得它很神秘,操作系统其实就是给我们提供了一个软件运行的环境,一个和硬件打交道的接口,这样对于想在上面运行程序的我们就可以不用知道硬件怎么操作,只要在操作系统的框架下编写程序就可以了,大大方便了我们软件的开发,windows很流行的一个有优势就是它提供了很好的图形界面,我们打开电脑看的就是,蓝天白云,十分友好,让我们用得很愉快,再加上很多很在上面开发软件比如qq,微博等,这些软件因为是针对windows开发的,所以只能在装有windows的电脑上运行,使得我们越来越离不开windows的电脑。而MP3用的操作系统用的则是针对嵌入式产品开发的操作系统,不需要提供提供多么好看的图形界面,只需要能完成简单的播放歌曲等操作就可以了,所以它很小,能实现的功能也相对简单,但是它也叫做操作系统,所谓的RKOS就是这一类的,和另一个比较流行的μcos2很像,μcos2功能挺丰富的而且稳定性和可靠性都经历了实践的证明,因此在全世界都很流行,至于RKOS我了解了下,它的很多的机制上和μcos2是很像的,但是大多数是针对瑞芯微自己的芯片优化,因此没有流行起来。从MP3的运行并不能看出用的是什么操作系统,但是可以肯定的是肯定是用了操作系统,因为这款MP3支持多任务操作,比如说你播放音乐的时候可以看电子书,可以查看歌单,编辑列表,既然瑞芯微有开发操作系统,所以用的RKOS应该是跑不了,很多比较早的MP3不支持和使用操作系统,因此使用起来很低效,比如你要查看歌单的时候你得先暂定当前播放的音乐,更不可能一边看电子书一边播放音乐。在当时MP3已经很便宜了,几十块钱就可以搞一个,但是我的这款MP3花了我125大洋,我看中的一个原因就是它的操作跟几十块钱的MP3不一样,尽管当时我对什么芯片操作系统不了解。

再来看Flash芯片,这个就是你放拷贝歌曲和放MP3程序的地方,我们一般说你的MP3几个G的说的就是这个意思,这款MP3的规格是2GB但是你要是用电脑查看大小的话,你看到肯定只有1.7 1.8G的样子,说好的2G呢?这里有两个原因,一个是被程序占用了一个部分,就是放操作系统的地方,就像你的硬盘得分出一个盘专门来放windows操作系统,而且里面的东西不能随便删除,要是那些文件被你删掉了,指不定某天你的电脑连开机都开机不了。MP3也是这个道理,需要在Flash里面开辟一块区域来放操作系统。另外一个原因是计算机计算容量的方式和厂商生产Flash计算容量的方式不一样,标准的计算是1GB=1024MB
1MB=1024KB 1KB=1024B,也就是说标准容量的计算是按照1024进制算的,但是厂商为了计算的方便,直接按照1000进制计算,所以产品上面标称的容量肯定大于计算机计算出来的容量。而且为了将程序存储和数据存储(你的歌曲)分开,使程序更加安全,也会在程序和歌曲中间开辟一个物理间隔,把这部分屏蔽掉,综合上面几个原因,使得电脑上显示的容量会小于产品所标称的容量,手机的容量也是一个道理的,从来没见过一个16GB的手机往电脑上一插能显示出您的手机容量为16GB。

MP3的内部结构比较明显的还有一个调频模块,叫做RDA5807,用于收音机功能的,从图片而已看出,这个模块和MP3的其他模块是独立的,也就是说只要MP3给它供电它自己就可以工作,之后MP3去读取它的引脚的电压值,将这个电压值转换成MP3可以处理的数字量,再经过运算放大器的处理,就输出成耳机放出来的声音了。我们身边充斥着各种各样的信号,你要读取这些信号什么意思你必须知道它的格式,才能把里面的东西取出来,我们可以简单得把这些信号看成一个一个波,这些波有的地方高有的地方低,高的地方表示1,低的地方表示0,空间中到处充斥的就是这些010110的信号,你要是不知道这些信号的格式编码,那么这些信号对于你来说没有任何意义,所以你要是想获取这些信号包含的信息,你就需要有专门的设备区接收和调制,调制相当于我们语言的翻译,把我们听不懂的语言翻译成我们能听到的语言,RDA5807就是专门干这种事的,它能接收和调制空间中的调频信号,所谓的调频信号,你只需要知道它是一种信号的格式就够了。有些手机也有调频的功能,主要有两种实现方式,一个是在手里加上像RDA5807这样的调频模块,另外一种实现就是把这个模块做紧CPU里面,后面一种是现在大部分手机的实现方式,主要还是满足手机小型化的需要,毕竟手机里面的空间也是寸土寸金,能省一点空间是一点。

MP3的背面是一块小型的锂电池,是由深圳一家叫做环宇科技的公司提供的,输入电压为3.7V,容量未知,但是从个人的使用来看,这款MP3的续航是十分不错的,普通使用强度听个一个星期足够了,特别让我惊讶的是它的断电基本不会有任何电量的损失,你可能有这样的经历,手机或者电池冲完电要是不用的话,过个一段时间电量会较少甚至不见了,为什么会不见呢,可能的主要原因有两个,一个是电池内部的原因,这个是厂家的原因,另外一个就是电器本身的原因,比如说关机后内部电路的某些器件还连着,持续微弱消耗电量,虽然很慢,但是时间足够久还是能够把整个电池耗尽,而这款MP3让我惊讶的是,在高三高考结束后就扔一边没再听歌,大一那会再拿起来开机的时候,惊讶的发现尽量还有两格的电量,所以说这个MP3的“断电续航”能力是十分惊人的。至于电池的电压为什么是3.7V而不是4V取整呢,这个跟电子产品的有关系,经过大量的实践证明在这个电压下既能满足电路的使用,又能使得耗电量降到最低,于是大家约定以后生产的产品尽量设计在这个电压下工作,所以跟整数不整数没有关系,像51单片机普遍使用的一个晶振频率就是11.0592Mhz,也是经过计算为了最大满足方便计算的需要,另外一个电子产品常常使用的电压是5V,很多手机的电池就是5V的。

这款MP3使用的是一个普通的双色液晶显示屏,使用方法很简单,一边生产这个产品的厂商会提供驱动,驱动也是一种程序,通过这个程序你才能使用它,我个人使用一个叫做1602的液晶,需要在上面显示什么东西,只要发送对应的命令就可以了,一般显示这种东西需要消耗很大的CPU资源,所以显示屏幕越简单,色彩越少,需要的CPU资源越少,像瑞芯微这个能支持320*240屏幕(两年前的大部分手机就是这个分辨率的屏幕)的CPU显示个这么低端的屏幕足够了。

以上是我对这款MP3的内部结构的分析,这几个模块的价格加上一个电阻电容等分立元件,如果量产的话,成本大概只需要60块钱就够了,而我买了125,除去经销商的利润,台电科技做这款MP3至少还能赚个几十块钱,这是相当高的利润了。

以个人的软件和硬件实力,只要有足够的时间,做出个能播放音乐的MP3是足够的,至于功能丰不丰富,音质如何,这这涉及到很多领域的问题,暂时还不了解。

现在的很多手机厂商都在宣传自己的手机的音质如何如何,拿出一大堆参数,对于这些现象我的观点有几点,一是音质如何是十分主观的东西,不同的人对同一个手机的音质的看法可能相差很大,再来就是有音频的解码和普通的数据处理不一样,所以一般的CPU虽然具有音频解码能力,但是毕竟不如专门的音频解码芯片,所以只要你的手机没有独立的音频解码芯片就谈不上手机的音质有多好多好,最重要的一点是耳机的质量,一般把能播放音乐的设备叫做前端,把耳机叫做后端,前端只能保证原始音质,而我们最终听到的是通过耳机表现出来的声音,虽然前端各有区别,但是互相之间的差距并不大,就像苹果手机从来也不敢宣传自己的音质多么领先于别人,因此一个好的耳机远比一个好的播放器重要,只说手机音质多好而不说需要用什么耳机的宣传都是耍流氓,以我身边用的都是几十块钱地摊货的耳机的人来说,音质多么好的手机对于他们来说都是毫无意义的。

以上就是我拆解MP3的分析和我对音质的一点体会,有点浅见,请轻喷,最后向工匠精神致敬!

时间: 2024-08-25 23:00:51

【科普文章】我的MP3拆解分析的相关文章

零知识证明,中间人攻击,盲签名:原理和应用——三篇密码学科普文章

Cocoa:转自科学松鼠会.作者奥卡姆剃刀,貌似是松鼠会的新人,大学教授,写的东西还是很不错的哈- 文章太长,直接附地址了: 盲签名(维基):http://songshuhui.net/archives/37439.html 零知识证明(维基):http://songshuhui.net/archives/36968.html 中间人攻击(维基):http://songshuhui.net/archives/35810.html 零知识证明,中间人攻击,盲签名:原理和应用--三篇密码学科普文章

二、Mp3帧分析(标签帧)

Mp3文件由帧组成,帧分成标签帧和数据帧,本文就Mp3文件的帧进行分析. 一.标签帧 MP3帧头中除了存储一些象private.copyright.original的简单音乐说明信息以外,没有考虑存放歌名.作者.专辑名.年份 等复杂信息,而这些信息在MP3应用中非常必要.1996年,FricKemp在“Studio 3”项目中提出了在MP3文件尾增加一块用于存放歌曲的说明信息,形成了ID3标准,至今已制定出ID3 V1.0,V1.1,V2.0,V2.3和V2.4标准.版本越高,记录的相关信息就越

JVM系列文章(一):Java内存区域分析

作为一个程序员,仅仅知道怎么用是远远不够的.起码,你需要知道为什么可以这么用,即我们所谓底层的东西. 那到底什么是底层呢?我觉得这不能一概而论.以我现在的知识水平而言:对于Web开发者,TCP/IP.HTTP等等协议可能就是底层:对于C.C++程序员,内存.指针等等可能就是底层的东西.那对于Java开发者,你的Java代码运行所在的JVM可能就是你所需要去了解.理解的东西. 我会在接下来的一段时间,和读者您一起去学习JVM,所有内容均参考自<深入理解Java虚拟机:JVM高级特性与最佳实践>(

三、Mp3帧分析(数据帧)

一. 帧 帧头长4字节,是的,是4个字节,共32位. 帧头后面可能有两个字节的CRC 校验,这两个字节的是否存在决定于FRAMEHEADER 信息的第16bit, 为0 则帧头后面无校验,为1 则有校验,校验值长度为2 个字节,(后面是可变长度的附加信息,对于标准的MP3文件来说,其长度是32字节,本段括号内的文字内容有待商榷,暂时没见到这样的文件),紧接其后的 是压缩的声音数据,当解码器读到此处时就进行解码了. typedef FrameHeader { unsigned int sync:

三星i9300手机电池拆解分析

三星i9300的电池有个特点,里面带NFC天线,正好自己的手机用了一年,电池也鼓包不能用了,拆开看看这块电池的庐山真面目. 先上几幅粗略图:                           此时大概也能看到影藏在电池里的天线了,继续拆解:                     那块裸板上可以看到电池的电路板,红色的是连接NFC天线的两端点,板子撬开后,天线就断了. 在整块电池中,用万用表连接图示点1,点2,发现是不导通的,推测天线并不是直接连在这两个触点上的,从裸露的电路板上也能证实这一猜

Andriod Studio科普文章——3.大约gradle常见问题插头

1.andriod gradle插件版本号过低. 错误位置: dependencies{ classpath 'com.android.tools.build:gradle:0.10.2' } 提示信息:You must use a newer version of the Android Gradle plugin. The minimum supported version is 0.12.0 and the recommended version is 0.12.+ 这样的情况一般出如今导

boxoft wav to mp3漏洞分析

漏洞:https://www.exploit-db.com/exploits/38456/ 作者:wj2ge 测试环境:xp sp3 根据提供的EXP 然后OD附加调试,在ReadFile函数下断点,然后f9运行 点击PLAY 我们为了先大致看一下程序的执行流程,一直F8 发现一直在swich case里 循环 004BA881  |> /8BC7          /mov eax,edi 004BA883  |. |83F8 04       |cmp eax,0x4            

压缩感知(compressed sensing)科普两则

文章贴自:http://www.cvchina.info/2010/06/08/compressed-sensing-2/#more-1173 这是数学家陶哲轩在他自己的blog上写的一篇科普文章,讨论的是近年来在应用数学领域里最热门的话题之一:压缩感知(compressed sensing). 所谓压缩感知,最核心的概念在于试图从原理上降低对一个信号进行测量的成本.比如说,一个信号包含一千个数据,那么按照传统的信号处理理论,至少需要做一 千次测量才能完整的复原这个信号.这就相当于是说,需要有一

竞品分析该怎么做

现在市面上个各种场景下应用的App层出不穷,相关的App广告也狂轰滥炸.让做IT行业的咱和咱们的小伙伴们都应接不暇,不知道该用哪个,也不知道到底哪个更好用.而这些宣传和广告充分体现一句俗语:王婆卖瓜自卖自夸. 一款产品被用户所接纳,不是因为它的产品有多好,解决了用户所有的问题,而恰恰因为它的某一个功能解决了客户的某个问题,当解决方案和问题匹配上了,用户自然就用你的产品. 在了解什么是竞品分析之前,我们先将身边总接触到的产品,做个简单的分类,并将众所周知的产品做为该类型的代表产品进行归类,这样的话