arm11 / s3c6410 / android

8
ARM ARM11 / S3C6410 / Android A n d

Upload: tranhanh

Post on 02-Feb-2017

235 views

Category:

Documents


1 download

TRANSCRIPT

ARM

ARM11 / S3C6410 / Android

And

1-1

第 0 章 前言 ...................................................... 0-1

第一篇 構建嵌入式 Linux 系統開發環境篇

第 1 章 DMA-6410XP Android 開發環境的建 .... 1-1

1-1 硬體環境構建 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-1 1-1.1 硬體要求 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1- 1-1.2 主機與開發平台結合的交叉開發模式 . . . . . . . . . . . . . . . . . . . . . 1-

1-2 軟體環境構建 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1- 1-2.1 Ubuntu9.04 的安裝過程簡介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-

1-2.1.1 Ubuntu 簡介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1- 1-2.1.2 Ubuntu 安裝過程簡介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-

1-2.2 交叉編譯環境的建立 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1- 1-2.2.1 交叉開發的概念 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1- 1-2.2.2 交叉開發環境的基本結構 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1- 1-2.2.3 交叉工具的介紹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1- 1-2.2.4 建立交叉編譯環境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-

1-3 SAMBA、TFTP、NFS 開發環境的建立 . . . . . . . . . . . . . . . . . . 1- 1-4 Android 開發環境的建立 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1- 1-5 環境構建中應注意的問題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-

第 2 章 嵌入式 Linux 程式設計 ......................... 2-1

2-1 交叉編譯專案選項說明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-1 2-1.1 arm-linux-gcc 選項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-

1-2

2-1.2 arm-linux-ld 選項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2- 2-1.3 程式碼、機器碼和記憶體的關係以及資料表示 . . . . . . . 2-

2-2 Makefi le 檔案介紹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2- 2-2.1 Makefile 規則 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2- 2-2.2 Makefile 變數使用方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2- 2-2.3 Makefile 常用函數 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-

第二篇 嵌入式 Linux 系統移植篇

第 3 章 U-BOOT 的移植 .................................... 3-1

3-1 U-BOOT 的介紹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-1 3-1.1 U-BOOT 工程簡介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-1 3-1.2 U-BOOT 原始程式結構 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-

3-2 U-BOOT 的分析和移植 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3- 3-2.1 U-BOOT 系統結構 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3- 3-2.2 U-BOOT 啟動過程的幾個重要檔案分析 . . . . . . . . . . . . . . . . . . 3- 3-2.3 U-BOOT 的移植過程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-

3-3 添加 U-BOOT 命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3- 3-3.1 添加 U-BOOT 命令函數介紹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3- 3-3.2 添加 U-BOOT 擴充命令 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-

3-4 U-BOOT 常用命令介紹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3- 3-5 U-BOOT 的環境變數 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3- 3-6 常見問題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-

第 4 章 Linux 2.6.27 核心移植 ........................... 4-1

4-1 Linux 核心移植簡介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-1 4-1.1 l inux 核心介紹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-1

1-3

4-1.2 移植的基本概念 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4- 4-1.3 Linux 移植前的準備 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-

4-2 Linux 核心移植 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4- 4-2.1 Linux 核心啟動過程簡介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4- 4-2.2 Linux 核心配置及移植過程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4- 4-2.3 Linux 核心測試 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-

第三篇 嵌入式 Linux 系統驅動開發篇

第 5 章 Linux 2.6.27 驅動程式基礎 .................... 5-1

5-1 裝置驅動程式概論 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-1 5-1.1 驅動程式的概念 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5- 5-1.2 驅動程式的模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5- 5-1.3 Linux 驅動的類別 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5- 5-1.2.1 字元驅動程式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5- 5-1.2.2 區塊驅動程式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5- 5-1.2.3 網路驅動程式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-

5-2 模組的編譯與裝載 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5- 5-2.1 核心模組和應用程式的區別 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5- 5-2.2 動態載入驅動程式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-

5-2.2.1 載入模組程式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5- 5-2.2.2 模組程式的測式與除錯 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-

5-3 核心程式關鍵技術 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5- 5-2.1 同步機制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5- 5-2.2 記憶體分配和映射 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5- 5-2.3 阻塞與非阻塞 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5- 5-2.4 中斷處理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-

5-4 DMA-6410XP 開發平台驅動程式的實驗 . . . . . . . . . . . . . . . . . 5-

1-4

5-5 本章小節 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-

第 6 章 Linux 驅動分析和調試 .......................... 6-1 6-1 LED 實驗 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-1 6-2 矩陣鍵盤實驗 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6- 6-3 背光調節實驗 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6- 6-4 直流馬達實驗 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6- 6-5 步進馬達實驗 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6- 6-6 串列埠通訊實驗 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6- 6-7 GPRS/GSM 實驗 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6- 6-8 音量調節實驗 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6- 6-9 Camera 實驗 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6- 6-10 ADC 實驗 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6- 6-11 CAN 匯流排介面實驗 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6- 6-12 Framebuffer 分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6- 6-13 常見問題 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-

