- Android系統(tǒng)級(jí)深入開發(fā)
- 韓超 梁泉
- 666字
- 2018-12-29 13:39:36
5.1.2 MSM適用于Android的 Linux內(nèi)核的結(jié)構(gòu)
使用MSM處理器平臺(tái)的Linux內(nèi)核和標(biāo)準(zhǔn)的Linux內(nèi)核的差別有以下幾個(gè)方面:
MSM及其板級(jí)平臺(tái)機(jī)器的移植
MSM及其板級(jí)平臺(tái)一些虛擬設(shè)備的驅(qū)動(dòng)程序
Android中特有的驅(qū)動(dòng)程序和組件
MSM及其板級(jí)平臺(tái)機(jī)器的移植和MSM及其板級(jí)平臺(tái)一些虛擬設(shè)備的驅(qū)動(dòng)程序是硬件平臺(tái)相關(guān)的內(nèi)容。Android中特有的驅(qū)動(dòng)程序和組件是Android中特有的部分,這種內(nèi)容在Android平臺(tái)的Linux內(nèi)核中,是基本相同的。
在Android開源工程的網(wǎng)站上,使用git工具得到msm內(nèi)核的方式如下所示:
$ git clone git://android.git.kernel.org/kernel/msm.git
通常情況下,MSM內(nèi)核git的代碼倉(cāng)庫(kù)中有origin/android-msm-2.6.29和origin/android-msm-2.6.29-nexusone兩個(gè)分支可以選擇。
選擇msm通用的2.6.29版本,并且進(jìn)行編譯的方式如下所示:
$ git checkout -b android-msm-2.6.29 origin/android-msm-2.6.29 $ make ARCH=arm msm_defconfig .config $ make ARCH=arm CROSS_COMPILE={path}/arm-none-linux-gnueabi-
選擇Nexus One中使用的MSM內(nèi)核版本,并且進(jìn)行編譯的方式如下所示:
$ git checkout -b android-msm-2.6.29-nexusone origin/android-msm-2.6.29-nexusone $ make ARCH=arm mahimahi_defconfig .config $ make ARCH=arm CROSS_COMPILE={path}/arm-none-linux-gnueabi-
使用MSM平臺(tái)的Linux內(nèi)核主要有兩個(gè)版本,一個(gè)針對(duì)MSM7kxx系列的處理器,另一個(gè)針對(duì)QSD8kxx系列的處理器(snapdragon),它們使用了不同的Linux代碼和配置文件。對(duì)于前者其config文件的路徑為arch/arm/configs目錄中的msm_defconfig。對(duì)于后者,參考的硬件平臺(tái)即Nexus One,其config文件的路徑為arch/arm/configs目錄中的mahimahi_defconfig。
以Nexus One手機(jī)使用的MSM處理器的Linux內(nèi)核版本為例,其config文件為mahimahi_defconfig。
體系結(jié)構(gòu)方面的片斷如下所示:
CONFIG_ARM=y CONFIG_ARM=y CONFIG_SYS_SUPPORTS_APM_EMULATION=y CONFIG_GENERIC_GPIO=y CONFIG_GENERIC_TIME=y CONFIG_GENERIC_CLOCKEVENTS=y CONFIG_MMU=y # # System Type # CONFIG_ARCH_MSM=y CONFIG_ARCH_QSD8K50=y CONFIG_ARCH_MSM_SCORPION=y CONFIG_MSM_MDP31=y
其中在系統(tǒng)類型方面,選擇了CONFIG_ARCH_MSM表示MSM系列,選擇CONFIG_ARCH_QSD8K50表示QSD8K50(QSD8250 或者QSD8650)處理器, CONFIG_ARCH_MSM_SCORPION表示處理器所使用的Scorpion內(nèi)核。
config文件后面配置的方面是MSM處理器使用的特性和板級(jí)類型,內(nèi)容如下所示:
# # MSM Board Type # CONFIG_MACH_SWORDFISH=y CONFIG_MACH_MAHIMAHI=y # ......
SWORDFISH和MAHIMAHI都是基于MSM處理器開發(fā)板的名稱。
MSM處理器CPU部分的配置如下所示:
# # Processor Type # CONFIG_CPU_32=y CONFIG_CPU_32v6K=y CONFIG_CPU_V7=y CONFIG_CPU_32v7=y CONFIG_CPU_ABRT_EV7=y CONFIG_CPU_PABRT_IFAR=y CONFIG_CPU_CACHE_V7=y CONFIG_CPU_CACHE_VIPT=y CONFIG_CPU_COPY_V6=y CONFIG_CPU_TLB_V7=y CONFIG_VERIFY_PERMISSION_FAULT=y CONFIG_CPU_HAS_ASID=y CONFIG_CPU_CP15=y CONFIG_CPU_CP15_MMU=y
在這里選擇了CONFIG_CPU_V7表示使用ARMv7的體系結(jié)構(gòu)。其他的相關(guān)配置也是包含了ARMv7所具有的功能。
- Getting started with Google Guava
- ASP.NET Core 5.0開發(fā)入門與實(shí)戰(zhàn)
- Go語言高效編程:原理、可觀測(cè)性與優(yōu)化
- Getting Started with CreateJS
- DevOps入門與實(shí)踐
- UI智能化與前端智能化:工程技術(shù)、實(shí)現(xiàn)方法與編程思想
- Big Data Analytics
- Swift語言實(shí)戰(zhàn)精講
- C++從入門到精通(第5版)
- Python 3.7從入門到精通(視頻教學(xué)版)
- BeagleBone Robotic Projects(Second Edition)
- Advanced Python Programming
- Building a Media Center with Raspberry Pi
- Learning Alfresco Web Scripts
- Java Web應(yīng)用開發(fā)