第一次寫技術(shù)博客,還有些興奮呢。我是CrazyCatJack,大家可以叫我CCJ或者瘋貓。我即將成為一名嵌入式Linux的驅(qū)動(dòng)工程師,現(xiàn)在還是一枚大四狗,呼呼~大學(xué)期間做了一些項(xiàng)目和比賽,都是基于32位的MCU(例如STM32、Freescale K60),這些呢都是根據(jù)網(wǎng)上的視頻,PDF自學(xué)的?,F(xiàn)在想更進(jìn)一步,學(xué)習(xí)一下嵌入式Linux、UCOS-II等嵌入式系統(tǒng)。因?yàn)榻o板子加系統(tǒng)是一個(gè)必然趨勢(shì),控制會(huì)越來(lái)越復(fù)雜,內(nèi)容也越來(lái)越多的。有一個(gè)系統(tǒng)統(tǒng)籌管理是非常棒的選擇。好了,廢話少說(shuō),今天開始我的第一篇技術(shù)博客:u-boot的配置、編譯和鏈接^_^
看到有的小伙伴好像不太了解u-boot,因此我簡(jiǎn)單介紹一下,u-boot是一種bootloader。在嵌入式開發(fā)過(guò)程中,bootloader用于配置平臺(tái)/開發(fā)板,最主要的功能就是從flash中讀出內(nèi)核,然后啟動(dòng)內(nèi)核。我們平時(shí)在PC上使用windows系統(tǒng)也是類似的。PC上是BIOS對(duì)硬件配置,從硬盤讀出windows內(nèi)核,然后啟動(dòng)windows內(nèi)核,進(jìn)入windows系統(tǒng)。相對(duì)的,嵌入式平臺(tái)是bootloader對(duì)硬件配置,讀出并啟動(dòng)嵌入式系統(tǒng)內(nèi)核(例如Linux內(nèi)核),進(jìn)入你所用的嵌入式系統(tǒng)。
1.u-boot的配置
首先,我們要想了解u-boot,最好是從Makefile開始看,就能知道u-boot要執(zhí)行的操作了。就像C語(yǔ)言中的main函數(shù)一樣。在Makefile文件里,和配置相關(guān)的語(yǔ)句如下:
OBJTREE := $(if $(BUILD_DIR),$(BUILD_DIR),$(CURDIR)) SRCTREE := $(CURDIR) TOPDIR := $(SRCTREE) LNDIR := $(OBJTREE) export TOPDIR SRCTREE OBJTREE MKCONFIG := $(SRCTREE)/mkconfig export MKCONFIG CCJ_config : unconfig @$(MKCONFIG) $(@:_config=) arm arm920t CCJ NULL s3c24x0