2022年8月24日 星期三

[嵌入式系統]開機的順序與記憶體的跳換

開機的順序為bootloader->u-boot

bootloader 可以想像成是PC開機到windows前的GRUB開機管理程式

ARM 結構的 CPU 會從位址 0x00000000 開始執行

但是bootloader是更底層

Bootloader會針對SoC的clock rate做初始化 以及Ram的初始化

透過memory map執行跳躍到u-boot區段

其中記錄開機後bootloader載入的區段,接著u-boot 是linux提前載入的程式階段在此階段會存在很多小工具讓使用診進行診斷或使用 - busybox。

其主要程式為Start.s,分為boot loading模式及下載模式,下載模式可使用一些指令下載,如xmodem, tftp, usb等 並將其存至Ram或Flash固存中。其中透過調用lowlevel_init.S的lowlevel_init進行u-boot相關的低階初始化。

接著跳轉到kernel 這段就是linux的核心層 也就是linux最基礎的功能包含driver的環境


kernel層完之後會根據參照及傳遞值跳躍到application層。


一但到application層即代表 已經開至Userspace上層

沒有留言:

張貼留言