第一天,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 新新英底包为例,解压后的文件如下:

出来了这么多东西,看到有两个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

更多相关文章

  1. 【Android(安卓)Developers Training】 86. 基于连接类型修改您
  2. Android(安卓)SQLite 是否开启了 shared-cache 模式?
  3. android Binder Linux IPC 内核 驱动
  4. android核心基础(4)_android框架简介
  5. Activity全面解析
  6. Android高级开发教程实战视频
  7. Android(安卓)Camera CameraHal.cpp 初始化分析
  8. Android(安卓)设计模式之桥接模式
  9. Android(安卓)Camera从App层到framework层到HAL层的初始化过程

随机推荐

  1. Android(安卓)M新控件之AppBarLayout,Navi
  2. Dalvik
  3. Android(安卓)中文API (37) ―― AbsoluteL
  4. 将x264移植到Android
  5. Android(安卓)Lifecycle
  6. Android(安卓)跳转基础应用(联系人,日历)
  7. Android使用AlertDialog的信息列表单选、
  8. Android(安卓)4.1 动态加载APK中的资源
  9. Android进行短信备份的一个工具类,支持进
  10. android ContentResolver的使用(获取和修