其实我所希望的是:拿到一颗arm芯片,能从原理图的设计开始,自己打样板,自己创建启动文件,然后加载自己定制的linux系统…… 好吧,想的有点远,arm的学习还得一步一步来。
1. 初识uboot
- uboot作用
uboot属于bootloader的一种,用来引导和启动内核的,其目的是从flash中读出内核放到内存中,启动内核 - uboot是怎样引导启动内核的
uboot刚开始被放入flash中,cpu上电后,先拷贝一部分代码到内存中,然后这部分代码负责把其余代码拷贝到内存中,然后再把kernel代码拷贝到内存中并启动。内核启动后,挂着根文件系统,执行应用程序 - uboot的启动过程
uboot启动主要分两个阶段,主要在start.s文件中。
第一阶段:
主要做的是硬件的初始化。包括,设置处理器模式为SVC模式,关闭看门狗,屏蔽中断,初始化sdram,设置栈、时钟,从flash拷贝代码到内存,清除bss段等(bss段是存储静态变量及全局变量的),然后程序跳转到start_arm_boot函数。
第二阶段:
主要是从flash中读出并启动内核。
从start_arm_boot开始, 其的主要流程为,设置机器id,初始化flash,然后进入main_loop,等待uboot命令,uboot要启动内核,主要经过两个函数,第一个是s=getenv("bootcmd"ÿ