网刷和串刷的原理
浏览:1229 发布日期:2014-07-10

首先,我可以很负责的说,串刷和网刷就效果而言,完全一样!   
那些说G、A、P版之间换img要网刷两遍或者一定要串刷,完全没有道理,说话要负责任的! 网刷后会重启或者是其他问题的兄弟,不要再怀疑这是网刷引起,要再刷两遍,或者一定要串刷。很浪费,不会有任何不同。  
况且,flash器件也是有寿命的,经常刷没什么好处(正常而言flash里每一个block有100万次的写寿命,但是我们手中的DM用的器件没人可以保证,我觉得应该是品质最差的,因为成本被放在了第一位)
那网刷和串刷到底有什么区别,为什么有的时候只能串刷,为什么有的时候连串刷都不行了,串刷不行是不是一定就成砖头了?
下面一一解答:
DM500的ROM是由两片flash构成两级ROM,这两片flash也是不一样的,一级ROM是一片NOR flash,二级ROM是一片NON-flash。NOR-flash比较贵,一般容量较小。NON-flash就是我们MP3、U盘里常见的flash。
我们平常说的刷机,不管是串刷还是网刷,刷的都是二级ROM。有人问,那一级ROM做什么用?为什么要分两级?
分两级ROM主要是为了保护DM500,对大多数人而言,一级ROM是只读的,出厂后一般都会被设为只读。而写开关经常会被设置在板上的CPLD或I2C器件中。
DM500开机上电后,一级ROM的代码先跑起来,做一些最基本的初始化(肯定有串口初始化,肯定没有网口初始化),然后判断二级ROM是否存在,若存在便跳到二级ROM的代码,继续做网口等其他必须的初始化,然后起上层Linux应用(就包括了我们的EPG、天气预报等应用)。
所以,只要两个ROM都是好的,那么我们可以一直用网口刷机;但是如果二级ROM被破坏了,网口没有被初始化起来就挂了,那么网口连不上,就只能串刷了。无论串刷和网刷都是先将img复制到DM的内存,再从内存把img写到二级ROM。
而那些有时间炸弹的机器其实就是内置了一段清一级ROM的程序,一级ROM被清掉了,串口也没人帮你初始化,串刷自然就别想了。这种情况只能返厂,或者自己用JTAG工具刷机,用JTAG的话就要知道pin的定义,板上没有JTAG接口的话还需要飞线出来,所以不是一般人做的事。
但是,只要没有时间炸弹,一级ROM是很安全的,因为你根本不知道怎么访问它,你想破坏也破坏不了。也就是说只是刷机是永远不会把DM刷成砖头的,不管是网刷还是串刷。
网刷或串刷,都需要先清一遍二级ROM,因为FLASH器件有一个特性,它的储存单元只能从1写成0,不能从0写成1。所以,清FLASH就是把所有存储单元都写为1, 写入img的时候把该改为0的地方写成0就好了。所以不存在要刷两遍,或者串刷会比较干净的说法。
网刷和串刷的唯一区别只是把IMG文件传入DM内存的途径不同,一个是通过网口,一个是通过串口,它们的速度差别很大,之后的流程完全一样,都是从内在写入FLASH。
最后说说我对DM的软件设计很不爽的地方,就是不知道为什么把网口的初始化放在二级ROM里面,为什么不在一级ROM也一起做了。因为如果这样的话,就永远不要用到串口刷机了。串口实在太慢了,一般只用来看调试打印输出。
DM玩这么久,今天第一次串刷,原因是没事干下skin一个个换,看哪个好看,结果删除下载的皮肤之前没有换回原来默认的皮肤。结果关机后再打开,二级ROM就跑不起来了。这个设计也是很恶心,找不到皮肤就用默认就好了,为什么非要挂在那里呢。而且这些动作居然是在网口初始化之前,导致不得不用串口刷机。这个设计实在很SB。这是个教训,在此提醒其他烧友。虽然没什么大事,就是不喜欢用串口。

扫码下方或搜索关注公众号“卫星参数网”,独家内幕新闻!

卫星参数网公众号