嵌入式Linux開發(fā)環(huán)境的搭建之:嵌入式開發(fā)環(huán)境的搭建
2.串口下載
使用串口下載需要配合特定的下載軟件,如優(yōu)龍公司提供的DNW軟件等,一般在Windows下進行操作。雖然串口下載的速度沒有網(wǎng)絡下載快,但由于它很方便,不需要額外的連線和設置IP等操作,因此也廣受用戶的青睞。下面就以DNW軟件為例,介紹串口下載的方式。
與其他串口通信的軟件一樣,在DNW中也要設置“波特率”、“端口號”等。打開“Configuration”下的“Options”界面,如圖5.17所示。
圖5.17DNW配置界面
在配置完之后,單擊“SerialPort”下的“Connect”,再將開發(fā)板上電,選擇“串口下載”,接著再在“SerialPort”下選擇“Transmit”,這時,就可以進行文件傳輸了,如圖5.18和圖5.19所示。這里DNW默認串口下載的地址為0x30200000。
圖5.18DNW串口下載圖
圖5.19DNW串口下載情形圖
5.1.4編譯嵌入式Linux內(nèi)核
在做完了前期的準備工作之后,在這一步,讀者就可以編譯嵌入式Linux的內(nèi)核了。在這里,本書主要介紹嵌入式Linux內(nèi)核的編譯過程,在下一節(jié)會進一步介紹嵌入式Linux中體系結(jié)構(gòu)相關的內(nèi)核代碼,讀者在此之后就可以嘗試嵌入式Linux操作系統(tǒng)的移植。
編譯嵌入式Linux內(nèi)核都是通過make的不同命令來實現(xiàn)的,它的執(zhí)行配置文件就是在第3章中講述的makefile。Linux內(nèi)核中不同的目錄結(jié)構(gòu)里都有相應的makefile,而不同的makefile又通過彼此之間的依賴關系構(gòu)成統(tǒng)一的整體,共同完成建立依賴關系、建立內(nèi)核等功能。
內(nèi)核的編譯根據(jù)不同的情況會有不同的步驟,但其中最主要分別為3個步驟:內(nèi)核配置、建立依賴關系、創(chuàng)建內(nèi)核映像,除此之外還有一些輔助功能,如清除文件和依賴關系等。讀者在實際編譯時若出現(xiàn)錯誤等情況,可以考慮采用其他輔助功能。下面分別講述這3步主要的步驟。
(1)內(nèi)核配置。
第一步內(nèi)核配置中的選項主要是用戶用來為目標板選擇處理器架構(gòu)的選項,不同的處理器架構(gòu)會有不同的處理器選項,比如ARM就有其專用的選項如“Multimediacapabilitiesportdrivers”等。因此,在此之前,必須確保在根目錄中makefile里“ARCH”的值已設定了目標板的類型,如:
ARCH:=arm
接下來就可以進行內(nèi)核配置了,內(nèi)核支持4種不同的配置方法,這幾種方法只是與用戶交互的界面不同,其實現(xiàn)的功能是一樣的。每種方法都會通過讀入一個默認的配置文件—根目錄下“.config”隱藏文件(用戶也可以手動修改該文件,但不推薦使用)。當然,用戶也可以自己加載其他配置文件,也可以將當前的配置保存為其他名字的配置文件。這4種方式如下。
n makeconfig:基于文本的最為傳統(tǒng)的配置界面,不推薦使用。
n makemenuconfig:基于文本選單的配置界面,字符終端下推薦使用。
n makexconfig:基于圖形窗口模式的配置界面,Xwindow下推薦使用。
n makeoldconfig:自動讀入“.config”配置文件,并且只要求用戶設定前次沒有設定過的選項。
在這4種模式中,makemenuconfig使用最為廣泛,下面就以makemenuconfig為例進行講解,如圖5.20所示。
圖5.20makemenuconfig配置界面
從該圖中可以看出,Linux內(nèi)核允許用戶對其各類功能逐項配置,一共有18類配置選項,這里就不對這18類配置選項進行一一講解了,需要的時候讀者可以參見相關選項的help。在menuconfig的配置界面中是純鍵盤的操作,用戶可使用上下鍵和“Tab”鍵移動光標以進入相關子項,圖5.21所示為進入了“SystemType”子項的界面,該子項是一個重要的選項,主要用來選擇處理器的類型。
圖5.21SystemType子項
可以看到,每個選項前都有個括號,可以通過按空格鍵或“Y”鍵表示包含該選項,按“N”表示不包含該選項。
另外,讀者可以注意到,這里的括號有3種,即中括號、尖括號或圓括號。讀者可以用空格鍵選擇相應的選項時可以發(fā)現(xiàn)中括號里要么是空,要么是“*”;尖括號里可以是空,“*”和“M”,分別表示包含選項、不包含選項和編譯成模塊;圓括號的內(nèi)容是要求用戶在所提供的幾個選項中選擇一項。
此外,要注意2.4和2.6內(nèi)核在串口命名上的一個重要區(qū)別,在2.4內(nèi)核中“COM1”對應的是“ttyS0”,而在2.6內(nèi)核中“COM1”對應“ttySAC0”,因此在啟動參數(shù)的子項要格外注意,如圖5.22所示,否則串口打印不出信息。
圖5.22啟動參數(shù)配置子項
一般情況下,使用廠商提供的默認配置文件都能正常運行,所以用戶初次使用時可以不用對其進行額外的配置,在以后需要使用其他功能時再另行添加,這樣可以大大減少出錯的幾率,有利于錯誤定位。在完成配置之后,就可以保存退出,如圖5.23所示。
圖5.23保存退出
(2)建立依賴關系。
由于內(nèi)核源碼樹中的大多數(shù)文件都與一些頭文件有依賴關系,因此要順利建立內(nèi)核,內(nèi)核源碼樹中的每個Makefile都必須知道這些依賴關系。建立依賴關系通常在第一次編譯內(nèi)核的時候(或者源碼目錄樹的結(jié)構(gòu)發(fā)生變化的時候)進行,它會在內(nèi)核源碼樹中每個子目錄產(chǎn)生一個“.depend”文件。運行“makedep”即可。在編譯2.6版本的內(nèi)核通常不需要這個過程,直接輸入“make”即可。
(3)建立內(nèi)核
建立內(nèi)核可以使用“make”、“makezImage”或“makebzImage”,這里建立的為壓縮的內(nèi)核映像。通常在Linux中,內(nèi)核映像分為壓縮的內(nèi)核映像和未壓縮的內(nèi)核映像。其中,壓縮的內(nèi)核映像通常名為zImage,位于“arch/$(ARCH)/boot”目錄中。而未壓縮的內(nèi)核映像通常名為vmlinux,位于源碼樹的根目錄中。
到這一步就完成了內(nèi)核源代碼的編譯,之后,讀者可以使用上一小節(jié)所講述的方法把內(nèi)核壓縮文件下載到開發(fā)板上運行。
小知識 | 在嵌入式Linux的源碼樹中通常有以下幾個配置文件,“.config”、“autoconf.h”、“config.h”,其中“.config”文件是makemenuconfig默認的配置文件,位于源碼樹的根目錄中。“autoconf.h”和“config.h”是以宏的形式表示了內(nèi)核的配置,當用戶使用makemenuconfig做了一定的更改之后,系統(tǒng)自動會在“autoconf.h”和“config.h”中做出相應的更改。它們位于源碼樹的“/include/linux/”下。 |
linux相關文章:linux教程
評論