1、建立和初始化内存区域(这一步是必须的)
2、初始化至少一个串口,通过该串口可以打印内核引导时候的相关信息,供调试使用。
在引导参数上的表现为,传递给console= 的参数给内核
3、探测机器的类型。设置的机器码要和相应的引导中设置的一致。可以参考的文件为
arch/arm/tools/mach-types
4、建立并初始化内核标签列表。ATAG_CORE,ATAG_MEM,ATAG_NONE
标签列表应该放置在内核解压缩或者bootp不会覆盖的内存区域,建议是RAM的前16KB
5、调用内核镜像,从镜像处开始执行(从Flash或者RAM中调用执行zImage),主要下面动作:
禁止DMA;r0=0,r1=机器类型,r2=标签列表地址;禁止所有中断;关闭MMU,D-cache,I-cache;
直接掉到内核镜像的第一条指令开始执行