LCD的ARM编程方式,LCD Linux程序如何写入?
半部 地址加一
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:描述了一种显卡显示模式的所有信息,如宽、高、颜色深
- 工控机在IC卡加油工程中的应用(05-13)
- 联网汽车为什么选择Linux开源平台?(07-10)
- 多网络和Linux代理的Android无线远程控制系统(02-02)
- 基于嵌入式Linux的家居监控系统设计(02-22)
- 基于嵌入式Linux系统的导航软件设计思路(03-17)
- 新型嵌入式机器视觉系统的设计研究(04-21)