具体分析参见另一篇blog:
http://blog.csdn.net/u013686019/article/details/43935723
第一阶段的启动在./cpu/arm920t/start.S文件中完成,之后运行C程序,对硬件进行更细致的初始化操作:
硬件初始化:
设置svc模式;
关闭Watch Dog;
禁止IRQ;
设置时钟:FCLK、HCLK、PCLK;
禁止I-cache、D-cache;
禁止MMU和CACHE;
配置memory control。
代码拷贝:
若当前代码不在连接文件指定的地址上,要把U-Boot拷贝到指定的RAM地址。
设置堆栈:
进入C函数前需要完成堆栈设置。
清bss区:
跳转到start_armboot函数执行,最后根据用户输入决定下一步动作:下载模式或加载内核
这部分的流程图为: