1、开发板启动流程
1.1、bootloader(初始化硬件,加载内核)
1.2、kernel(初始化,挂载rootfs)
1.3、application(应用程序)
2、嵌入式Linux启动流程
2.1、硬件上电
2.2、CPU跳到Reset中断向量处执行
2.3、加载并执行bootloader代码
2.4、bootloader加载内核代码
2.5、执行内核代码
2.6、执行第一个用户空间程序
3、bootloader的启动
系统加电或复位后,所有CPU都会从某个地址开始执行。嵌入式系统的开发板通常把板上ROM或者Flash映射到这个地址。把bootloader程序存储在相应的Flash位置。系统加电后,CPU将首先执行它。
3.1、bootloader的第一阶段
a、把bootloader自搬运到内存中;
b、设置堆栈指针并将bss段清零;
c、跳转到第二阶段。
3.2、bootloader的第二阶段
a、初始化本阶段要使用到的硬件;
b、读取环境变量;
c、如果是自启动模式,从Flash或通过网络加载内核并执行;
d、如果是下载模式,接收到用户的命令后执行。