Android 创世纪 第一天

第一天,google说,要有电,于是电流涌向了电路板,涌入了arm处理器,于是arm运作了。

               --xxx

 

    嵌入式世界诞生之出,世界是荒蛮的,电流涌向各个芯片,各种处理器等待着唤醒。

 

    arm觉醒了,开始审视自己。。。。

 

        ---------------下面内容可能有误,请指正-------------------

    人们叫他Bootloader,和PC中的BIOS是哥们,负责芯片各个端口的初始化,以及cpu时钟等等设置。

 

    在手机中,bootloader一般就是刷机人口中的底包(并不全是,第二天会说),以摩托为例,买到手机后发烧友们总会首先刷底包,什么北欧、港行、巴西什么的底包。首先下载下来100~300m的sbf文件。底包这么大,都包含了什么?bootloader肯定在其中,但嵌入式世界诞生之初是荒蛮的,能有这么大么?

         ---------------上面内容可能有误,请指正-------------------

    我们就打开一探究竟:

这里就啰嗦一下怎么解sbf包,方便具有geek精神的刷机友们一探究竟

 

下载 SBF-Recalc   ,用这个软件解开sbf包,这里以 3.4.3_11-Stock.UKTmobile_BLUR.sbf 新新英底包为例,解压后的文件如下:

image

   

      出来了这么多东西,看到有两个8m多的文件了吗?他们就是linux的基本内核,随便解开一个第三方rom刷机包,里面都有boot.img,和这两个文件是差不多的,准确的将,bootloader是哪个,水平不行,我不知道。。。。。。

    

一、bootloader 干了什么

      一般手机当中有很多文件系统,从NOR到NAND、SDcard不等,每个rom当中都存放不同的数据。

    

      bootloader首先会从自己的rom当中读取一些指令,初始化各种堆栈等等,然后转到定制厂商烧写进自身某个rom的开始地址的程序,进入mian函数,这里就是与看门狗、各种中断、外围rom等等打交道了。   

 

二、bootloader之后的三条路

 

    这里一般会处理两种中断/事件的组合,哪两个,一个是进入工厂模式(显示出bootloader这几个字,当然是刷底包啦),另一个就是Recory(恢复模式,刷rom啦)。

    之后会有三条路可走

 

(一) bootloader烧写模式(工厂模式)

 

     三般情况下是用户在开机时(bootloader生命期之内)按下某些键,比如开机键,我的defy在usb有连接时也会进入bootloader界面。这些系统中断就会被接受。其它的则屏蔽

      没什么多讲的,纯粹是嵌入式方面,我懂得不多,对我们来讲,无非就是刷/烧写底包(一般情况下,刷包软件会把从bootloader到android rom一股脑的都烧写进各个rom[这里指硬件,存储器]当中)。

 

(二) Recory模式(恢复模式)

 

     二般情况下,用户按下开机键+音量/相机键(我说反了么?可能忘了)会进入恢复模式。此时bootloader会加载存放recory镜像(boot.img,稍后会讲)的rom/分区,并将控制权交给它,并结束自己的生命周期。

 

(三) 正常启动

     

      一般情况下,用户什么都不按,bootloader会正常加载系统内核(某rom/分区的boot.img)。进入到linux kernel。

 

三、linux kernel

      boot.img是什么?img是二进制文件,它一个文件系统的二进制镜像,前面是系统镜像,后者是zimage(2mb左右),眼熟吧,linux引导都需要它,它就是kernel(内核),是由bootloader在最后阶段进入的。

 

      它都干了什么?对于linux引导而言,用惯了pc,确实会感觉到捎了vmlinux,确实是这样,它包含了一个压缩过的内核,就是vmlinux,他首先会解压vmlinux,并放到ram中,之后,运行。

    这里不得不说一下,我第一次接触linux,用的是debian,当时没见过什么u盘,都是软盘,自己按着debian的教程,下载了一个基于软盘的微型Linux,就是内核啊,启动一次得插换三次软盘啊~~~,基本的命令都包含啦~~当时的windows 98多大啊,与三张软盘比就是指数级啊,我从此爱上了linux啊。。。。。。那么舒服的cli交互,跟dos比,一个天堂一个地域啊~~

 

      vmlinux的任务就是初始化linux世界

 

      首先,它会初始化一些必要的东西,比如检测arm型号什么的,然后就开始Linux的初始化(start_kernel),初始化各种内核子系统,最后会开始init,注意,这是内核级的init。

 

      然后init会挂接根文件系统(/),根文件系统就是内核镜像所在的系统了,它存在于内存之中。然后初始化设备驱动,之后,机友们所谓的第一屏启动画面,就是在这里显示出来的,比如我的defy,是一个摩托的logo。

 

      这之后的之后,就到了第二天。

水平有限,错误之处请指正,多谢!

  创世纪:第二天连接:http://www.cnblogs.com/hangxin1940/archive/2011/10/14/2206754.html

  创世纪:第三天连接:http://www.cnblogs.com/hangxin1940/archive/2011/10/22/2221451.html

原创文章,转载请说明出处:

http://www.cnblogs.com/hangxin1940/archive/2011/10/01/2196964.html

posted on 2011-10-01 03:29 黑暗伯爵 阅读(...) 评论(...) 编辑 收藏

公告

导航

统计

  • 随笔 - 154
  • 文章 - 1
  • 评论 - 346
  • 引用 - 0