第四篇 嵌入式 ANDROID 系統應用開發篇

第 7 章 ANDROID 圖形介面開發 ....................... 7-1

7-1 嵌入式圖形使用者介面 (GUI)概述 . . . . . . . . . . . . . . . . . . . . . . . . 7-1 7-1.1 Android 的發展史 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7- 7.1.2 Android 系統架構 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-

7-2 建立圖形介面系統 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7- 7-3 Android 程式設計入門 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7- 7-4 模擬器概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-

7-4.1 模擬器和實機的區別 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-

1-5

7-4.2 模擬器使用注意事項 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-

第 8 章 Android 基本組件介紹 ........................ 8-1

8-1 介面 UI 元素介紹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-1 8-1.1 視圖組件(View) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8- 8-1.2 視圖容器組件( cViewgroup) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8- 8-1.3 佈局組件( cLayout) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8- 8-1.4 佈局參數( LayoutParams) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-

8-2 Android 中應用介面佈局 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8- 8-2.1 實例操作演示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8- 8-2.2 實例程式設計實現 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-

8-3 常用 Widget 組件介紹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8- 8-3.1 建立 Widget 元件實例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8- 8-3.2 按鈕 (Button)介紹與應用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8- 8-3.4 文字方塊( TextView)介紹與應用 . . . . . . . . . . . . . . . . . . . . . . 8- 8-3.5 編輯方塊( EditText)介紹與應用 . . . . . . . . . . . . . . . . . . . . . . . 8- 8-3.6 多項選擇 (CheckBox)介紹與應用 . . . . . . . . . . . . . . . . . . . . . . . . . . 8- 8-3.7 單項選擇(RadioButton)介紹與應用 . . . . . . . . . . . . . . . . . . 8- 8-3.8 下拉清單( Spinner)介紹與應用 . . . . . . . . . . . . . . . . . . . . . . . . . 8- 8-3.9 自動完成文本(AutoCompleteTextView) . . . . . . . . . . . . 8- 8-3.10 日期選擇器(DatePicker)介紹與應用 . . . . . . . . . . . . . . . . . 8- 8-3.11 時間選擇器( TimePicker)介紹與應用 . . . . . . . . . . . . . . . . 8- 8-3.12 滾動視圖( ScrollView)介紹與應用 . . . . . . . . . . . . . . . . . . . . 8- 8-3.13 進度條( ProgressBar)介紹與應用 . . . . . . . . . . . . . . . . . . . . . . 8- 8-3.14 拖動條( SeekBar)介紹與應用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8- 8-3.15 評分組件(RatingBar)介紹與應用 . . . . . . . . . . . . . . . . . . . . . 8- 8-3.16 圖片視圖( ImageView)介紹與應用 . . . . . . . . . . . . . . . . . . . . 8- 8-3.17 圖片按鈕( ImageButton)介紹與應用 . . . . . . . . . . . . . . . . . . 8-

1-6

8-3.18 切換圖片( ImageSwitcher&Gallery) . . . . . . . . . . . . . . . . . . . 8- 8-3.19 網格視圖(GridView)介紹與應用 . . . . . . . . . . . . . . . . . . . . . . 8- 8-3.20 標籤( Tab)介紹與應用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-

8-4 Menu 介紹與實例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8- 8-4.1 實例操作演示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8- 8-4.2 實例程式設計實現 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-

8-5 清單( ListView)介紹與實例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8- 8-5.1 實例展示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8- 8-5.2 程式設計技巧 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-

8-6 對話方塊(CDialog)介紹與實例 . . . . . . . . . . . . . . . . . . . . . . . . 8- 8-7 歡迎訊息( Toast)和通知(Notification)應用 . . . . . . 8- 8-8 Google Map 的使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-

第 9 章 DMA-6410XP 在 Android 應用程式設計實例9-1 9-1 功能表(MENU)實作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-1 9-2 LED 控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9- 9-3 KEYPAD 控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9- 9-4 CAMERA 控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9- 9-5 WIFI and DM9000 實作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9- 9-6 AUDIO 控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9- 9-7 RTC 控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9- 9-8 串列埠通訊(UART) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9- 9-9 USB Camera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9- 9-10 GPS 定位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9- 9-11 3D 展示 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9- 9-12 GPRS 控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9-

1-7

附錄一 常用 Linux 命令的使用 ...............................

附錄二 GCC 與 GDB ...............................................

附錄三 開放源始碼及自由軟體常用的授權簡介 .......

附錄四 教學平台介紹 ..............................................

附錄五 OpenMoko FreeRunner Android 系統的

Porting.......................................................