微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > LCD的ARM编程方式,LCD Linux程序如何写入?

LCD的ARM编程方式,LCD Linux程序如何写入?

时间:04-25 来源:网络整理 点击:

半部 地址加一

  OutPortCom2( HZTable[hzcode][i*2 1], 0xc4); //右半部 字模地址加一

  StartAddr=StartAddr LineChar;

  }

  } 4. 图形显示 固定格式的图形图像显示与在图形方式下显示汉字类似,即先确定点阵信息,再送入显示位置对应的缓冲区中。

  实际上,每个汉字都是一幅图像,只是在处理坐标数据时有所不同。与汉字显示的主要区别是:图形显示中数据需逐点生成并按一定算法逐点送入缓冲区单元;为获得良好的显示效果,标准图元(直线、圆、椭圆等)可利用图形学中的某些生成算法。由于硬件要求一次扫1行,因此必须先找到该点所在的行地址,然后在字节内计算点的位置,将该位置1;若是擦除,则将该位置0。画点是实现其它图形的基础,利用画点程序,只需按照图形学算法控制坐标变量x、y并移位,然后逐一画点,就能组成任何图形。

  5. 动态显示 当动态显示图形时,用T6963C控制器的命令和功能编程,获得变参数的各种基本图形函数,以显示不同的图形,在动态图形显示之前将固定的图形采用屏拷贝方式保存下来,动态图形显示结束时恢复原来的图形。汉字字符和数字字符的固定显示在初始化过程中完成,动态显示则直接用覆盖的方式完成。 无论汉字、数字、英文字符或图形,液晶显示控制器都视为在规定区域根据给定数据控制各个点的显示,它们的显示控制原理并没有本质区别,这样在编程时就可以将所有显示内容都当作图形处理。

  驱动程序采用C语言编写,具有模块化的结构和代码可移植性,且通用性较好。

  本文小结 采用点阵式图形液晶显示模块将使显示更直观、界面更丰富。直接访问方式的驱动程序比间接控制方式更精简一些,程序的运行效率也较高。本文中的程序采用C语言编写,通用性强、移植方便。该方法及程序在系统显示部分中,显示清晰、工作稳定。具有模块化结构和代码可移植性,且通用性较好,在嵌入式系统中有一定代表性和广泛用途。

  怎样写 Linux LCD 驱动程序:

  基本原理

  通过 framebuffer ,应用程序用 mmap 把显存映射到应用程序虚拟地址空间,将要显示的数据写入这个内存空间就可以在屏幕上显示出来;

  驱动程序分配系统内存作为显存;实现 file_operations 结构中的接口,为应用程序服务;实现 fb_ops 结构中的接口,控制和操作 LDC 控制器;

  驱动程序将显存的起始地址和长度传给 LCD 控制器的寄存器 (一般由 fb_set_var 完成) , LDC 控制器会自动的将显存中的数据显示在 LCD 屏上。

  写 framebuffer 驱动程序要做什么

  简单的讲,framebuffer 驱动的功能就是分配一块内存作显存,然后对 LCD 控制器的寄存器作一些设置。

  具体来说:

  填充一个 fbinfo 结构

  用 reigster_framebuffer (fbinfo*) 将 fbinfo 结构注册到内核

  对于 fbinfo 结构,最主要的是它的 fs_ops 成员,需要针对具体设备实现 fs_ops 中的接口

  考虑是否使用中断处理

  考虑内存访问方式

  显卡不自带显存的,分配系统内存作为显存

  显卡自带显存的,用 I/O 内存接口进行访问 (request_mem_region / ioremap),

  关于LCD 设备资料可参考如下资料:

  Datasheet of LCD device

  书:液晶显示技术

  书:液晶显示器件

  什么是 frame buffer 设备

  frame buffer 设备是图形硬件的抽象,它代表了图形硬件的侦缓冲区,允许应 用程序通过指定的接口访问图形硬件。因此,应用程序不必关心底层硬件细节。

  设备通过特定的设备节点访问,通常在 /dev 目录下,如 /dev/fb*。

  更多关于 frame buffer device 的资料可以在以下两个文件中找到: linux /Documentation/fb/framebuffer.txt 和 linux /Documentation/fb /interal.txt,但这些资料内容不多,还需要看看结合代码具体分析。

  Linux Frame Buffer 驱动程序层次结构

  Frame Buffer 设备驱动可以从三个层次来看:

  应用程序与系统调用;

  适用于所有设备的通用代码,避免重复,包括 file_operations 结构、register/unregister framebuffer 接口等;

  操作具体硬件的代码,主要是 fs_ops 结构。

  在 Linux 内核中,Frame Buffer 设备驱动的源码主要在以下两个文件中,它们 处于 frame buffer 驱动体系结构的中间层,它为上层的用户程序提供系统调用, 也为底层特定硬件驱动提供了接口:

  linux/inlcude/fb.h

  linux/drivers/video/fbmem.c

  数据结构

  头文件 fb.h 定义了所有的数据结构:

fb_var_screeninfo:描述了一种显卡显示模式的所有信息,如宽、高、颜色深

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top