Uboot启动流程

Uboot启动流程

ID:37150293

大小:666.35 KB

页数:37页

时间:2019-05-19

Uboot启动流程_第1页
Uboot启动流程_第2页
Uboot启动流程_第3页
Uboot启动流程_第4页
Uboot启动流程_第5页
资源描述:

《Uboot启动流程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、U-Boot启动过程(国嵌)开发板上电后,执行U-Boot的第一条指令,然后顺序执行U-Boot启动函数。看一下board/smdk2410/u-boot.lds这个链接脚本,可以知道目标程序的各部分链接顺序。第一个要链接的是cpu/arm920t/start.o,那么U-Boot的入口指令一定位于这个程序中。下面分两阶段介绍启动流程:第一阶段1.cpu/arm920t/start.S这个汇编程序是U-Boot的入口程序,开头就是复位向量的代码。_start:breset//复位向量ldrpc,_undefined_instructio

2、nldrpc,_software_interruptldrpc,_prefetch_abortldrpc,_data_abortldrpc,_not_usedldrpc,_irq//中断向量ldrpc,_fiq//中断向量…/*theactualresetcode*/reset://复位启动子程序/*设置CPU为SVC32模式*/mrsr0,cpsrbicr0,r0,#0x1forrr0,r0,#0xd3msrcpsr,r0/*关闭看门狗*/…………relocate:/*把U-Boot重新定位到RAM*/adrr0,_start/*r0

3、是代码的当前位置*/ldrr1,_TEXT_BASE/*_TEXT_BASE是RAM中的地址*/cmpr0,r1/*比较r0和r1,判断当前是从Flash启动,还是RAM*/beqstack_setup/*如果r0等于r1,跳过重定位代码*//*准备重新定位代码*/ldrr2,_armboot_startldrr3,_bss_startsubr2,r3,r2/*r2得到armboot的大小*/addr2,r0,r2/*r2得到要复制代码的末尾地址*/copy_loop:/*重新定位代码*/ldmiar0!,{r3-r10}/*从源地址[

4、r0]复制*/stmiar1!,{r3-r10}/*复制到目的地址[r1]*/cmpr0,r2/*复制数据块直到源数据末尾地址[r2]*/blecopy_loop/*初始化堆栈等*/stack_setup:ldrr0,_TEXT_BASE/*上面是128KiB重定位的u-boot*/subr0,r0,#CFG_MALLOC_LEN/*向下是内存分配空间*/subr0,r0,#CFG_GBL_DATA_SIZE/*然后是bdinfo结构体地址空间*/#ifdefCONFIG_USE_IRQsubr0,r0,#(CONFIG_STACKSI

5、ZE_IRQ+CONFIG_STACKSIZE_FIQ)#endifsubsp,r0,#12/*为abort-stack预留3个字*/clear_bss:ldrr0,_bss_start/*找到bss段起始地址*/ldrr1,_bss_end/*bss段末尾地址*/movr2,#0x00000000/*清零*/clbss_l:strr2,[r0]/*bss段地址空间清零循环...*/addr0,r0,#4cmpr0,r1bneclbss_l/*跳转到start_armboot函数入口,_start_armboot字保存函数入口指针*/l

6、drpc,_start_armboot_start_armboot:.wordstart_armboot//start_armboot函数在lib_arm/board.c中实现第二阶段2.lib_arm/board.cstart_armboot是U-Boot执行的第一个C语言函数,完成系统初始化工作,进入主循环,处理用户输入的命令。3.init_sequence[]init_sequence[]数组保存着基本的初始化函数指针。init_fnc_t*init_sequence[]={cpu_init,/*基本的处理器相关配置--cpu/a

7、rm920t/cpu.c*/board_init,/*基本的板级相关配置--board/smdk2410/smdk2410.c*/interrupt_init,/*初始化中断处理--cpu/arm920t/s3c24x0/interrupt.c*/env_init,/*初始化环境变量--common/cmd_flash.c*/init_baudrate,/*初始化波特率设置--lib_arm/board.c*/serial_init,/*串口通讯设置--cpu/arm920t/s3c24x0/serial.c*/console_init

8、_f,/*控制台初始化阶段1--common/console.c*/display_banner,/*打印u-boot信息--lib_arm/board.c*/dram_init,/*配置可用的RAM--b

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。