Click here to load reader

ANDROID 底层开发专题 1 Android 移植

Embed Size (px)

DESCRIPTION

ANDROID 底层开发专题 1 Android 移植. 刘健培 北京邮电大学 [email protected] 2013.05. 本次内容. Android 底层开发 专题 之 Android 移植 Android 移植概念 Android 移植流程 Android 移植示例. 参考资料. 源代码 Linux 源代码 Android 源代码 图书 Linux 设备驱动程序 Android 系统源代码情景分析 网站 Android on TI OMAP http://elinux.org/Android_on_OMAP - PowerPoint PPT Presentation

Citation preview

ANDROID

ljp020993@gmail.com2013.05ANDROID1AndroidAndroidAndroidAndroidAndroidAndroidLinuxAndroidLinuxAndroidAndroid on TI OMAPhttp://elinux.org/Android_on_OMAPAndroid on X86http://www.android-x86.org/beagleboard http://beagleboard.org/ Rowboathttp://code.google.com/p/rowboat/http://hala01.com/

AndroidAndroidLinux/bootloaderLinuxHALNDKJ2ME->Android

AndroidAndroidArchISAAndroid-x86http://www.android-x86.org/Android-mips http://developer.mips.com/android/SocSOCAndroid on OMAPhttp://elinux.org/Android_on_OMAPAndroid for MSMhttps://www.codeaurora.org/projects/all-active-projects/android-msmAndroid on NVIDIAs Tegrahttps://developer.nvidia.com/tegra-android-development-packBoardSOCRowboathttp://code.google.com/p/rowboat/BeagleBoardhttp://beagleboard.org/Device()CyanogenModhttp://www.cyanogenmod.org/MIUIhttp://www.miui.com/AndroidBootloaderLinuxAndroid//Android/AndroidRAMROMbootloaderlinuxAndroidTIMSMNVIDIAAndroidAndroidLinuxLinuxAndroidbuilding environmentLinuxlinuxUbuntu LinuxEclipseviGDBDDDcscopestracereadelf/objdump/objcopy/nmTFTPBOOTP/DHCPNFS

AndroidDIYLinuxLinuxlinuxlinuxlinuxLinuxGNU makeapt-get/wget/rpm tar./configuremakemake installMakeMakefileEmbedded Linux System

Embedded Linux System

Bootloader BootloaderBootloaderDRAMDRAMDRAMFlashRAMBootloaderFlashRAMldCRAMCDRAMBootloaderLinuxbootloaderU-BootLiloGRUBBootloaderUARTUSBlinux kernel

BootloaderU-Boot U-BootI/OU-BootSOCmakefileJtagGDBLinux kernelLinux kernel Linux kernelVFS Linux kernelLinux kernel

Linux kernel

Linux kernelPure Embedded Linux KernelAndroid Runtime SystemLinux KernelAndroidandroid kernel patcheslinux device driverAndroid libraryAndroid FrameworkAndroid applicationAndroidLinuxRecent (~2.6.23) Linux kernel with Thumb & MMU & EABI etc supportAndroidLinux Kernel3AndroidGoldfishG1Pure Linux KernelAndroidKernelAndroidLinux KernelAndroidlinux device driverAndroid libraryAndroid FrameworkAndroid applicationside effectsAndroid2Linux kernelAndroid HAL

linuxLinux devfssysfsudevopenreadwritecloselinux

AndroidAndroidAshmem/dev/ashmem, malloc: kernelmm/ashmeme.cC libutilssystem/core/libcutils/ashmeme-*.c Loggerlog/dev/log/main, /dev/log/event, /dev/log/radio kernel/drivers/misc/logger.clogcatsystem/core/logcatLogger BinderOpenbinderAndroidIPCAndroidBinder/dev/binder, IPC,AndroidIPClibutils(framework/base/libs/utils)Service ManagerBinder Android Power ManagementPMLow Memrry KillerAndroid PMEM AndroidAndroidFramebufferFramebufferLCDFB/dev/fbXAndroid/dev/graphic/fb0,initlibuiFBioctlmmapwriteioctl/mmapFramebufferwriteEventEventEvent/dev/input/eventX,initlibuiread,ioctl,pollEventAndroidV4L2 Camera & VideoV4L2AndroidV4L2CameraOverlayioctl, mmapV4L2OSSOpen Sound System ioctl/read/write/dev/mixer, /dev/dsp, /dev/xxxAndroidOSSOSSAndroid AudioALSAOSSOSSioctlALSAALSAALSAAndroidALSAAndroid>Audio>ALSA>ALSAAndroidMTDMemory Technology Device,LinuxFlash(/dev/mtdX)(/dev/block/mtdblockXMTD + HCISCOL2CAPBNEPSDIO/UART/USBWlansocketWifiAndroidmoduleAndroidFramebuffer

datasheetGPIO Android

AndroidAndroidAndroidLinux4Service ManagerNativeZygoteJava VMSystem ServerAndroid HOME

AndroidJava applicationJava frameworkJniLib.so

AndroidSurface

AndroidJNI JNIJava Native InterfaceJAVA Java JNIJava

Android Makefile &Build SystemMakefilemake AndroidMakefilebuild/core/mkbuild systemAndroid build systemFrameworkCPU ARM/PPC/X86 C/C++/Java static lib/share lib/execute/Java/Java library

Android Makefile &Build SystemMakefile productproduct product toolchain(*-.mk)/BoardConfig.mk module ruleimageAndroid build system

Build systemAndroid product config (user package)target TARGET_ARCH, TARGET_OS, TARGET_BUILD_TYPE, TARGET_PREBUILT_TAGhost HOST_OS, HOST_ARCH, HOST_BUILD_TYPE, HOST_PREBUILT_TAGtargetlinux-arm-cccflagincludehost

Build system host targetCC++JavaPythonshellstatic library, dynamic libraryjava libraryjava app

mkAndroid .mkmodulepackagemodule/packageAndroid .mkAndroidProducts.mkproduct product product applicationtarget_-.mk, host_-.mk and -.mkCPU BoardConfig.mkproduct driver buildspec.mksource product module/package main.mkbuild/core/ Build system

/J2MEC/C++ /J2MEAndroidAndroidSun Java ME AndroidMediaPlayermp3midwavmp4J2ME / AndroidSQLiteSun J2MERecord Management System (RMS) Androidimport SunI/OInputStreamSunURLConnection /C/C++Android NDKandroid NDKC/C++configureNDKrestrictSTLandroid.mkNDK-buildNDKc.soadb push android/system/libInitinit.rc

DmesgAndroidprintkLogcat

AndroidCTSSDFLASH