关于bootloader引导策略的问题,求大神指导。
小菜一枚,看At91sam9x25资料的时候,被其系统引导roomboot,bootstrap,uboot弄糊涂了。
我是这样理解的 在芯片内部有个固化的程序romboot,会去在外部flash里找bootstrap,然后复制到sram里运行。boostrap会在去找uboot,把uboot复制到sdram里运行,之后就uboot就引导系统。
而我同学说那个roomboot就是bootstrap,上电后直接就运行了。
我不是很清楚这里的流程,哪位大神能指导下这里是怎么运作的啊?
还有资料里有个sam-ba的软件,是用来烧写bootstrap的?是烧写到板子什么地方啊,dataflash?nand?还是片内?
[最优解释]
LSS解释乱七八糟,文不对题,我来负责任的回答
LZ你的理解没错,你同学错了
romboot是芯片内部的firmware,是按启动顺序寻找启动相应位置代码的,启动顺序可以设置,像SD card、NAND、NOR,dataflash...用于寻找和引导bootstrap
bootstrap是外部第一级bootloader,就和其他的第一级bootloader功能类似,简单的初始化、引导加载uboot
sam-ba是用来烧写bootstrap,uboot,甚至OS都可以,烧写位置自己定义(必须和代码中的加载地址一致),可以烧写dataflash和NAND
[其他解释]
在外部引脚应该有一个配置端,来选择使用片内flash还是片外flash,
通常情况下,使用片内flash都是不带os,所谓裸奔。
当使用片外flash时,芯片上电之后,固化在芯片内部指令会将flash最前端0x0开始的若干k字节复制到sdram中,并跳转到sdram中复制代码起始位开始执行,这段代码可以是uboot引导部分,根据你对uboot的配置,可以实现相应的配置,来启动linux内核。
sram主要是配合片内flash一同使用,如果使用片外flash一般要配合sdram,因为sram容量太小。
[其他解释]
支持楼上~!