imx6q u boot函式執行流程分析

2021-08-20 02:33:54 字數 1005 閱讀 4650

bsp: l_4.1.5_1.2.0_ga

關於u-boot(2015.04)的函式執行流程分析:

在make ***_defconfig時會指定u-boot相關的配置檔案,配置檔案的指定流程是通過makefile實現的,就不具體分析了。

下面分析u-boot的函式呼叫流程:

首先會執行/arch/arm/cpu/armv7/中的start.s,分析此檔案

其中有一句:

bl_main

會呼叫/arch/arm/lib/ctr0.s,分析此檔案發現:

blboard_init_f

ldrpc, =board_init_r

board_init_f和board_init_r都是c語言的函式,他們分別位於:

/common/board_f.c和/common/board_r.c

u-boot就是通過這兩個函式去一步步初始話乙個板子的。

繼續分析board_init_f()函式,其通過呼叫initcall_run_list(init_sequence_f),將函式指標陣列init_sequence_f中的函式一一執行,而init_sequence_f中的board_early_init_f。

在執行完board_init_f ()後會執行board_init_r ()函式,與board_init_f類似,board_init_r也會通過呼叫initcall_run_list(init_sequence_r),將init_sequence_r中的函式一一執行,並最終呼叫run_main_loop,剩下的執行流程就不做分析了(大家都能看懂),需要注意的是函式board_init和board_late_init與board_early_init_f都是在板級初始化檔案中定義的(/board/freescale/mx6sabresd/mx6sabresd.c),使用者自定義的初始化**,均可以放在這三個初始化函式中,需要注意的是在mx6sabresd.c中有乙個初始化函式為board_init_f(),此函式是不會被執行的,千萬要注意!僅有上述的三個初始化函式會被u-boot呼叫!!!

飛凌imx6q uboot新增I2C讀寫外設

有時候需要在uboot啟動或配置i2c外設,例如led控制晶元等。imx6q uboot中初始化 位置在uboot imx board freescale mx6q sabresd mx6q sabresd.c檔案中 imx6q uboot中使用的i2c方法在 uboot imx drivers i...

imx6ul 正點原子 imx6ul學習筆記(1)

目錄 linux imx6ull uboot alientek uboot 檔名 mx6ull alientek emmc.sh 編譯方法 mx6ull alientek emmc.sh目錄 f imx6ull alientek uboot cd alientek uboot 進入正點原子 uboo...

imx6ul 正點原子 imx6ul學習筆記(2)

目錄 home jk9 linux imx6ull alientek linux 編譯,vscode工程建立 2020.3.12 目錄 home jk9 linux nxp nxp linux 編譯 2020.3.12.23 32 1 新增開發板預設配置檔案 2 新增開發板對應的裝置樹檔案cp ar...