uboot 2013 07 运行流程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

uboot 2013 07 运行流程
board:board/friendlyarm/mini2440
目前只支持nor启动
1、由编译链接文件u-boot.lds// arch/arm/cpu/u-boot.lds
可知,第一个运行的文件为:
CPUDIR/start.o//arch/arm/cpu/arm920t/start.S
1)设置异常向量
2)设置CPU的工作模式
3)关中断
4)关看门狗
5)设置CPU时钟
6)配置caches
7)禁mmu
8)bl lowlevel_init],跳到lowlevel_init.S
2、lowlevel_init.S//在samsung/smdk2410/lowlevel_init.S,自己添加进来
1)存储控制器初始化:位数,时序等
2)返回到start.S,然后bl _main,跳到crt0.S
3、crt0.S// arch/arm/lib
(此文件官方说明:
2013/1/ 8
arm: move C runtime setup code in crt0.S
Move all the C runtime setup code from every start.S
in arch/arm into arch/arm/lib/crt0.S. This covers
the code sequence from setting up the initial stack
to calling into board_init_r().
从2013/1/ 8起,把C语言运行环境的设置,放到crt0.S文件)
1)堆栈设置
2)blboard_init_f
4、board_init_f()// arch/arm/lib/board.c
1)第一阶段平台的初始化工作
timer_init,env_init, ram_init... 计算堆栈addr_sp,设置gd、bd结构体空间,异常中断堆空间,计算出重定向u-boot的位置addr,控制台初始化,打印一些消息
2)回到crt0.S
设置新的sp and gd
3)brelocate_code,跳到relocate.S
5、relocate.S//arch/arm/lib
1)把U-Boot复制到SDRAM中指定的位置处。

2)对rel.dyn进行重定向
3)回到crt0.S
对BSS段进行清零
4)ldrpc, =board_init_r跳到board_init_r()函数,进入真正的第二阶段
6、board_init_r()//arch/arm/lib/board.c 初始化NANDFLASH
初始化PC
设置IP地址
初始化各类外设,如IIC、LCD、键盘、USB等
进入main_loop();
7、main_loop();// common/main.c
Uboot的死循环,读取控制台命令
len = readline (CONFIG_SYS_PROMPT);
运行命令
rc = run_command(lastcommand, flag);。

相关文档
最新文档