android底層學習思路

Android與Linux的關係
Linux Kernel的版權是GPL(General Public License),它要求對源代碼的任何修改都必須開源。
Android的Kernel採用的GPL,但Android採用ASL(Apache Software License),不必開源。
Google特意修改了Kernel,將某些功能轉移到上層HAL(Hardware Abstraction Layer)中。
因此,從2010年2月,即Linux2.6.33起,Android Kernel已經從Linux Kernel中刪除。

三種內核
1、Goldfish,它是由Google提供的一種虛擬的ARM處理器,在Android的仿真環境中使用。
2、MSM(Mobile Station Modem),它是由美國高通(Qualcomm)公司提供的ARM處理器芯片組。
3、OMAP(Open Multimedia Application Platform),它是由美國德州儀器(Texas Instruments,簡稱TI)公司提供。

三類驅動程序
1、字符設備
2、塊設備
3、網絡設備

兩種驅動類型
1、專用驅動,非Linux標準,純軟件
2、設備驅動

Android專用驅動
1、Staging,分期,分段,腳手架
Binder,進程間通信
Logger,日誌系統
LowMemoryKiller,低內存處理
Timed Output,定時輸出
Timed GPIO,定時GPIO
Ram Console,內存控制檯
2、WakeLock和early_suspend,休眠,喚醒
3、Ashmem(Alocate SHare MEMory),內存映射與共享
4、Pmem(Physical MEMory),物理內存共享,不一定連續
5、Alarm,硬件時鐘
6、USB Gadget,USB設備驅動
7、Paranoid,網絡驅動

Android設備驅動
FrameBuffer,屏幕顯示
Keyboard,鍵盤
RTC(Real Time Clock),實時時鐘
TTY(TeleTYpe),終端,串口
NandFlash,硬盤,FLASH存儲器
MMC(MultiMedia Card),存儲卡
Battery,電池

顯示系統(LCD,VGA)
FrameBuffer
SurfaceFlinger
Gralloc

輸入系統(鍵盤,觸摸屏,軌跡球)
事件:MotionEvent,KeyEvent
配置文件:kl=KeyLayout,kcm=KeyCharacterMap

音頻系統
AudioFlinger
ALSA(Advanced Linux Sound Architecture),MIDI

視頻輸出系統
主顯示區,RGB;額外顯示區,YUV
Overlay(FrameBuffer,V4L2=Video for Linux 2)

多媒體框架
OpenMAX,底層驅動
OpenCORE,複雜,穩定
StageFright,簡單,後入

照相機系統
V4L2=Video for Linux 2
Camera HAL

電話系統(通話Call,短信SMS,數據連接,SIM卡,電話本)
MODEM調製(Modulator)解調器(Demodulator)
RIL(Radio Interface Layer),AT命令

其他
WIFI,Bluetooth藍牙,GPS(Global Positioning System)
Alarm報警器,Light光,Battery電池
Vibrator振動器
Sensor傳感器

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章