侵权投诉
订阅
纠错
加入自媒体

一款比较常用的bootloader:uboot代码介绍

2021-01-25 17:16
一口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

<上一页  1  2  3  4  下一页>  
声明: 本文由入驻维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。

发表评论

0条评论,0人参与

请输入评论内容...

请输入评论/评论长度6~500个字

您提交的评论过于频繁,请输入验证码继续

暂无评论

暂无评论

电子工程 猎头职位 更多
扫码关注公众号
OFweek电子工程网
获取更多精彩内容
文章纠错
x
*文字标题:
*纠错内容:
联系邮箱:
*验 证 码:

粤公网安备 44030502002758号