Android系统的开机画面显示过程分析.pdf

Android系统的开机画面显示过程分析.pdf

ID:51494392

大小:598.06 KB

页数:61页

时间:2020-03-25

Android系统的开机画面显示过程分析.pdf_第1页
Android系统的开机画面显示过程分析.pdf_第2页
Android系统的开机画面显示过程分析.pdf_第3页
Android系统的开机画面显示过程分析.pdf_第4页
Android系统的开机画面显示过程分析.pdf_第5页
资源描述:

《Android系统的开机画面显示过程分析.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Android系统的开机画面显示过程分析分类:Android2012-07-0900:561252人阅读评论(39)收藏举报好几个月都没有更新过博客了,从今天开始,老罗将尝试对Android系统的UI实现作一个系统的分析,也算是落实之前所作出的承诺。提到Android系统的UI,我们最先接触到的便是系统在启动过程中所出现的画面了。Android系统在启动的过程中,最多可以出现三个画面,每一个画面都用来描述一个不同的启动阶段。本文将详细分析这三个开机画面的显示过程,以便可以开启我们对Android系统UI实现的分析之路。第一

2、个开机画面是在内核启动的过程中出现的,它是一个静态的画面。第二个开机画面是在init进程启动的过程中出现的,它也是一个静态的画面。第三个开机画面是在系统服务启动的过程中出现的,它是一个动态的画面。无论是哪一个画面,它们都是在一个称为帧缓冲区(framebuffer,简称fb)的硬件设备上进行渲染的。接下来,我们就分别分析这三个画面是如何在fb上显示的。1.第一个开机画面的显示过程Android系统的第一个开机画面其实是Linux内核的启动画面。在默认情况下,这个画面是不会出现的,除非我们在编译内核的时候,启用以下两个编译选

3、项:CONFIG_FRAMEBUFFER_CONSOLECONFIG_LOGO第一个编译选项表示内核支持帧缓冲区控制台,它对应的配置菜单项为:DeviceDrivers--->Graphicssupport--->Consoledisplaydriversupport--->FramebufferConsolesupport。第二个编译选项表示内核在启动的过程中,需要显示LOGO,它对应的配置菜单项为:DeviceDrivers--->Graphicssupport--->Bootuplogo。配置Android内核编译选

4、项可以参考在Ubuntu上下载、编译和安装Android最新内核源代码(LinuxKernel)一文。帧缓冲区硬件设备在内核中有一个对应的驱动程序模块fbmem,它实现在文件kernel/goldfish/drivers/video/fbmem.c中,它的初始化函数如下所示:1/**2*fbmem_init-initframebuffersubsystem3*4*Initializetheframebuffersubsystem.5*6*NOTE:Thisfunctionis_only_tobecalledbydriver

5、s/char/mem.c.7*8*/910staticint__init11fbmem_init(void)12{13proc_create("fb",0,NULL,&fb_proc_fops);1415if(register_chrdev(FB_MAJOR,"fb",&fb_fops))16printk("unabletogetmajor%dforfbdevs",FB_MAJOR);1718fb_class=class_create(THIS_MODULE,"graphics");19if(IS_ERR(fb_cla

6、ss)){20printk(KERN_WARNING"Unabletocreatefbclass;errno=%ld",PTR_ERR(fb_class));21fb_class=NULL;22}23return0;24}这个函数首先调用函数proc_create在/proc目录下创建了一个fb文件,接着又调用函数register_chrdev来注册了一个名称为fb的字符设备,最后调用函数class_create在/sys/class目录下创建了一个graphics目录,用来描述内核的图形系统。模块fbmem除了会执行

7、上述初始化工作之外,还会导出一个函数register_framebuffer:25EXPORT_SYMBOL(register_framebuffer);这个函数在内核的启动过程会被调用,以便用来执行注册帧缓冲区硬件设备的操作,它的实现如下所示:26/**27*register_framebuffer-registersaframebufferdevice28*@fb_info:framebufferinfostructure29*30*Registersaframebufferdevice@fb_info.31*32*R

8、eturnsnegativeerrnoonerror,orzeroforsuccess.33*34*/3536int37register_framebuffer(structfb_info*fb_info)38{39inti;40structfb_eventevent;41......4243if(nu

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。