![Android系统移植讲解_第1页](http://file4.renrendoc.com/view/ccc238e36138af762b736928758eb7c8/ccc238e36138af762b736928758eb7c81.gif)
![Android系统移植讲解_第2页](http://file4.renrendoc.com/view/ccc238e36138af762b736928758eb7c8/ccc238e36138af762b736928758eb7c82.gif)
![Android系统移植讲解_第3页](http://file4.renrendoc.com/view/ccc238e36138af762b736928758eb7c8/ccc238e36138af762b736928758eb7c83.gif)
![Android系统移植讲解_第4页](http://file4.renrendoc.com/view/ccc238e36138af762b736928758eb7c8/ccc238e36138af762b736928758eb7c84.gif)
![Android系统移植讲解_第5页](http://file4.renrendoc.com/view/ccc238e36138af762b736928758eb7c8/ccc238e36138af762b736928758eb7c85.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
android系统移植讲解硬件需求RAM:512MBFLASH:256MBCPU:
ARM平台指令集要求
ARM9Family以上,ARMv5以上指令集,
mips平台指令集要求
MIPS32revision2-Little-Endian,O32软件需求Linux2.6以上版本,目前froyo(v2.2)对应于linux2.6.32-linux2.6.35版本,最好是使用android官方网可以下载到的代码【目前linux2.6.23官方网下不了,最低也是linux2.6.25】Android源码移植主要四大模块1、bootload运行起来,无论使用u-boot还是fastboot,主要是关于flash分区问题2、linuxkernel主要涉及到androiddriver层驱动代码3、android系统移植4、应用程序移植
【后面则详细讲解各个模块的移植过程】Bootload一般使用u-boot或者fastboot,主要的工作就是flash分区问题,一般划分为如下几个分区:1、fastboot【快速启动,裸板启动区】2、recovery【系统恢复分区】recovery就好比外套,fastboot就好比内衣3、kernel【linux内核分区】4、system【android核心系统分区】5、userdata【用户数据分区】6、factorydata【工厂数据分区】linuxkernel由于android系统对于linuxkernel的限制,首先是要选定合适的kernel版本,然后剩下的工作就是整个一个全新的kernel代码,系统移植有三份kernel代码需要集成1、机顶盒厂商提供的linux源码,包含有针对平台的驱动代码及修改2、官方网站下载的linux源码,与厂商的版本可能有所不同3、增加了androidlinuxdriver的源码,这部分已经从linuxkernel中分离开来,需要单独移植
所以首要的问题是将三份统一到一起,目标是支持厂商驱动,支持android驱动以及更新到一定
linux内核版本(androiddriver+sdkdriver+linuxkernel)这部分工作需要深入到linuxkerneldriver层代码,一定的技术功底+细心Kernel移植要点1、尽可能将硬件平台相关的代码从旧版移植到新版本2、针对硬件平台相关的代码,以旧版本为主,毕竟旧版的是可以正常运行的版本,3、非硬件平台相关代码尽量使用新版本4、若遇到不知如何处理问题,先跳过,记录下该文件及修改点,这部分需要多参考部份原码进行移植5、对于配置.config文件,需要根据相关功能进行修改及配置,可以从模拟器上拿到config.gz文件解开即可6、编译及测式,采用nfs挂载根文件系统,一般遇到kernelpanic错误时,打开kerneldebug,printk加打印,或者disable此功能进行调试移植过程(一)1、移植boot-loader和linux2.6内核到目标平台上,让linux内核可以启动起来,基本的驱动运行正常2、修改内核配置文件,打开Android必须的驱动,比如binder,logger,ashemem,pmem等3、为了提高启动速度,采用ramdisk,将android文件系统的部分内容压缩到内核中4、根据分区表修改内核启动参数,例如mem=352Mconsole=ttyAMA0,115200root=/dev/mtdblock2rootfstype=yaffs2rw启动的第一个应用程序是/init5、确保控制台的设置和硬件保持一致,如:硬件上串口用的是UART1,则内核启动参数中设置有console=ttyAMA0
与启动参数中保持一致移植过程(二)6、修改android源代码system/core/rootdir目录下的init.rc文件,android默认yaffs2文件系统,所以制作system.img也是yaffs2及linuxkernel配置成支持yaffs2文件系统,首先将android文件系统修改成可读写mountrootfsrootfs/rwremount
7、编译busybox将其加入到system中作为命令使用总结:android的移植按如下流程:1、androidlinux内核的普通驱动移植,让内核可以在目标平台上运行起来。2、正确挂载文件系统,确保内核启动参数和android源代码system/core/rootdir目录下的init.rc中的文件系统挂载正确。3、调试控制台,让内核启动参数中的console参数以及android源代码system/core/init/init.c中的console_name设置和硬件保持一致4、打开android相关的驱动(logger,binder等),串口输入logcat看logger驱动起来,没有的话调试logger驱动。Android启动步骤Android从Linux系统启动有4个步骤;1、
init进程启动(system\core\init\中的main函数)init进程,它是一个由内核启动的用户级进程。内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程,此后android将接管所有工作,这里涉及到两个脚本文件:init.rc及init.xxx.rc【arch】2、
Native服务启动
Servicemanager和zygote进程就奠定了Android的基础。Zygote这个进程起来才会建立起真正的Android运行空间,主要是Zytote创建JAVA虚拟机,装载classes等
【受精卵,典型的C/S结构,请求生产,fork子进程,ok,生了】启动步骤3、
SystemServer服务循环框架
Android服务启动不停的通过Zygotefork新的进程,并建立了一大堆服务,并addService到serviceManager,Android的所有服务循环框架都是建立SystemServer@(SystemServer.java)上4、
Home启动启动完所有的Android服务后,然后启动第一个home应用程序,即第一个启动HomeActivity应用程序总体启动框架图示HAL接口实现Android系统的移植就是kernel+HAL层接口实现【不过这是最理想的做法了,实现上简单的这么做难道很大的】HardwareAbtractionLayer,即硬件抽象层,目的就是使用自已平台的硬件适配层为系统加速,发挥硬件平台的最大性能,未定义则使用软实现。HAL层调用方式
JNI->通用硬件模块->硬件模块->内核驱动接口,即androidframeworks中JNI调用/hardware/libhardware/hardware.c中定义的hw_get_module函数来获取硬件模块,然后调用硬件模块中的方法,硬件模块中的方法直接调用内核接口完成相关功能接口层调用关系HAL接口定义原则1、同类设备有多个时只定义一个设备名称,调用open函数全部打开【对于设备打开需要很多资源的并且很少使用的可以后续分配内存,以便内存浪费】2、接口定义以效率为先,发挥平台最大性能3、模块划分明确,方便调试及集成4、类型的结构充分利用CStruct的数据排列特性:基本结构体放置在最前面,本地私有放置在后面,满足了抽象的需要,以structhw_module_tcommon;及structhw_device_tcommon;置前主要法模块约介绍ha凑rd花wa忘re笋.h通用毁硬件脸模块籍头文旱件gr抵al之lo张c.什h主要产定义gr捆ap胃hi散cs晌d割ev震ic论e,至肿少需迁要双软缓冲fr捆am找eb刺uf脆fe末r,硬子件没抬有则腿使用as其he纱me蜜m或pm猜em实现co练py惰bi度t.僚h随2且D加速前函数头,如bl猜it飘/s墨tr川et乞chov吐er蒙la北y.见h加速娱视频柳数据软输出如,叠鼓加于坏主显阅示区位之上室,机桌顶盒麻上一懒般使间用视沫频层泊输出tu风ne森r.撕h锁频通功能制定义de裕mu泼x.献h解复鲜用功同能定胆义me脖di剖a.铅h媒体墙播放驴功能绕定义锻,包贝含av卫d歪ec晌/o循ut原pu里t,并且者虚拟道定义樱了vi之de谅o喇wi芹nd班ow概念Op费en鸦Gl剑3责D接口武实现妄,移任植平锣台前但期可洽以先智行使办用软顿件li钞ba赴gl畏.s讯oHA信L后续探解读生成赵的所植有模妹块都值以*.s呀o动态针库,消各个摄动态肃库之拦间定钩义了输一个ha过l_默co震mm假on翁.s悔o用于膊各个上动态良间全采局变题量调摊用,赖对上镇层接饶口透贱明下面利直接爹讲解HA名L层代吩码头宏文件关于拒图形商部分梢移植1、如更果处愿理器稳只有2D硬件屈加速盒而没性有3D硬件致加速浪,则粗可以宏利用op渡en咬gl中的li越ba踢gl,鄙实现唱封装徐在li波ba炼gl里的co堡py陆bi棵t,即li狮ba窑gl旨+嘉c誓op连yb较it2、如偏果处统理器2D瓣/3简D硬件昂加速袋均有侮,那木么可站以丢效开co摧py街bi典t,去光实现op滔en膝GL梯E需S甘2D火/3莫D捐AP懂I的加互速功酸能3、对打于hi蚕si来说修,有吃专门扇的2D和3D硬件侵加速仅,但赴由于3D对于固数据(s伐ur质fc衣ae或者邻纹理)搬移彻速度辟不理伟想(4间0m荒s-市7m置s差异),所摔以实旗现gl妨Dr化aw擦Ar啦ra桃ys实现co朱py挪bi圾t功能付实现加速饭逻辑棍加载唐流程框(eg摊l.歌cp猎p)全局汁变量gE杰GL秩Im冷pl定义IM粉PL猛_H狼AR光DW叶AR渣E=枣0爹,脱IM透PL功_S吊OF芳TW步AR烧E利用eg番l_灶in框it于_d香ri御ve宣rs视_l身oc何ke由d填充gE劣GL耀Im词p数组竖变量,即加侵载不赖同的梨动态案(硬泳件和爪软件迫加速猴驱动污)li说bG佣LE于S_暑an鉴dr仗oi仓d.私so软件鸭库【l农ib趋ag逃l】li吃bG语LE宪S_酱HW骂xx永xx丑x.螺so硬件嗽库Op碗en放Gl的函元数赋旁值于ho弱ok锤s结构利用器配置场文件/s齐ys膀te算m/欣li渔b/勿eg暮l/筋eg谣l.留cf晋g进行贿选择lo饥ad掀er株.o壮pe浑n->沸l谅oa理d_刻dr役iv京er进行东函数仗指针翁赋值Co竭py浴bi批t功能府实现葬(2D加速做)主要千包含勉块搬假移及凝位图掏拉伸准或旋诊转的经功能,实现co吨py冤bi株t_适de坚vi腐ce敲_t结构迷即可基本鹊调用越层次肆关系,对于Op谁en扯Gl调用察补充戴下:可选两宏定养义LIB素AG翠L_插US赶E_衰GR勿AL鬼LO系C_刃CO城PY俩BI济TSgl驳Dr仆aw乳Ar靠ra剑ys琴->佛dr英aw耳Pr肯im险it收iv志es股Tr咬ia泪ng恐le幅Fa敢n-购>c德op舰yb乔it调用桥到平占台Co较py励bi郑t函数结,使祝用2D对su凳rf茶ac忙eF阔li馋ng群er实现粒块搬来移La超ye让rB乔uf格fe距rOp绵en薯GlCo朵py仆bi扬t硬件蜻抽象仅层硬件匹支持乱,hi敌si即为TD丢E层图形哥系统律层次焦关系显示Fr救am艇eB偏uf究fe啦r在系剂统中牢就是汪一段桨内存,G谦DI的工替作就棒是把首需要悄输出弯的内容放懂入到就该段状内存定的某怨个位未置,u绸i层调狸用代塘码Fr昨am友eb润uf缸fe知rN弓at轿iv充ew果in纤do墓w.搁cp敲p图形炭缓冲平区管否理接口梯体现赏在gr框al咏lo且c.翅h接口劈燕中,弟实现并硬件Fr超am鞭eB矮uf按fe霸r内存幅管理巡寿及共稳享缓镇存管饺理接口街调用陷逻辑资:gr妖al航lo丧c_耳de置vi掀ce暑_o呜pe劝n根据更不同像情况:gp裙u分配喉空间,调用gr较al良lo喷c_述al桥lo待c,棵hi档si统一厘使用fb实现fb分配耗空间,调用fb佛_d浩ev币ic伴e_益op喝en,打晒开/d闲ev胡/f佳b0其它僻内存笛分配,调用gr厘al洞lo挪c_眨al薯lo喇c_奇bu购ff屠er使用PM映EM或者AS咏HM娱EMma斑pF渣ra刑me胖Bu码ff泳er章Lo槐ck定ed真正驶分配fb缓冲农区函毕数,璃这里多一次湿性打某开所挣有fb,后春面直家接偏骑移地戒址使锯用即味可(g岸ra开ll姿oc旨_a冤ll惜oc弊_f插ra陶me查bu弱ff炕er可_l柔oc伙ke荡d)句柄毒传递坛使用pr潮iv撒at累e_锁ha易nd局le夏_t与bu谣ff蛙er缓_h测an灾dl惧e_曲t转换,两者梳继承将关系:s箱tr悬uc乖t只pr梳iv驳at并e_笑ha棵nd刮le土_t宴:族p侧ub题li偷c盲na鼠ti律ve叼_h戚an那dl趁e图形3D实现接口泉代码骂:an护dr顾oi耻d\男fr激am霸ew妄or辨ks胖\b采as订e\镰op肠en旧gl实现相代码英:gr材ap炉hi晚cs每\3变d\颈dr樱iv柄er见\o帽p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 科技驱动的家庭财务自由之路
- 2025年度肉类蔬菜冷链物流园区运营管理合同
- 二零二五年度五金配件出口退税与金融服务合同
- 2025年度退定金协议:体育赛事门票退订管理合同
- 2025年度航空航天配件采购合同电子版范本
- 打造安全办公环境从细节出发的注意事项和技能学习
- 二零二五年度解除劳动合同关系及退休待遇协议
- 二零二五年度西安市劳动合同制网络主播聘用合同
- 2025年度返聘合同解除协议范本剖析
- 疫情背景下线上学生心理支持体系的构建与实施
- 长江委水文局2025年校园招聘17人历年高频重点提升(共500题)附带答案详解
- IF钢物理冶金原理与关键工艺技术1
- JGJ46-2024 建筑与市政工程施工现场临时用电安全技术标准
- 销售提成对赌协议书范本 3篇
- EPC项目阶段划分及工作结构分解方案
- 《跨学科实践活动4 基于特定需求设计和制作简易供氧器》教学设计
- 术后病人烫伤不良事件PDCA循环分析
- 金字塔原理完整版本
- 家谱、宗谱颁谱庆典讲话
- pp顾问的常见面试问题
- 法理学原理与案例完整版教学课件全套ppt教程
评论
0/150
提交评论