<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ?本文用《Android深度探索(卷1):HAL與驅動開發》的隨書源代碼為例詳細說明如何配置Android驅動開發和測試環境,并且如何使用源代碼中的build.sh腳本文件在各種平臺(Ubuntu Linux、Android模擬器和S3C6410開發板)上編譯、安裝和測試Linux驅動。建議讀者使用Ubuntu Linux12.04或更高版本實驗本文的方法。最好用root賬號登錄Linux。 **一、安裝交叉編譯器** ??? 如果只是在Ubuntu Linux上測試Linux驅動就不需要安裝交叉編譯器了,但要在Android模擬器或S3C6410開發板上進行測試,就必須安裝交叉編譯器。 首先下載交叉編譯器(分卷壓縮) [分卷1](http://vdisk.weibo.com/s/rH2PH) [分卷2](http://vdisk.weibo.com/s/rHcNo) [分卷3](http://vdisk.weibo.com/s/rHfpy) 下載后解壓,會發現有兩個tgz文件,可以將這兩個文件放到/root/compilers目錄中,在Linux終端進入該目錄,執行如下命令安裝交叉編譯器。 ~~~ # 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內核** ???? 這里的Linux內核有兩個,一個是goldfish,也就是Android模擬器使用的Linux內核、另外一個是S3C6410開發板使用的Linux內核(Linux2.6.36)。讀者首先要下載這兩個Linux內核。 Android模擬器用的Linux內核源代碼(分卷壓縮) [goldfish(卷1)](http://vdisk.weibo.com/s/rGgna) [goldfish(卷2)](http://vdisk.weibo.com/s/rGtsz) [goldfish(卷3)](http://vdisk.weibo.com/s/rGEK3) [goldfish(卷4)](http://vdisk.weibo.com/s/rGFbP) 用于S3C6410開發板的Linux內核源代碼(分卷壓縮) [分卷1](http://vdisk.weibo.com/s/rGP7W) [分卷2](http://vdisk.weibo.com/s/rGUCi) ???? 由于隨書代碼中的word_count驅動已經在goldfish和linux2.6.36中分別建立了符號鏈接,以便在編譯linux內核時同時也會編譯word_count驅動,所以linux內核與源代碼目錄應與作者機器上的目錄相同。也就是兩個linux內核目錄與源代碼目錄如下: linux內核目錄 /root/kernel/goldfish /root/kernel/linux_kernel_2.6.36 [源代碼](http://vdisk.weibo.com/s/rCmcW/1361708452)目錄 /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所示。 ![](https://box.kancloud.cn/2016-01-18_569cb8ab1aa95.png) 圖1 ?????? 可以直接使用adb shell命令進入開發板,也可以使用/root/drivers/shell.sh腳本完成同樣的工作,只是后者如果有多個android設備,會允許用選擇,而不是輸入相應的設備ID。使操作更方便。在/root/drivers目錄中提供了很多這樣的腳本(shell.sh、push.sh、pull.sh等),這些腳本都會允許用戶選擇操作的Android設備。 我們通常使用Android SDK中的adb命令,到官方網站下載裝載linux版本的Android SDK,然后將根目錄> /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源代碼,如果商家沒給光盤,別忘了要哦!
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看