bootloader的作用和步驟及例程

2021-08-07 05:58:13 字數 2374 閱讀 2733

了解開發板資源

1、找cpu,用什麼樣的架構的cpu,為了找到系統上電後,第一條執行的**,我們該放在**?

arm:異常向量表(reset) 0x0 0x90

2、0x0接的是什麼晶元,flash(nor-flash),rom

s5pv210:soc

soc = cpu + controler

2.1、datasheet block

3、這些位址都被晶元公司重新定義,去晶元公司的datasheet中去尋找memory map這樣的章節

片內資源:sfr

片外資源

找異常向量表中的reset向量的位址對應的是什麼東西

s5pv210:0x0–irom–code–jump to new addr

s3c2410:cpu arm – 0x0 –srom(bank0) —bank0 掛接的是什麼晶元

boot目的:

跳到c語言中:

關閉看門狗,中斷,mmu(帶作業系統),cache。

配置系統工作時鐘

配置sdram的控制器(行位址數,列位址數,多少塊,週期性的充電)

讓sp指向可讀可寫的裝置區間中,滿足遞減棧的規則sdram

—用哪些模式,就要初始化哪些模式下的sp

—每個模式值不能覆蓋其他模式

**搬移

—執行速度問題,把程式從儲存器 (nor-flash)搬移到快速的記憶體

—只把儲存器的一部分**執行出來,把儲存在其他位置上的**搬移到記憶體,—對應儲存器控制器的初始化

bl main

sp5v210

loader的目的:

執行應用邏輯,點燈,uart,load linux kernel

建立檔案

inc makefile mian.c

1 通用的makefile,支援sd卡啟動和在uboot下直接執行在ram

1)程式執行時的位址不同

- - - - ddr : 0x20000000

- - - - sd : 0x0

2) sd   16kb ,  需要加乙個頭資訊,校驗

ram : 不需要加頭資訊

2、變數集合

target:dep

command

#design by rocky for s5pv210

#define var

target

:= led.bin

build

:= led

env ?= sd

sdtool

:= ./mk210

cobjs += start.o

cobjs += mian.o

cross_compile

:= arm-linux-

cc:= $(

cross_compile)gcc

ld:= $(

cross_compile)ld

objcopy

:= $(

cross_compile)objcopy

cflags += -wall

cflags += -i./inc

ifeq ($(

env),ram)

ldflags += -ttext= 0x0

else

ldflags += -ttext = 0x20000000

endif

#way

all :

$ (target)

ifeq ($(

env),ram)

$(target):

$(build)

$(objcopy) -o binary $^

$@else

$ (target) :

$(build)

$(objcopy) -o binary $^

[email protected]

$(sdtools) [email protected]

$@ 

endif

$(build) :

$(cobjs)

$(ld) $ (ldflags) -o)  $@

$^     

%.o : %.c

$(cc)  $(

cflags)  -c  -o  $@

$^%.o : %.s

$(cc) $(

cflags) -c -o $@

$^clean:

rm -f $(

target)  $(

build)  *.o *.tmp

嵌入式 Bootloader的作用

關於bootloader的作用,老師教我們把它當作pc的bios來理解,但其實不完全是這麼回事。文章參考 bootloader是系統加電後執行的第一段 一般它只在系統啟動時非常短的時間內執行。在pc中,整個bootloader由bios 主機板上固化的一段程式 位於硬碟mbr區的os loader一...

bootloader和bootstrap的區別

bootloader和bootstrap的區別 在 embedded linux primer 上看到的,其實還有一些分歧和不精確的地方,比如bootstrap 和bootstrap loader似乎在pc上還有區別,不過還是不影響理解了 又如redboot redhat embedded debu...

bootloader和bootstrap的區別

在 embedded linux primer 上看到的,其實還有一些分歧和不精確的地方,比如bootstrap 和bootstrap loader似乎在pc上還有區別,不過還是不影響理解了 又如redboot redhat embedded debug and bootstrap 本質是乙個boo...