啟動流程
1、 Stage1
start.S代碼結構 u-boot的stage1代碼通常放在start.S檔案中,用匯編語言,主要實作功能如下:
(1) 定義入口: 該作業通過修改連接器腳本來完成,
(2)設定例外向量(Exception Vector),
(3)設定CPU的速度、時鐘頻率及終端控制暫存器,
(4)初始化記憶體控制器,
(5)將ROM中的程式復制到RAM中,
(6)初始化堆疊,
(7)轉到RAM中執行,該作業可使用指令ldr pc來完成,
bl lowlevel_init跳轉到arm926ejs里面的spl.c
2、Stage2
C語言代碼部分 lib_arm/board.c中的start arm boot是C語言開始的函式也是整個啟動代碼中C語言的主函式,同時還是整個u-boot(armboot)的主函式,該函式只要完成如下操作:
(1)呼叫一系列的初始化函式,
(2)初始化Flash設備,
(3)初始化系統記憶體分配函式,
(4)如果目標系統擁有NAND設備,則初始化NAND設備,
(5)如果目標系統有顯示設備,則初始化該類設備,
//LCM
(6)初始化相關網路設備,填寫IP、MAC地址等,
(7)進去命令回圈(即整個boot的作業回圈),接受用戶從串口輸入的命令,然后進行相應的作業,
u-boot\arch\arm\cpu\armv7\start.S
.globl _start
_start: b reset
… …
jump_2_ram:
… …
_board_init_r_ofs:
.word board_init_r - _start //呼叫 uboot/arch/arm/lib/ board.c 是C 語言開始的函式也是整個啟動代碼中C語言的主函式,進入Stage2
u-boot\arch\arm\lib\board.c
一、初始化硬體
board_init_r() (u-boot15/arch/arm/board.c)
————>board_init()(sl8541e_1h10.c)
————>stdio_init()
————>drv_lcd_init() (common/lcd.c)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/17228.html
標籤:嵌入式
上一篇:關于ESP8266 NodeCMU韌體無法刷入新代碼的解決方法
下一篇:POSIX簡介
