做者:曹忠明,華清遠見嵌入式學院講師。php
Uboot是嵌入式系統中最經常使用的bootloader,這裏咱們以s3c2410爲例分析一下uboot的啓動流程。首先經過uboot的連接文件,咱們能夠看到uboot運行是執行的第一段代碼在start.S中。url
ENTRY(_start)
SECTIONS
{
. = 0x00000000;spa
. = ALIGN(4);
.text :
{
cpu/arm920t/start.o (.text)
*(.text)
}blog
. = ALIGN(4);
.rodata : { *(.rodata) }內存
. = ALIGN(4);
.data : { *(.data) }get
. = ALIGN(4);
.got : { *(.got) }cmd
. = .;
__u_boot_cmd_start = .;
.u_boot_cmd : { *(.u_boot_cmd) }
__u_boot_cmd_end = .;im
. = ALIGN(4);
__bss_start = .;
.bss : { *(.bss) }
_end = .;
}cpu
咱們找到這個文件,以這個文件爲起點看uboot的啓動流程。這裏咱們經過一個圖來講明這個過程。img
最後咱們把整個uboot在執行過程當中,代碼的搬移籍內存的使用狀況經過一個圖,來講明一下。