文档详情

Android固件移植和开发.pptx

发布:2016-12-05约3.95千字共18页下载文档
文本预览下载声明
Android固件移植和开发主要内容开发环境搭建固件的编译以太网LCDUSBWifi3GAndroid的启动流程Android的启动流程Linux内核启动之后就到Android Init进程,进而启动Android相关的服务和应用。Android的启动流程两个阶段:Linux的启动+Android的启动;启动过程Init进程的启动:rc文件解析和服务启动ServiceManager启动:ServiceManager用来管理系统中所有的binder service,不管是本地的c++实现的还是java语言实现的都需要这个进程来统一管理,最主要的管理就是,注册添加服务,获取服务。所有的Service使用前都必须先在servicemanager中进行注册。Zygote进程的启动:Zygote这个进程是非常重要的一个进程,Zygote进程的建立是真正的Android运行空间,初始化建立的Service都是Navtive service. Zygote就建立好了,利用Socket通讯,接收请求,Fork应用程序进程,进入Zygote进程服务框架中。SystemServer启动:startSystemServer( )、RuntimeInit.java、SystemServer.javaHome界面启动:然后就启动了Home界面,完成了整个Android启动流程3.总结:linux的init在启动若干守护进程之后,就启动了Android的runtime和zygote,zygote再启动虚拟机,系统 服务,系统服务再启动完本地服务后,又启动了若干Android服务,并完成向ServiceManager的注册工作,最后系统启动完成。Android的启动流程开发环境搭建64bit PC机准备,最好是搭建一台服务器,在服务器上安装好ubuntu-12.04.4-desktop-amd64.iso,本项目开发需要用64bit机和64bit Ubuntu。否则可能导致编译错误。Xshell/Xftp工具源码包解压和安装sun-Java6-jdk等;依赖库:apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline-gplv2-dev lib32z1-dev libxml2-utils uboot-mkimage源码编译可单独编译u-boot、内核和文件系统,生成镜像然后烧写;也可根据源码包进行整体编译,一般在开发板的源码包都有说明;通常在u-boot移植时,需要针对自己的板子选择一个相近的源码包,然后根据打印信息和电路图,来修改和移植Flash、ddr等部分的代码;有时候不同的芯片解决方案厂商将各个外围模块的配置和使能集中在了一个配置文件中,比如A20,将各个模块的引脚配置和使能等放在了sys_config.fex文件中,用户只需要简单修改即可使能对应模块;固件的编译过程-文件解读Kconfig:arch/$ARCH/Kconfig文件、各层目录下的Kconfig文件Makefile:Linux内核根目录下的makefile文件、各层目录下的makefile文件.config:Linux内核根目录下的.config文件、arm/$ARCH/下的config文件内核根目录下的 include/generated/autoconf.h文件固件编译U-boot.imgUbootMakefileAndroid Linux KerneluImageinclude/generated/autoconf.h.configAndroid Filesystemroot and system folderskconfigMake ARCH=arm menuconfig举例假设想把自己写的一个flash的驱动程式加载到工程中,而且能够通过 menuconfig配置内核时选择该驱动该怎么办呢?能够分三步:第一:将flashtest.c文档添加到/driver/mtd/maps/?目录下。第二:修改/driver/mtd/maps目录下的kconfig文档: config MTD_flashtest tristate “ap71?flash? 这样当make?menuconfig时,将会出现ap71?flash选项。第三:修改该目录下makefile文档。添加如下内容: obj-$(CONFIG_MTD_flashtest)????+=?flasht
显示全部
相似文档