1 / 28
文档名称:

【精品】PPT课件 Android嵌入式系统软件开发.ppt

格式:ppt   页数:28
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

【精品】PPT课件 Android嵌入式系统软件开发.ppt

上传人:12345 2014/12/2 文件大小:0 KB

下载得到文件列表

【精品】PPT课件 Android嵌入式系统软件开发.ppt

文档介绍

文档介绍:Android嵌入式系统软件开发
Android Embedded System Software Development
周庆国
(******@lzu.)
兰州大学
1
2
第五章
Android
设备驱动
framebuffer驱动



wlan驱动
3
3
Framebuffer驱动
Framebuffer驱动是标准的显示设备的驱动
Framebuffer驱动是一个字符设备,这个驱动在文件系统中的设备节点通常是:/dev/fbX 每个系统可以有多个显示设备,使用/dev/fb0、/dev/fb1等来表示主设备号为29,次设备号递增增长(由每个Framebuffer程序的注册顺序决定)
Framebuffer驱动在用户空间大多使用ioctl、mmap等文件系统的接口进行操作,ioctl用于获得和设置信息,mmap可以将Framebuffer的内存映射到用户空间。
Framebuffer驱动也可以直接支持write操作,直接用写的方式输出显示内容。
Framebuffer驱动的主要头文件:include/linux/ Framebuffer驱动核心实现:drivers/video/ Framebuffer驱动中核心的数据接口是fb_info
4
4
Framebuffer驱动
Framebuffer驱动需要定义一个实现fb_info结构、实现fb_ops中的各个函数指针。
在配置Linux系统时,Framebuffer驱动的配置选项是:"Device Drivers">"Graphics support" 其配置文件为:drivers/video/Kconfig,其中也包含了文本模式和控制台、启动图标(bootup Logo)等子选项支持,具体的Framebuffer驱动由每一个平台支持
Framebuffer驱动是android中的标准设备,但是路径稍有不同/dev/graphic/fb0,android对Framebuffer驱动的使用方式是标准的,在android的GUI系统中,通过调用Framebuffer驱动的标准接口,实现显示设备的抽象。Framebuffer设备节点由init进程自动创建,被libui库调用。
5
5
FrameBuffer
SurfaceFlinger是一个服务,主要是负责合成各窗口的Surface,通过OpenGLES显示到FrameBuffer上。
DisplayHardware是对显示设备的抽象,包括FrameBuffer和Overlay。它加载FrameBuffer和Overlay插件,并初始化OpenGLES。
6
6
FrameBuffer
FramebufferNativeWindow 是framebuffer 的抽象,它负责加载libgralloc,并打开framebuffer设备。FramebufferNativeWindow并不直接使用 framebuffer,而是自己创建了两个Buffer:
queueBuffer负责显示一个Buffer到屏幕上,它调用fb->post去显示。
dequeueBuffer获取一个空闲的Buffer,用来在后台绘制。
这两个函数由eglSwapBuffers调过来,调到
7
7
FrameBuffer
egl_window_surface_v2_t::swapBuffers: nativeWindow->queueBuffer(nativeWindow, buffer);
nativeWindow->dequeueBuffer(nativeWindow, &buffer);
msm7k/liboverlay是Overlay的实现,与其它平台不同的是,高通平台上的Overlay并不是提供一个framebuffer设备,而通过fb0的ioctl来实现的,ioctl分为两类操作:
OverlayControlChannel用于设置参数,比如设置Overlay的位置,宽度和高度。
8
8
FrameBuffer
OverlayDataChannel用于显示Overlay,其中最重要的函数就是queueBuffer
msm7k/libgralloc 是显示缓存的抽象,包括framebuffer和普通Surface的Buffer。
framebuffer只是/dev/graphic/fb0的包装,Surface的Buffer则是对/dev/pmem、ashmem和GPU内存(msm_hw3dm)的包装,它的目标主要是方便硬件加速,因为 DMA传输使用物理地址,要求内存在物理地址上连