天天看點

《Linux 裝置驅動開發詳解(第2版)》——1.5 Linux裝置驅動開發環境建構

本節書摘來自異步社群《linux 裝置驅動開發詳解(第2版)》一書中的第1章,第1.5節,作者:宋寶華著,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

linux 裝置驅動開發詳解(第2版)

1.5.1 pc上的linux環境

本書配套CD光牒提供了一個ubuntu的virtualbox虛拟機映像,該虛拟機上安裝了所有本書涉及的源代碼、工具鍊和各種開發工具,讀者無需再安裝和配置任何環境。該虛拟機可運作于windows等作業系統中,運作方法如下。

(1)解壓縮安裝盤内的虛拟機磁盤映像virtual-disk.rar到本地硬碟得到virtual-disk.vdi(至少需要16gb的空閑磁盤空間)。

(2)安裝安裝盤内的virtualbox虛拟機軟體。

(3)建立一個虛拟機。

① 單擊“建立”按鈕,指定虛拟機使用linux ubuntu系統,如圖1.6所示。

《Linux 裝置驅動開發詳解(第2版)》——1.5 Linux裝置驅動開發環境建構

② 單擊“下一步”按鈕,如圖1.7所示,使用推薦的記憶體384mb。

《Linux 裝置驅動開發詳解(第2版)》——1.5 Linux裝置驅動開發環境建構

③ 指定虛拟機磁盤映像為第一步解壓縮得到的virtual-disk.vdi,如圖1.8所示。

《Linux 裝置驅動開發詳解(第2版)》——1.5 Linux裝置驅動開發環境建構

④ 完成設定,如圖1.9所示。

之後就可以啟動虛拟機,賬号和密碼都是“lihacker”。本書配套源代碼都位于lihacker主目錄的develop目錄下,幾個主要項目針對/home/lihacker/develop/的子目錄如下。

ldd6410開發闆核心源代碼:svn/ldd6410-2-6-28-read-only/linux-2.6.28-samsung。

ldd6410開發闆u-boot源代碼:svn/ldd6410-read-only/s3c-u-boot-1.1.6。

《Linux 裝置驅動開發詳解(第2版)》——1.5 Linux裝置驅動開發環境建構

ldd6410開發闆檔案系統用的busybox、jpegview、mplayer、appweb等:svn/ldd6410-read- only/utils。

ldd6410開發闆及常用linux使用者空間驅動測試程式:svn/ldd6410-read-only/tests。

書中globalmem、globalfifo等驅動執行個體:svn/ldd6410-read-only/training/kernel。

android的源代碼:git/myandroid。

ndk:android-ndk-r3。

eclipse:單擊桌面上的“android-eclipse”圖示,即可運作附帶adt的eclipse開發工具。

1.5.2 ldd6410開發闆

ldd6410是本書專配的一款高端arm11處理器開發闆(其結構如圖1.10所示,實物如圖1.11所示),采用三星公司最新推出s3c6410處理器,晶片擁有強大的内部資源和視訊處理能力,闆上內建了豐富的外圍接口,其主要特點如下。

(1)運作于533mhz的arm11處理器(最高主頻可達到667mhz)。

(2)運作于266mhz的ddr記憶體,128mb。

(3)1mb nor flash。

(4)256mb nand flash。

(5)wm9714 ac97聲霸卡。

(6)vga輸出接口(可達1024×768@60hz)。

(7)tv輸出接口。

(8)usb 2.0 otg接口及usb 1.1 host接口。

《Linux 裝置驅動開發詳解(第2版)》——1.5 Linux裝置驅動開發環境建構

(9)sd/sdio接口,支援sd卡和sdio裝置。

(10)dm9000百兆網卡。

(11)4.3寸lcd(分辨率為480×272)、觸摸屏。

(12)s3c6410晶片内嵌圖形加速,jpeg、多媒體編解碼。

(13)6個gpio按鍵。

(14)可擴充camera、wifi、3g modem等子產品。

(15)可擴充外部矩陣鍵盤。

配套電路闆提供了如下軟體。

(1)工具鍊:提供了arm-linux-gcc、arm-linux-gdb、gdbserver、strace用于android開發的eclipse(帶adt插件)、jdk和ndk。

(2)u-boot:u-boot源代碼包含獨立的ldd6410檔案,支援從sd卡、nand啟動,支援dm9000網卡引導。

