U-Boot深入分析——启动部分
U-Boot深入分析——启动部分
针对s3c2440部分进行分析。
启动分为两个部分,第一部分完成主要功能:
硬件设备、栈指针的初始化、将第二阶段代码复制到ram中。
第二部分主要功能:
检测内存映射,为内核设置启动参数,从flash读取内核到ram,读取ram。
下面分别对两部分进行分析:
第一部分主要文件是start.S和lowlevel_init.S
入口start.S:
|
1,start_code步骤分析:
首先将cpu工作状态置于超级用户模式:
|
关闭WatchDog,设置中断屏蔽以及系统时钟
|
重置u-boot的代码位置,首先检测当前位置与运行地址(_TEXT_BASE)是否相同,同则转至下步,否则将代码段复制到运行地址:
|
|
设置堆栈指针,bss段清零,跳转到第二阶段代码:
|
2,cpu寄存器初始化过程分析:
清除指令、数据cache:
|
禁用mmu和cache,跳转到开发板相关的lowlevel_init函数:
|
3,lowlevel_init函数分析:
|
13个寄存器的值:
|
第一阶段启动分析完成。
评论暂时关闭