本帖最后由 xyz549040622 于 2015-4-29 10:13 编辑
(1) BootLoader 的概念
BootLoader, 顾名思义,是 Boot( 启动) 的时候起到 Loader( 加载器) 作用的代码,即系统刚一上电启动,最先被执行的一段代码, 根据这段代码的安排,系统的其余部分会被它加载( Load)并运行。
上述对 BootLoader 的解释对从来没听说过它的读者来说估计仍然是难以理解的。 你可能还会问:知道 BootLoader 又能怎样? 有什么用? 它跟我学 MCU 有什么关系吗? 我从你最熟悉的手机开始讲。 相信你一定有手机, 而且很可能是智能手机( 它们安装了不同的操作系统, 比如是 Android, iOS,Windows Phone, Symbian)。 如果你“与时俱进”,你可能还经常升级手机上的系统, 就是我们常说的“刷机”。手机上的系统升级就是要用到BootLoader, 如果你有刷机经验, 最明显的感受是你要先下载一个新版本的系统,通常那个玩意被简称为固件( firmware)或者映像(Image), 再把新版系统通过某种方式加载到你的手机里才能更新原来的系统, 而且这个过程一定会伴随着手机的重新启动。当旧版操作系统正在运行时, 你的手机里的一切活动由旧版系统掌控, 一山不容二虎,新版系统不能和旧版系统同时存在于你的手机上。新版系统覆盖旧版系统的那一段时间内, 旧版系统不可能掌控手机, 因为它正逐步被覆盖,新版系统也不可能掌控手机,因为它还没有完全更新到手机上。 必须有人站出来处理这事,那就是 BootLoader。 BootLoader 被放在系统的某一个特定的地方,每次系统一上电, 它都会比任何其它程序先运行。 如果没有系统更新的任务, 它就老老实实加载旧版本系统运行; 如果有新的系统要更新,它就会加载新系统, 覆盖旧系统,这个过程中它掌握了一切。当新系统加载完,它把掌控权转交给新系统。 总而言之, BootLoader 就是一个加载器,它不是加载已有的程序运行,就加载新的程序覆盖已有的程序。它的出现让手机用户更新手机系统可以自己完成,而无需去找厂商(要知道十多年前手机换系统必须去找厂家或其代理点)。
如果你熟悉个人计算机( PC)并有过 PC 的 DIY 经验( 现在用笔记本电脑的人占多数,只有用台式 PC 才会有更多的 DIY 机会), 也许听说过“ BIOS”这个名字, 它的部分功能就是 BootLoader, PC 一上电就会先执行 BIOS 程序,然后由它来加载系统( 比如Windows2)。它是打开电源后最新执行的程序, 最明显的证据是当你拿到一个新的机器,没有安装任何系统前也能进入 BIOS 设置窗口。
|