1 / 39

嵌入式系統 6410 平台開發環境 & 工具介紹與操作實習 - Android porting

嵌入式系統 6410 平台開發環境 & 工具介紹與操作實習 - Android porting. 華亨科技 江敏傑. Android-2.1 系統的燒寫 Android 模組使用 Linux 核心配置編譯 Android 開發環境建立 Android 的編譯. Android-2.1 系統的燒寫. 一個完整的 Android 系統至少由三部分組成,分別是 bootloader 、 kernel 、 rootfs ,這與典型的 linux 系統的結構是一致的 下面介紹如何燒寫一個完整的 Android 作業系統. 燒寫 bootloader .

liam
Download Presentation

嵌入式系統 6410 平台開發環境 & 工具介紹與操作實習 - Android porting

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 嵌入式系統6410平台開發環境&工具介紹與操作實習-Android porting 華亨科技 江敏傑

  2. Android-2.1系統的燒寫 • Android 模組使用 • Linux核心配置編譯 • Android開發環境建立 • Android的編譯

  3. Android-2.1系統的燒寫 • 一個完整的Android系統至少由三部分組成,分別是bootloader、kernel、rootfs,這與典型的linux系統的結構是一致的 • 下面介紹如何燒寫一個完整的Android作業系統

  4. 燒寫bootloader • SD啟動的uboot燒寫,選擇\tool\u-boot_mmc.bin • 把 SD 取出並插入到板子的SD 插槽中,透過設定板子的撥碼開關使板子啟動方式為,00000000(開關撥向on為1)

  5. 進行dnw工具相關設定 • 選擇\tool\dnw • 接下來設定所使用的串列埠

  6. 第二步是連接這個串列埠設備 • Dnw工具可用後便可開啟開發板電源,如果沒有意外,dnw中將列印出uboot的啟動資訊:

  7. NandFlash啟動的uboot燒寫 • 第一步,透過USB將uboot下載到記憶體中 • 輸入USB下載命令dnw:

  8. USB驅動程式 • 如果你是第一次使用,會提示安裝板子的USB驅動程式,驅動已經安裝則可以跳過這幾步,以後就不需要安裝了 • 找到光碟中USB驅動中提供的USB驅動: 點選瀏覽,指到tool/USB driver

  9. 到此,驅動安裝成功,這時候使用配線usb線連接開發板的USB(OTG)到PC主機,並點選USB Port->Transmit->Transmit,準備下載uboot:

  10. 選擇光碟中android\2.1\android-image\u-boot.bin 注意,這個才是nand啟動的uboot,不要選擇SD啟動的u-boot_mmc.bin

  11. 第二步是將已經下載到記憶體中的uboot燒錄到nandflash第二步是將已經下載到記憶體中的uboot燒錄到nandflash • Uboot要燒寫到nand中0開始的256KB中,在燒寫之前需要先把這塊區域清除: • nand erase 0 40000

  12. 接著將0xc0008000中的uboot燒寫到nand中0開始的256K:接著將0xc0008000中的uboot燒寫到nand中0開始的256K: • nand write c0008000 0 40000

  13. 到這裡已經把uboot燒錄到nand中,重新設定板子的指撥開關6和7至on的位置,使啟動方式修改為nand啟動到這裡已經把uboot燒錄到nand中,重新設定板子的指撥開關6和7至on的位置,使啟動方式修改為nand啟動 • 設定完後重新啟動板子,如果沒有意外,將輸出以下資訊:

  14. 燒寫kernel • 第一步 透過USB將核心檔下載到板子記憶體中: • dnw 開啟光碟中android\android-image目錄下的zImage(請依LCD大小選擇),將核心下載到板子:

  15. 第二步 清除nandflash中存放核心的那部分空間: nand erase 40000 300000 • 第三步 將記憶體中的核心燒錄到Nandflash nand write c0008000 40000 300000 • 第四步 測試核心是否能啟動(以下步驟可省略) nand read c0008000 40000 300000 接著跳啟動記憶體中的核心: bootm c0008000 (第四步驟測試完,請reset,並在uboot停住)

  16. 燒寫cramfs • 真正用到的檔案系統都是使用ubifs格式的根檔案系統,cramfs檔案系統只是為了燒寫而製作的輔助檔案系統 • 第一步 使用USB將cramfs下載到板子記憶體中: • dnw

  17. 第二步 刪除nand中的cramfs分區: • nand erase 400000 400000

  18. 第三步 把記憶體中的根檔案系統燒寫到Nandflash中的cramfs分區: nand write c0008000 400000 400000 • 第四步 測試cramfs是否燒寫成功: setenv bootargs noinitrd root=/dev/mtdblock0 console=ttySAC0 init=/linuxrc • 再輸入 saveenv(儲存參數)

  19. 如果核心已經按照上一步來燒寫,那麼重新啟動板子後就應該能夠核心啟動成功,並且成功掛載到cramfs:

  20. 燒寫ubifs之前先要對這個分區進行格式化為ubifs所以如果現在就想開始燒寫ubifs,那麼這裡輸入a就開始對ubifs分區進行格式化了:燒寫ubifs之前先要對這個分區進行格式化為ubifs所以如果現在就想開始燒寫ubifs,那麼這裡輸入a就開始對ubifs分區進行格式化了: • 請注意!請將\android\2.1\android-image裡的android.tar.gz複製到SD卡內

  21. 這裡選擇燒寫Android的檔案系統,選擇a,再按Enter,結果如下:這裡選擇燒寫Android的檔案系統,選擇a,再按Enter,結果如下: • 這邊請輸入y,並按Enter • 這邊板子重新啟動後,請在uboot上停住

  22. 到這裡ubifs燒寫完成,接下來測試一下這個檔案系統是否可用到這裡ubifs燒寫完成,接下來測試一下這個檔案系統是否可用 • 首先重定系統重新進入uboot (要三秒內ENTER)的命令行介面,修改一下核心的啟動參數 • setenv bootargs noinitrd console=ttySAC0 init=/init ubi.mtd=1 root=ubi0:rootfs rootfstype=ubifs • 使用saveenv命令儲存

  23. Android-2.1下WIFI的使用 • 選擇Settings->Wireless & network-> • Wi-Fi打勾 • Wi-Fi Setting

  24. Android-2.1下Camera的使用 • 點擊Camera,記住~~鏡頭朝LCD方向 • 如果没有意外Camera 應該已經可以預覽 了,點擊Camera 界面的圓點按鈕便能拍下 • 照片,不過照片是保存在SD 中的,所以必須在拍照之前將SD 插到板子中

  25. Android-2.1下GPS模組的使用 • 運行程序選單中的GPS Status 程序 GPS Status 在運行之後可能會彈出瀏覽器的界面連接到這個程序的開發網站,按下home按鍵取消瀏覽器的連接即可,這時候應該會顯示下面的界面:

  26. Android開發環境建立 • 下面簡單介紹一下Ubuntu-9.10下Android開發環境的建立,對於這部分內容建議到網上查找資料,這裡的說明未必是全面 • Android開發時比較有用的幾個網站包括: • Android Source官方首頁:http://source.android.com/ • Android Developer官方首頁http://developer.android.com/index.html

  27. 基本環境的建立 • 在Ubuntu-9.10下,需要使用到相當多的套裝軟體,可以使用下面的命令進行安裝: • sudo apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev

  28. java環境建立 • Android的編譯需要使用到jdk-1.5(jdk5),這裡分別介紹線上安裝和離線安裝兩種方式。 • 1.線上安裝jdk5 • 2.離線安裝jdk5

  29. 離線安裝jdk5 • sudo chmod 777 jdk-1_5_0_17-linux-i586.bin • ./ jdk-1_5_0_17-linux-i586.bin • 便能在當前目錄下得到jdk1.5.0_17目錄。 • 安裝結束後還要設定好環境變數讓Android找到這個路徑,編輯/etc/bash.bashrc,增加下面的語句: • export JAVA_HOME=/home/figo/jdk1.5.0_17 • export ANDROID_JAVA_HOME=$JAVA_HOME • export PATH= $JAVA_HOME/bin:$PATH

  30. Android的編譯非常簡單,在終端機中進入Android-2.1目錄下執行make即可完成代碼的編譯,不過為了同時編譯出配套的Android SDK,可以使用make sdk進行編譯: Android原始碼的編譯

  31. 漫長的編譯過程後編譯結果放在了Android-2.1/out下。其中out/host是主機上執行的一些程式,比如說編譯出來的sdk就在Android-2.1/out/host/linux-x86/sdk下。這些程式需要用來幫助除錯,因此使用下面的命令設定環境變數:漫長的編譯過程後編譯結果放在了Android-2.1/out下。其中out/host是主機上執行的一些程式,比如說編譯出來的sdk就在Android-2.1/out/host/linux-x86/sdk下。這些程式需要用來幫助除錯,因此使用下面的命令設定環境變數:

  32. sudo gedit /etc/bash.bashrc • 在bash.bashrc中增加以下內容: • export ANDROID_SDK_ROOT=/home/figo/ARM11/android/Android-2.1/out/host/linux-x86/sdk/android-sdk_eng.figo_linux-x86 • export PATH=$PATH:$ ANDROID_SDK_ROOT /tools • 儲存後執行source /etc/bash.bashrc讓設定生效,重新開一個終端機便能使用android、emulator等命令了。

  33. 在模擬器中執行編譯出來的Android鏡像 • 創建AVD • AVD是Android virtual device的縮寫,就是一個執行Android系統的虛擬機器,如果已經按照上一節來配置環境變數,那麼在命令行中執行android命令便能彈出一個GUI介面的AVD創建程式(Android SDK and AVD Manager):

  34. 在這個介面中點選New新建一個avd:

  35. 之後儲存退出就產生了一個名為figo3的avd。這裡還可以指定一個虛擬的SD卡,使用mksdcard命令生成一個SD卡鏡像:之後儲存退出就產生了一個名為figo3的avd。這裡還可以指定一個虛擬的SD卡,使用mksdcard命令生成一個SD卡鏡像: • mksdcard 10M sdcard.img • 這樣便在當前目錄下產生一個SD鏡像檔,在Android SDK and AVD Manager中可以找到這個檔案作為avd的虛擬SD card,使用者還可以使用loop方式將這個sdcard.img掛載到主機目錄下,這樣便能將主機下的一些檔案透過sdcard傳遞到虛擬機中

  36. 在終端機中執行下面命令: emulator -avd figo3 -system out/target/product/generic/system.img -ramdisk out/target/product/generic/ramdisk.img -show-kernel 其中out/target/product/generic/system.img、out/target/product/generic/ramdisk.img為編譯Android原始碼生成的鏡像檔,根據自己的路徑情況來輸入。彈出的畫面如下: 執行emulator

More Related