本文用《android深度探索(卷1):hal與驅動開發》的隨書源**為例詳細說明如何配置android驅動開發和測試環境,並且如何使用源 **中的build.sh指令碼檔案在各種平台(ubuntu linux、android模擬器和s3c6410開發板)上編譯、安裝和測試linux驅動。建議讀者使用ubuntu linux12.04或更高版本實驗本文的方法。最好用root賬號登入linux。
一、安裝交叉編譯器
如果只是在ubuntu linux上測試linux驅動就不需要安裝交叉編譯器了,但要在android模擬器或s3c6410開發板上進行測試,就必須安裝交叉編譯器。
分卷1
分卷2分卷3
# tar zxvf arm-linux-gcc-4.3.2.tgz -c /
# tar jxvf arm-none-linux-gnueabi-arm-2008q3-72-for-linux.tar.bz2 -c /
二、編譯和測試linux核心
android模擬器用的linux核心源**(分卷壓縮)
goldfish(卷1)
goldfish(卷2)
goldfish(卷3)
goldfish(卷4)
用於s3c6410開發板的linux核心源**(分卷壓縮)
分卷1
分卷2由於隨書**中的word_count驅動已經在goldfish和linux2.6.36中分別建立了符號鏈結,以便在編譯linux核心時同時也會編 譯word_count驅動,所以linux核心與源**目錄應與作者機器上的目錄相同。也就是兩個linux核心目錄與源**目錄如下:
linux核心目錄
/root/compilers/goldfish
/root/compilers/linux_kernel_2.6.36
源**目錄
/root/drivers
注意/root/drivers目錄下就直接是每一章的源**了,例如/root/drivers/ch06、/root/drivers/ch07
現在需要將/usr/local/arm/arm-none-linux-gnueabi/bin路徑加到linux的path環境變數中(不會加的上網查,這是linux的基本功)
最後進入/root/compilers/goldfish目錄,執行make命令編譯linux核心,如果完全編譯,大概20分鐘左右。編譯完成後,會在/root/kernel/goldfish/arch/arm/boot目錄中生成乙個zimage檔案,**1.7mb,這就是用於android模擬器的linux核心檔案。
三、編譯linux驅動
現在來編譯隨書光碟的驅動程式,這裡以word_count驅動為例。在linux終端進入/root/drivers/ch06/word_count目 錄。先別忙著編譯。首先要設定開啟/root/drivers/common.sh檔案,修改第一行ubuntu_kernel_path變數值為自己機 器上安裝的ubuntu linux核心路徑,只要執行「ls /usr/src」命令即可檢視當前機器可用的linux核心。如可以設定下面的路徑。
ubuntu_kernel_path=/usr/src/linux-headers-3.2.0-23-generic
剩下的兩個(s3c6410_kernel_path和/root/kernel/goldfish)只要按著前面的路徑解壓linux核心源**,就不用設定了。
在word_count目錄中執行「source build.sh」命令,會允許選擇在哪個平台上編譯驅動,直接按回車會在ubuntu linux上編譯。如果編譯成功,會發現當前目錄多乙個word_count.ko檔案(驅動檔案)。
現在來編譯s3c6410上執行的word_count驅動。先別忙,在編譯之前,需要android中的adb命令。因為build.sh足夠只能,在 編譯完後,如果有多個android裝置連線到pc,會允許使用者選擇上傳到哪個裝置裝載,這裡需要選擇s3c6410開發板,然後會直接上傳到開發板上, 如圖1所示。
圖1可以直接使用adb shell命令進入開發板,也可以使用/root/drivers/shell.sh腳 本完成同樣的工作,只是後者如果有多個android裝置,會允許用選擇,而不是輸入相應的裝置id。使操作更方便。在/root/drivers目錄中 提供了很多這樣的指令碼(shell.sh、push.sh、pull.sh等),這些指令碼都會允許使用者選擇操作的android裝置。
> /platform-tools加到path環境變數中。
現在再次執行「source build.sh」命令,選擇第2項(s3c6410開發板),如果系統沒找到開發板,需要將
usb線拔下重插一下。然後就可以進入開發板的終端,輸入lsmod命令檢視驅動的安裝情況了。
如果在模擬器上測試,選第3項。具體測試的方法請參見書中相應的章節。
四、測試linux驅動
測試word_count驅動的方法很多,通過命令列測試的方法請參見書中相應的章節,在word_count目錄中有乙個 test_word_count程式,通過執行如下的命令可以測試word_count驅動,編譯test_word_count.c程式的方法書中已詳 細描述。
test_word_count 「abc bb cc」
上面的命令會輸出單詞數為3。
如果要編譯android hal,需要android源**。購買s3c6410開發板時商家通常會帶一些光碟,裡面有用於開發板的android源**,如果商家沒給光碟,別忘了要哦!
介面驅動程式開發
介面驅動程式開發 介紹了在android開發環境下,採用 j a 編寫介面驅動程式。包括 led介面及驅動程式 背光調節控制程式 鍵盤介面及驅動程式 uart 序列口及通訊程式 wi fi 介面及通訊程式 3g介面及驅動程式 mediaplayer led燈由 gpio 介面的gpj3 0 和gpj...
樁程式和驅動程式
樁模組和驅動模組 以c語言為例 很多人對樁模組和驅動模組的概念會搞不清楚,那麼下面來介紹這兩個概念 模組結構例項圖 假設現在專案組把任務分給了7個人,每個人負責實現乙個模組。你負責的是b模組,你很優秀,第乙個完成了編碼工作,現在需要開展單元測試工作,先分析結構圖 1 由於b模組不是最頂層模組,所以它...
windows驅動程式開發初探
最近,由於需求推動,自己得開始學一下在windows下如何開發驅動程式。雖然,後來由於其他的原因使得學習沒繼續下去,但是我還是把一些粗略的學習經歷與體會寫在這裡,方便自己日後捲土重來,也方便其他的對windows開發一竅不通的有志之士參考一下。一 開發的目的 二 開發的歷程 1 學習的歷程 要開發出...