(3)linux核心、bsp和驅動:linux 2.6.28核心、源代碼,包含獨立的ldd6410 bsp和完整的裝置驅動。

(4)檔案系統:基于新版busybox 1.15.1,檔案系統內建jpegview、mplayer、appweb等大量應用,內建了按鍵、滑鼠、觸摸屏、lcd等測試程式,作為驅動的使用者應用案例。

(5)android:提供android源代碼和檔案系統、核心電源管理更新檔源代碼、核心android驅動源代碼。ldd6410的android系統支援按鍵、觸摸屏和滑鼠操作,支援使用lcd和vga進行顯示。

(6)qt:ldd6410支援qt/embedded 4.5.3,移植了ts_lib和tslib, ts_calibration,支援使用觸摸屏進行操作。

ldd6410支援從sd卡或nand啟動,通過電路闆上的sw1可設定ldd6410的啟動模式。從sd卡啟動裝置為全on;從nand啟動時,将1、2設定為on,3、4設定為off。

ldd6410開發闆的詳細使用方法,請見配套CD光牒中的“ldd6410開發闆使用者手冊”。

1.5.3 工具鍊安裝

本書配套CD光牒的虛拟機映像中已經安裝好了ldd6410的工具鍊,ldd6410開發闆工具鍊為s3c6410x-toolchain4.2.2-eabi-v0.0-cross-4.2.2-eabi.tar。安裝步驟如下。

(1)解壓上述工具鍊獲得檔案夾:4.2.2-eabi/。

(2)在/usr/local/下面建立目錄 arm/(注意,最好是放到這個目錄,不然在以後的編譯過程中可能出現一些錯誤)。

(3)将目錄 4.2.2-eabi/移動到/usr/local/arm/下面。

(4)設定環境變量。

編輯/etc/profile 檔案,在檔案末尾添加:

使環境變量生效,在終端輸入指令:

另外,也可以通過修改home目錄的.bashrc來将/usr/local/arm/4.2.2-eabi/usr/bin添加到path:

(5)測試環境變量是否設定成功。

在終端輸入:echo $path,如果輸出的路徑中包含了/usr/local/arm/4.2.2-eabi/usr/bin,則說明環境變量設定成功。

(6)測試交叉編譯工具鍊。

在終端輸入“arm-linux-gcc –v”,顯示如下:

說明交叉編譯工具鍊已經安裝成功。

ldd6410-debug-tools.tar.gz調試工具包包含了strace、gdbserver和arm-linux-gdb,其中 strace、gdbserver用于目标闆檔案系統,arm-linux-gdb 運作于主機端,對目标闆上的核心、核心子產品應用程式進行調試。

解壓ldd6410-debug-tools.tar.gz,将其中的arm-linux-gdb放入主機上arm-linux-gcc所在的目錄/usr/local/arm/4.2.2-eabi/usr/bin/。

而 strace、gdbserver則可根據需要放入目标機根檔案系統的/usr/sbin目錄。

1.5.4 主機端nfs和tftp服務安裝

本書配套CD光牒的虛拟機映像中已經安裝好了nfs和tftp,ldd6410可使用tftp或nfs檔案系統與主機通過網口互動。如果使用者想在其他環境下自行安裝,對于ubuntu或debian使用者而言,在主機端可通過如下方法安裝tftp服務:

開啟tftp服務:

對于ubuntu或debian使用者而言,在主機端可通過如下方法安裝nfs服務:

運作“sudo vim /etc/exports”或“sudo gedit /etc/exports”,修改該檔案内容為:

運作exportfs rv開啟nfs服務:

1.5.5 源代碼閱讀和編輯

源代碼是學習linux的最權威資料,在windows上閱讀linux源代碼的最佳工具是source insight,在其中建立一個工程,并将linux的所有源代碼加入該工程,同步這個工程之後,我們将可以非常友善地在代碼之間進行關聯閱讀,如圖1.12所示。

在linux主機上閱讀和編輯linux源碼的常用方式是vim + cscope或者vim + ctags,vim是一個文本編輯器,而cscope和ctags則可建立代碼索引,建議讀者盡快使用基于文本界面全鍵盤操作的vim編輯器,如圖1.13所示。

《Linux 裝置驅動開發詳解(第2版)》——1.5 Linux裝置驅動開發環境建構
《Linux 裝置驅動開發詳解(第2版)》——1.5 Linux裝置驅動開發環境建構
上一篇: jenkins
下一篇: Jenkins