Android是Google基於Linux開發的智能手機作業系統,廣泛應用於3G手機、迷你筆記型電腦等。目前處於爆髮式增長階段,HTC(宏達電 多普達)、摩托羅拉、索愛、三星等眾多公司紛紛推出基於Android智能作業系統,甚至很多迷你筆記型電腦也使用Android作業系統。目前Android是最熱門的智能作業系統,憑藉Linux的軟體優勢其應用的廣泛程度已經讓其他對手相形見絀。所以學習Android作業系統具有巨大的意義。
這次平台使用omap3530-Devkit8000套件開發板來進行對android深入研究和學習。
◆ Android作業系統概述
1. Android系統架構
2. Android應用設計理念
3. Android 開源知識
4. Android 參考網站與權威資訊
◆ Android SDK及其開發環境搭建
1. Android SDK的版本發布
2. ADT外掛程式的安裝和更新
3. Android應用程式架構
4. 建立第一個Android項目(HelloAndroid!)
5. 通過Eclipse匯入一個開源項目
6. 可視化的介面開發工具
7. 部署應用程式到Android模擬器或手機
◆ Android 原始碼開發環境搭建與源碼結構分析
1. 開發系統主機環境搭建
2. 安裝軟體包Required Packages
3. Ubuntu 9.10
4. Install javva
5. 源碼結構分析Android source (kernel platform application)
6. Android build 分析
7. Android system 分析
8. Android framwork 分析
9. Android bring up
◆ Android 應用程式設計模型
1. drawable
2. layout
3. values(strings.xml、colors.xml、style.xml 、arrays.xml等)
4. R.java分析及使用
5. AndroidManifest.xml
6. Android.mk
7. Activity
8. Intent
9. Service
10. ContentProvider
◆ Android 應用程式介面(一)
1. TextView的使用
2. drawable的使用
3. 引用Drawable顏色常數及背景色
4. CharSequence資料類型與ResourceID應用
5. DisplayMetrics的使用
6. Style樣式的定義
7. Button事件處理
8. setContentView的應用
9. Intent對象的使用
10. Bundle對象的實現
11. startActivityForResult方法
12. AlertDialog視窗
13. Button與TextView的互動
14. Typeface對象使用
15. Gallery對象
16. 多按鈕應用
17. Menu功能菜單程式設計
18. ProgressDialog與線程應用
19. 動態產生按鈕並最大化
20. 選擇功能的對話方塊
21. Android主題(Theme)實現
22. 支援多種解析度的螢幕
◆ Android應用程式介面(二)
1. EditText與setOnKeyListener事件
2. ImageButton的焦點及事件處理
3. Toast對象的使用
4. CheckBox的isChecked屬性
5. 多選項CheckBox的應用
6. RadioGroup組與onCheckedChanged事件
7. ImageView的堆棧應用
8. Spinner與setDropDownViewResource
9. ArrayList與Widget的依賴性
10. Gallery與衍生BaseAdapter容器
11. JavaI/O的應用
12. ImageButton選擇特效
13. AutoCompleteTextView與數組
14. AnalogClock與DigitalClock的原理
15. DatePicker與TimePicker應用
16. ImageView點擊事件與透明度處理
17. ProgressBar與Handler的整合應用
18. GridView與ArrayAdapter設計
19. ListView的布局
20. ListActivity與Menu整合技巧
21. JavaI/O與ListActivity的結合
22. 使用decodeFile方法
23. 運用Matrix對象來縮放圖檔案
24. Bitmap與Matrix旋轉ImageView
25. RadioButtonID
26. 交談視窗上的ICON表徵圖
◆ Android 應用互動與手機模組控制
1. PendingIntent與AlarmManager
2. PendingIntent 與 SmsManager
3. Intent 與 Email
4. 資料存放區方式
5. NotificationManager與Notification
6. Adapter對象與Cursor
7. TelephonyManager的應用
8. RunningTaskInfo的應用
9. Provider.Contact的使用
10. Provider.Calendar的使用
11. Service與Runnable整合并用
12. BroadcastReceiver與Intent
13. receiver與intent-filter
14. Android網路編程
15. HTTP請求與串連
16. WebView.loadUrl
17. Webkit 與 WebCore
18. HttpURLConnection與URLConnection和運行線程
19. Runnable混搭SurfaceView
20. Google ApI
◆ Android 系統服務
1. Activity Manager
2. Windows Manager
3. Surface Manager(surface flinger)
4. Package Manager
5. Telephony Manager
6. Content Provider
7. Resource Manager
8. AssetManager
9. View System
10. Location Manager
11. Notification Manager
12. AlarmManager
13. BatteryManager
14. HardwareManage
15. 如何添加一個新系統Service並開放API
16. 關鍵服務
17. Android系統啟動流程
ARM平台 Android 移植與驅動核心開發
Android嵌入式智能作業系統是基於Linux核心和驅動的,對於 HTC、華為等公司開發Android作業系統時,需要專門將Android移植到特定硬體平台下,同時將必要的驅動進行編寫及開發。本課程旨在讓學員成為Android的核心層開發人員,讓學員在這種嵌入式裝置廠商中謀得核心開發人員的職位。
◆1. Android系統體系及移植相關工具
1.1 Android作業系統體繫結構介紹
Android Linux核心移植介紹
檔案系統, toolbox等移植
儲存驅動移植
Bootloader相應方案與移植
Android虛擬器Dalvik移植介紹
1.2 ARM處理器介紹
ARMv5TJS
ARM中斷處理
ARM體繫結構與ARM處理器的體繫結構
IP核、晶片與開發板
ARM處理器結構 處理器模式
. 寄存器
. 流水線結構
C語言內嵌彙編格式 與編程執行個體
1.3 ARM指令系統
. 算術邏輯指令
. 指令對狀態寄存器的影響
. 比較指令
. 分支指令
. 移位
. 指令位元影像
. 識別機器指令
1.4記憶體訪問與記憶體控制
. 資料匯流排與地址匯流排的使用與執行個體
. STR/LDR
1.5 ARM程序呼叫標準
. LDM/STM
. 反組譯碼
. APCS
. C語言函數與彙編的互相調用
【案例】 使用Android Linux patch進行Linux核心的構建
2. Android Linux核心移植與核心開發
2.1 ARM處理器的Android系統構建
2.2 輸入輸出裝置驅動移植
2.3 存放裝置nand flash,MMC/SD卡驅動移植
2.4 Framebuffer移植
2.5 Touchscreen移植
2.6 Open Binder IPC移植
【案例】
2.7 在ARM處理器上移植Android實驗
2.8 編寫Nand flash驅動
2.9 移植Framebuffer驅動
2.10 硬體相關部分(鍵盤、觸控螢幕、LCD等)
3. Android相關環境 庫、以及Bionic系統移植
3.1 libc移植
3.2 libm移植
3.3 libdl移植
3.4 libm移植
3.5 busybox, toolbox移植
【案例】
1. 移植glibc
2. 移植busybox和toolbox
4. Android Dalvik移植一
4.1 JNI Call Bridge相關原理
4.2 dx, dalvitvm原理和使用
4.3 Dalvik指令格式
4.4 Dalvik執行格式dex
4.5 Java位元組碼格式
5. Android Dalvik移植二
5.1 Dalvik Library原理
5.2 dalvit libcore核心庫移植
5.3 dalvit/vm/native移植
5.4 Dalvik Interpreter原理
5.5 Dalvik Mterp
6. ARM AT&T彙編
. AT&T彙編文法詳解
. gas工具的使用
. label標籤的作用
. 資料與代碼的分布
7. 連結指令碼ld-script
. 段地址的確定
. 編寫ld-script
. ELF格式與libc函數庫的關係
8. 時序電路基礎
. 電平訊號
. 電路圖分析
. 時序圖分析
. datasheet查看
. OMAP3530的外圍器件結構
. GPIO操作
9. AMBA匯流排標準
. AMBA匯流排標準
. FCLK/HCLK/PCKL頻率分配與設定
. Watchdog計時操作
. UART操作
. ARM中斷體系
. 異常向量表
. ARM模式切換
. ARM中斷控制器
. 非強制中斷
. Linux系統調用的實現
10. Nand Flash控制器
. Flash原理
. Nand控制器原理及時序分板
. OMAP3530 NAND Flash時序分析
11. 記憶體控制器
. OMAP3530物理地址分布
. SDRAM原理與時序
. 記憶體控制器的物理串連
. 地址對齊
. SRAM訪問
12. 記憶體管理單元
. MMU的原理
. ARM副處理器指令
. section模式
. small page模式
. I & D TLBs
. I & D Cache
. 哈佛結構的原理與實現
13. DMA 直接記憶體存取的機制與使用
. DMA的狀態機器
. DMA的控制
14. 觸控螢幕介面與ADC介面與執行個體
. ADC原理
. 觸控螢幕介面與控制
15. LCD控制器
. 圖形顯示原理
. LCD控制器
. LCD時序
LCD驅動相關的架構與體系
16. I2S音頻匯流排
. 音頻硬體原理
. I2S時序
. OMAP3530上I2S的操作
音訊裝置的裸驅動討論
17. DM9000網卡控制
. 邏輯鏈路層與MAC層
. DM9000原理與時序分析
後續網卡裸驅動討論與體繫結構
18. TCP/IP協議棧移植,與網路體繫結構
. LwIP TCP/IP協議棧簡介
. LwIP配置與編譯
. tftp配置與編譯
19. Bootloader原理與移植
. u-boot的配置、編譯
. u-boot啟動過程分析
. ARM-Linux的啟動要求
. ARM-Linux kernel的ld-sript分析
. u-boot到ARM-Linux的跳轉程式碼分析
. 使用mkimage製作啟動鏡像檔案
20. ARM-Linux原理與移植
. ARM-Linux的配置、編譯
. ARM-Linux啟動程式碼分析
. ARM-Linux 地址映射的關係;
. Busybox的配置、編譯