bootloader 在嵌入式产品里面起着至关重要的作用。
处理器架构通常会决定当处理器上电时从什么地址开始取指执行。
通常来说,设计的时候硬件工程师会将一块物理的ROM映射到这个
地址所在的地方,同时bootloader(至少是一部分)会被烧在这个
ROM里面。这样当上电的时候,程序就在ROM里面执行了,所执行
到的程序需要负责将bootloader的剩余部分搬到 RAM中去执行。
在ROM里面直接执行程序的能力,我们通常称之为XIP的能力,也就
是 Execute In Place。
现在具有XIP能力的不仅是ROM了,还有NOR Flash, 它也可以像 ROM
那样被映射到固定的地址去。现在有很多芯片,也支持 NAND 启动,
这时候就不是直接将 NAND 映射到特定地址中去了,因为 NAND的工作
方式和 NOR不一样,它不能直接挂在总线上,而是需要通过一个NAND
控制器才能正常工作。这时候处理器厂家会想办法在上电的时候,通过
某种办法自动的将保存在NAND里面的少部分程序拷贝到内部的SRAM中
去。SRAM也是具有XIP能力的,它在这种NAND启动方式中会被映射到
处理器上电时所需要寻址的特定地址处。所拷贝的那小块程序需要负责
将bootloader的其他部分拷贝到RAM中去执行。
虽然,ROM/NOR/SRAM 等都是有XIP能力的,但是相对于在RAM中执行
程序,速度都是比较慢的,这就是为什么总是需要拷贝 bootloader 的剩
余部分到 RAM 中去执行的原因。
顺便说下,Bootloader 和 BIOS在所扮演的角色上类似,但是他们两个有
一个关键的地方不一样:BIOS在OS启动后还会驻留在内存中,负责基本
的输入输出功能,但是Bootloader 却不一样,在将控制传递给操作系统
之后,bootloader 即告消亡,不会再留在内存中。
/////////////////////////////////////////////////////////////////////////////////////////////////////////
杭州巨立安(JulianTec)是杭州市场上
唯一由资深研发工程师所创办的机构。所以:
就专业程度和实在程度而言,杭州巨立安(JulianTec)
是您在arm架构下学习嵌入式Linux研发的上佳指导!
巨立安这边的好处在于小班手把手的指导,
如此能更好的把握学习效果。
嵌入式也有类似的BIOS,比如像U-BOOT一样的程序,CPU内部有固话的初始寻址地址,这个事肯定的,至于加载到哪里执行这个是可以设置的,具体去看看U-BOOT的代码分析吧,就是你要的答案
1.有些cpu确实是厂家固化了引导程序
2.bootloader是在ram里运行的,大多数厂家cpu取0x00000000地址的开始代码运行