uboot介绍及源代码详细分析

一口Linux
关注

三、内核启动流程概述

1. 内核启动流程 概述

uboot启动流程

如上图所示:

设备上电之后,先执行iROM中的出厂代码,先进行必要硬件的初始化去执行uboot,通常把kernel、设备树文件放到flash中程序启动之后,往往先从flash启动,运行uboot第一步:先进行硬件的初始化(svc模式栈、clock、内存、串口)第二步:自搬移:把uboot从flash中拷贝到RAM中,跳转到RAM中执行剩下的uboot代码
第三步:把内核拷贝到RAM中,执行内核,把控制权交给内核。2. 内核启动详细流程

开发板从上电到启动内核的过程

四、uboot启动流程代码详解

1. lds文件

要想了解uboot整个项目的代码流程,必须首先了解链接脚本【链接脚本参考《7. 从0开始学ARM-GNU伪指令,lds使用》】。

该文件决定了uboot最终生成的镜像文件,各个段的布局。

uboot链接脚本如下:

u-boot-2013.01/arch/arm/cpu/u-boot.lds

文件内容:

26 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
27 OUTPUT_ARCH(arm)
28 ENTRY(_start)
29 SECTIONS
30 {
31     . = 0x00000000;
32
33     . = ALIGN(4);
34     .text :
35     {
36         __image_copy_start = .;
37         CPUDIR/start.o (.text*)
38         *(.text*)
39     }
40
41     . = ALIGN(4);
42     .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
43
44     . = ALIGN(4);
45     .data : {
46         *(.data*)
47     }
48
49     . = ALIGN(4);
50
51     . = .;
52
53     . = ALIGN(4);
54     .u_boot_list : {
55     #include <u-boot.lst>
56     }
57
58     . = ALIGN(4);
59
60     __image_copy_end = .;
61
62     .rel.dyn : {
63         __rel_dyn_start = .;
64         *(.rel*)
65         __rel_dyn_end = .;
66     }
67
68     .dynsym : {
69         __dynsym_start = .;
70         *(.dynsym)
71     }
72
73     _end = .;
74
75    
76      * Deprecated: this MMU section is used by pxa at present but
77      * should not be used by new boards/CPUs.
78      
79     . = ALIGN(4096);
80     .mmutable : {
81         *(.mmutable)
82     }
83
84     .bss __rel_dyn_start (OVERLAY) : {
85         __bss_start = .;
86         *(.bss*)
87          . = ALIGN(4);
88         __bss_end__ = .;
89     }
90
91     /DISCARD/ : { *(.dynstr*) }
92     /DISCARD/ : { *(.dynamic*) }
93     /DISCARD/ : { *(.plt*) }
94     /DISCARD/ : { *(.interp*) }
95     /DISCARD/ : { *(.gnu*) }
96 }
97

声明: 本文由入驻OFweek维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。
侵权投诉

下载OFweek,一手掌握高科技全行业资讯

还不是OFweek会员,马上注册
打开app,查看更多精彩资讯 >
  • 长按识别二维码
  • 进入OFweek阅读全文
长按图片进行保存