基于飞思卡尔imx6的VGA驱动模块开发.doc

上传人:gs****r 文档编号:1899548 上传时间:2019-03-21 格式:DOC 页数:6 大小:108KB
下载 相关 举报
基于飞思卡尔imx6的VGA驱动模块开发.doc_第1页
第1页 / 共6页
基于飞思卡尔imx6的VGA驱动模块开发.doc_第2页
第2页 / 共6页
基于飞思卡尔imx6的VGA驱动模块开发.doc_第3页
第3页 / 共6页
基于飞思卡尔imx6的VGA驱动模块开发.doc_第4页
第4页 / 共6页
基于飞思卡尔imx6的VGA驱动模块开发.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、1基于飞思卡尔 imx6 的 VGA 驱动模块开发摘要: 随着智能移动终端的发展,Android 和 Linux 操作系统越来越火爆。与此同时越来越多的半导体芯片制造厂不断的更新推出高性能的智能处理器,这就需要软件开发者不断的研究和优化每一个新的 ARM 处理器,提高软件的适应性使之能够完美的发挥出处理器的性能。以飞思卡尔半导体的 IMX6 为硬件系统平台,给出了嵌入式产品中 VGA 显示接口的实现方案,分析了 Linux 内核结构、驱动添加和注册流程、framebuffer 的处理机制及其在驱动中的应用方法,详细讲述了在 Linux2.6.28 内核下,基于 framebuffer 开发 V

2、GA 显示驱动的方法及步骤。 关键词: Linux 设备驱动;VGA;framebuffer;IMX6 中图分类号:TB 文献标识码:A doi:10.19311/ki.16723198.2016.12.087 1 引言 1.1 目的 编写基于 imx6 开发的移动终端上 VGA 的功能添加和优化的详细说明书是为了方便更多的人了解飞思卡尔 imx6 这个 ARM CortexTM-A9 架构处理器性能和架构,同时能够深入了解 VGA 的具体工作流程和结构,在了解 VGA 在内核如何工作的过程当中也会跟大家讲解一下 Linux 内核的基2本属性和结构以及内部驱动管理和调用。 1.2 项目背景 i

3、.MX6 是基于 ARM CortexTM-A9 架构的高扩展性多核系列嵌入式多媒体应用处理器,普遍使用于工业控制、车载电脑控制、智能移动终端、监控设备、机顶盒、KTV 点歌设备等方面。它的强力的 3D 图像处理引擎、支持多种格式的视频压缩解压功能和内部集成的电源管理等优点使得它成为优秀的智能设备开发平台,同时由于他支持高规格的 LCD 显示24XGA(20481536)或 21080p+WXGA(1280720),因此以前的一些能适用于 Linux 内核的 VGA 驱动需要我们嵌入式软件开发人员进行调整。 VGA 也就是 Video Graphic Array,即显示绘图阵列。它的接口是一个

4、模拟信号接口,在显示领域成为了一种成熟通用的显示器标准接口,由于它的通用性和高性能适应性被各种规格的显示器在硬件上使用和支持。在当今 PC 机以及各种显示和控制设备中 VGA 得到大众的欢迎,因此在进行嵌入式软件开发中 VGA 驱动成为我们调试和开发的重中之重。本文以 Linux2.6 内核和飞思卡尔 IMX6 处理器为系统的软、硬件平台,详细论述了基于 framebuffer 技术开发 VGA 显示驱动程序的方法。 2 总体设计 2.1 软件描述 VGA 驱动模块结构包含:平台驱动、LCD 控制器驱动、外设驱动。进行 VGA 的嵌入式开发主要是为 Android 系统嵌入 VGA 功能模块让

5、我们的移动终端可以通过 VGA 接口外接显示器满足客户的要求,同时对 VGA 驱3动进行的优化能让我们的系统可以充分发挥出飞思卡尔 imx6 处理器强劲的图像处理和显示功能提高用户体验。 2.2 设计方法 在实现一个功能或者解决某一个问题的时候,我们要经过理论分析,推导,简化,逐步达到目的,因此我们首先应该分析 VGA 驱动结构和工作流程,抓住关键点预计如何优化显示效果,其次分析如何添加驱动到Linux 内核使 LCD 能够正常显示智能移动终端通过 VGA 传输的信号,最后结合 VGA 驱动和 LCD 优化显示画面,让 imx6 处理器的优秀性能能够发挥出来。 2.3 软件结构 3 模块设计说

