當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > 系統(tǒng)移植之bootloader移植
做boot移植工作之前,首先要確定整個(gè)boot的啟動(dòng)流程,根據(jù)啟動(dòng)流程確定移植步驟。
首先看一下boot的啟動(dòng)流程:
Bootloader執(zhí)行基本的硬件初始化操作。如關(guān)閉中斷,關(guān)閉看門狗以避免處理器被復(fù)位,以及關(guān)閉MMU功能,關(guān)閉處理器緩存(數(shù)據(jù)緩存一定要關(guān)閉,指令緩存可以打開),設(shè)置系統(tǒng)時(shí)鐘,初始化內(nèi)存等。這一階段代碼通常由匯編代碼編寫,為了運(yùn)行下一階段的C程序還必須設(shè)置好堆棧。如果是從NAND Flash啟動(dòng),則必須通過NAND Flash控制器將bootloader代碼復(fù)制到內(nèi)存。
這一階段一般用C語言編寫,大致分為一下幾步:
1)初始化各種硬件設(shè)備,如設(shè)置處理器正常工作的時(shí)鐘頻率,初始化串口等。
2)檢測(cè)系統(tǒng)內(nèi)存,主要是確定系統(tǒng)內(nèi)存容量以及其地址空間信息。
3)將內(nèi)核映像文件加載到內(nèi)存。
4)準(zhǔn)備內(nèi)核引導(dǎo)參數(shù)。
5)跳轉(zhuǎn)到內(nèi)核的第一條指令處,開始執(zhí)行內(nèi)核初始化代碼,控制權(quán)轉(zhuǎn)移到內(nèi)核代碼,bootload的使命結(jié)束。
基本上每個(gè)架構(gòu)平臺(tái)的單板移植都需要以下移植步驟:
1、確定架構(gòu)(比如ARM,MIPS,POWERPC)、平臺(tái)(比如三星、海思)、單板(fs4412、exynos_origen)
2、確認(rèn)交叉開發(fā)環(huán)境(更改Makefile的CROSS_COMPILE為arm-linux-)
3、配置、編譯及燒寫(make fs4412_config;make)
燒寫時(shí)要注意環(huán)境變量的配置
4、查看串口是否有輸出
如果沒有輸出首先查找串口驅(qū)動(dòng)上面的問題,再按照整個(gè)boot的啟動(dòng)流程判斷哪里存在問題。
5、查看外圍設(shè)備是否正常工作(如網(wǎng)卡)
6、裁剪(如果使用flash較小就需要針對(duì)不需要的功能進(jìn)行裁剪)