片内的ram用来存储启动代码,在2440初始化sdram之前,代码就在片内ram中运行。片内ram装载的是norflash中的内容,即u-boot。
uboot放在norflash里,nandflash就存放的 *** 作系统。所以norflash相当于电脑的bios,nanflash才是硬盘。sdram就是内存了
uboot是一级启动代码,即bootloader,用来加载 *** 作系统(nandflash)到sdram并且执行,当然uboot还能格式化nandflash和安装新系统的功能。
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研发的上佳指导!
巨立安这边的好处在于小班手把手的指导,
如此能更好的把握学习效果。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)