6、明 3.1 平台驱动模块 3.1.1 设备定义功能模块 (1)设备定义模块描述。 通过设置 platform_device 结构变量 mxc_fb_device 定义设备。 (2)输入、输出。 3.1.2 设备注册功能模块 (1)模块描述。 向系统注册已经被定义的设备,注册状态可被其他模块检测。 (2)模块接口关系。 注册:注册平台设备。 查询调用:被相关函数查询设备注册状态,并自动调用 probe 函数。4(3)输入输出。无。 (4)函数。 3.2LCD 控制器模块 3.2.1 定义、注册平台设备驱动模块 (1)模块描述。 注册和定义 LCD 控制器的设备驱动。 (2)模块接口关系。 已经被

7、定义和注册的设备驱动可以被调用。 (3)函数。 4 部分模块功能详细设计 4.1framebuffer 数据结构 Framebuffer 程序是 Linux2.6.x 内核中出现的一种驱动程序接口。它把一些显示设备抽象描述成一个缓冲区域,由于 Linux 不像 Windows那样能够直接调用显卡驱动因此 framebuffer 就提供了一个沟通内存和显卡的桥梁。用户直接通过定义好的接口直接访问显卡,这样就不需要知道底层的操作和调用。 Framebuffer 在 Linux 内核中一把包含于两个文件 fb.h 和fbmen.c。其中 fbmen.c 主要提供 LCD 驱动的通用文件操作接口,而

8、fb.h中包含有很多重要的宏定义和结构体。在结构体中有些是我们需要注意和优化的如: (1) struct fb_fix_screeninfo,这个结构体主要用来描述显卡5自身的属性,包含标识符、显示数据缓存地址、显示数据类型等,在显卡被设定模式后创建,一旦系统开始运行之后,该结构体的值就不能被我们改动。 (2) struct fb_var_screeninfo,此结构主要用来描述显卡的一般特性,比如虚实分辨率,以及两者之间的 offset 等,也就是说,这个结构体可以决定我们所能驱动的外接显示屏的尺寸。 (3) struct fb_cmap,主要用来描述设备无关的颜色映射信息。可以通过FBIO

9、GETCMAP 和 FBIOPUTCMAP 对应的 ioctl 操作设定或获取颜色映射信息。4.2 驱动的注册于注销 从 Linux2.6.x 内核提供的平台驱动机制为了方便内核管理把设备和驱动用 platform_device 和 platform_driver 来表示,其中platform_device 表示设备而 platform_driver 用来注册驱动。设备驱动是给用户的程序提供系统调用的接口,让用户能够直接通过接口来驱动硬件设备而不用深入的了解硬件底层代码。内核驱动管理机制提供了两个函数给我们进行注册或者注销我们特定平台的 LCD 驱动程序。int register_frameb

10、uffer(struct fb_info *fb_info)用于注册该驱动;int unregister_framebuffer(struct fb_info *fb_info)则用于注销该驱动。几乎所有的底层设备驱动所要做的事情就是填充 fb_inf o 结构然后利用上述的两个函数向系统注册或注销它。 5 总结 经测试,我的 VGA 驱动程序在 IMX6 平台上能够成功添加和实现。文6中给出了 VGA 驱动的整体架构并对一些主要的工作模块和机制进行了详细的讲解,同时对主要模块的设计思想和实现方法进行了详细的分析讨论。我在实现 VGA 模块的开发和移植过程中通过阅读大量的相关资料,听取指导老师

11、的一些建议,对 Linux 下 ARM 嵌入式开发积累了大量的经验,大大的提高了我的解决调通驱动的能力,加深了对 Android 的整体架构的理解,知识面的不足也充分暴露出来亟待改正。 参考文献 1王振丽.Android 底层开发技术实战详解内核、移植和驱动M.北京:电子工业出版社,2012, (8). 2 陈强.Android 底层接口与驱动开发技术详解M.北京:中国铁道出版社,2012 , (8). 3郭小梅.基于 mx51 的 VGA 驱动开发J.电脑编程技巧与维护,2011, (08). 4(美国)ChristopherHallinan.嵌入式 Linux 开发M.北京:人民邮电出版社,2008. 5Robert Love,陈莉君,康华.Linux 内核设计与实现M.北京:机械工业出版社,2011.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 学科论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。