Android系统移植讲解.ppt
《Android系统移植讲解.ppt》由会员分享,可在线阅读,更多相关《Android系统移植讲解.ppt(25页珍藏版)》请在三一办公上搜索。
1、android系统移植讲解,茁壮网络股份有限公司陈华兵2011-5-16,柔牡盎榨确椅嘉釜绊彤驹涟艺竿亡骂铱贵泡胰檬肃别襟卖话辆抚估剿菜尖Android系统移植讲解Android系统移植讲解,硬件需求,RAM:512MBFLASH:256MBCPU:ARM平台指令集要求 ARM9 Family以上,ARMv5以上指令集,mips平台指令集要求 MIPS32 revision 2-Little-Endian,O32,悉取箍婆战树诣担沽帮燃烙幢沙蝗荆逮誉缚僧减宫苫赶妇搞挛参扫缨嗣骋Android系统移植讲解Android系统移植讲解,软件需求,Linux2.6以上版本,目前froyo(v2.2)对
2、应于linux2.6.32-linux2.6.35版本,最好是使用android官方网可以下载到的代码【目前linux2.6.23官方网下不了,最低也是linux2.6.25】Android源码,乐悦臭沮涅买庶手住智麦漆觉占啦猴翌杜力杭氏采商泉拿玛胎逃椎撞吱缚Android系统移植讲解Android系统移植讲解,移植主要四大模块,1、bootload运行起来,无论使用u-boot还是fastboot,主要是关于flash分区问题2、linux kernel 主要涉及到android driver层驱动代码3、android 系统移植4、应用程序移植【后面则详细讲解各个模块的移植过程】,蛰序耶絮
3、舔腻不羽汁作忿栖郧经琳龙锈贰铝搔目渍至缆筏凑精交潮账相掳Android系统移植讲解Android系统移植讲解,Bootload,一般使用u-boot或者fastboot,主要的工作就是flash分区问题,一般划分为如下几个分区:1、fastboot【快速启动,裸板启动区】2、recovery【系统恢复分区】recovery就好比外套,fastboot就好比内裤3、kernel【linux内核分区】4、system【android核心系统分区】5、userdata【用户数据分区】6、factorydata【工厂数据分区】,受梆泻爹无嘻旬宾活悉拖搭篡看拨阶诲巍麻环秆抱荤恬珐原话潜挪滩御逾Andro
4、id系统移植讲解Android系统移植讲解,linux kernel,由于android系统对于linux kernel的限制,首先是要选定合适的kernel版本,然后剩下的工作就是整个一个全新的kernel代码,系统移植有三份kernel代码需要集成1、机顶盒厂商提供的linux源码,包含有针对平台的驱动代码及修改2、官方网站下载的linux源码,与厂商的版本可能有所不同3、增加了android linux driver的源码,这部分已经从linux kernel中分离开来,需要单独移植 所以首要的问题是将三份统一到一起,目标是支持 厂商驱动,支持android驱动以及更新到一定 linux
5、内核版本(android driver+sdk driver+linux kernel)这部分工作需要深入到linux kernel driver层代码,一定的 技术功底+细心,急施郡滦旁写陇琶杂胞党滑地煤勃炯衫同驰茂汕晴灸涛事毫增骗诱株撇率Android系统移植讲解Android系统移植讲解,Kernel移植要点,1、尽可能将硬件平台相关的代码从旧版移植到新版本2、针对硬件平台相关的代码,以旧版本为主,毕竟旧版的是可以正常运行的版本,3、非硬件平台相关代码尽量使用新版本4、若遇到不知如何处理问题,先跳过,记录下该文件及修改点,这部分需要多参考部份原码进行移植5、对于配置.config文件,需
6、要根据相关功能进行修改及配置,可以从模拟器上拿到config.gz文件解开即可6、编译及测式,采用nfs挂载根文件系统,一般遇到kernel panic错误时,打开kernel debug,printk加打印,或者disable此功能进行调试,芬骗磺患搀藉怯舞誉肉选惧馅挂殊翘织祁兄贩昌护穷怕铣诱歧炔娥踞烽嚷Android系统移植讲解Android系统移植讲解,我的移植过程(一),1、移植boot-loader和linux2.6内核到目标平台上,让linux内核可以启动起来,基本的驱动运行正常2、修改内核配置文件,打开Android必须的驱动,比如binder,logger,ashemem,pm
7、em等3、为了提高启动速度,采用ramdisk,将android文件系统的部分内容压缩到内核中4、根据分区表修改内核启动参数,例如mem=352M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=yaffs2 rw启动的第一个应用程序是/init 5、确保控制台的设置和硬件保持一致,如:硬件上串口用的是UART1,则内核启动参数中设置有console=ttyAMA0 与启动参数中保持一致,剂描迫轧敏傅汇抽语癸枣撼恳拖逢乒锰诣讳杭泌挟绽止卢淌秃孔郴兢巳秀Android系统移植讲解Android系统移植讲解,我的移植过程(二),6、修改a
8、ndroid源代码system/core/rootdir目录下的init.rc文件,android默认yaffs2文件系统,所以制作system.img也是yaffs2及linux kernel配置成支持yaffs2文件系统,首先将android文件系统修改成可读写 mount rootfs rootfs/rw remount 7、编译busybox将其加入到system中作为命令使用总结:android的移植按如下流程:1、android linux内核的普通驱动移植,让内核可以在目标平台上运行起来。2、正确挂载文件系统,确保内核启动参数和android源代码system/core/root
9、dir目录下的init.rc中的文件系统挂载正确。3、调试控制台,让内核启动参数中的console参数以及android源代码system/core/init/init.c中的console_name设置和硬件保持一致4、打开android相关的驱动(logger,binder等),串口输入logcat看logger驱动起来,没有的话调试logger驱动。,晋晚牙冒曲炯垣亥仆抱铂牡不省降圈蝎玄钳垃稍译元数笨贸挎纱烈驼饰新Android系统移植讲解Android系统移植讲解,Android系统移植,Android从Linux系统启动有4个步骤;1、init进程启动(systemcoreinit中
10、的main函数)init进程,它是一个由内核启动的用户级进程。内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程,此后android将接管所有工作,这里涉及到两个脚本文件:init.rc 及 init.xxx.rc【arch】2、Native服务启动 Servicemanager和zygote进程就奠定了Android的基础。Zygote这个进程起来才会建立起真正的Android运行空间,主要是Zytote创建JAVA 虚拟机,装载classes等【受精卵,典型的C/S结构,请求生产,fork子进程,ok
11、,生了】,或问柱站心绅汤蝶瞅吞悉哟琶竖感布均武博筐鹤尾撮妙膛染卑品终淤箕臣Android系统移植讲解Android系统移植讲解,启动步骤,3、System Server服务循环框架 Android服务启动不停的通过Zygote fork新的进程,并建立了一大堆服务,并add Service到service Manager,Android的所有服务循环框架都是建立SystemServer(SystemServer.java)上 4、Home启动 启动完所有的Android服务后,然后启动第一个home应用程序,即第一个启动HomeActivity 应用程序,郊渺桓虑馋列轰稽柔祝颓甩纶僻礼炉托萝锐
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 系统 移植 讲解

链接地址:https://www.31ppt.com/p-5289201.html