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