[兆新作品.技术原创之一]三星手机刷机原理概述

sun229

普通会员
2004-11-14
118
0
0
今天偶不才,特别为大家介绍一下为什么三星手机可以刷机,刷机原理又是如何,虽然偶不在三星公司就职,但手机芯片编程同属于嵌入式系统编程,既然它可以刷机,相信原理是相同。偶简单写下这篇拙文,以做抛砖引玉,有不对的地方,希望路过的高手指点,大家一起学习学习。
既然是原理当然就老生长谈了,手机器件内部一样分为MCU(微处理器),memory(存储),display(显示)等等构件。
其中MCU负责整个系统程序的调度运行,它可能负责指挥下一级专职MCU,比如有控制网络的,控制显示的,控制存储的等等。而我们这里说的刷机就是指用自己程序文件去替换MCU中的程序文件(这些程序文件当然是三星公司编制的,只是版本不同而已)。
下图就是MCU的程序存储器地址分布
Address
0 ----------------------------
| Jump to oader | <--- loader 程序前导字 (0-3H)
4 |--------------------------|
| |
| |
| |
| |
| |
| |
| Program space |
| | <--- Available space for user programs
| system programs | 系统编程地址,就是我们刷机存储的文件空间
| |
| |
| |
| |
| |
| |
| |
FF00 |--------------------------|
| Jump to user program |<- 1st 4 user program words (FF00-FF03H)
FF04 |--------------------------|
| Program ID | <--- Identifying word (FF05H)
FF05 |--------------------------|
| |
| loader code | <--- The loader code (FF05-FFFFH)
| | 自写入程序代码
FFFF ----------------------------
从程序地址的分布我们就可以知道,为什么我们可以刷机就是因为自写入程序代码(loader),它是这样工作的,在地址顶端有几句很精简的中断代码用来检测当前是否MCU收到有符合协议的关键字过来,有的话程序会执行loader code,这时我们看到就是就开始刷机啦。如果没有就执行系统程序,这个意思就是为什么我们平时开机的时候不会有刷机的现象。因为这个检测时间是很短的,一般是毫秒级的。

而刷机过程是靠协议支持,关于协议是怎么一回事,且听下回分解....(一次说完了,下次没得说了...嘿嘿...见谅见谅)

好啦,关于手机刷机的原理就给大家介绍到了这里,不过三星也不一定是这样做的,也会有其他办法,但这样有个优点就是便于开发调试,也便于日后客服升级修补bug,但也给大家提供了一个行水通刷的简单途径 ^_^
[s:12]
 

附件

pycmcc

社区贡献者
2004-09-16
8,088
7
38
沙发支持楼主,给我们上了一堂十万个为什么?很专业啊.