嵌入式LinuxLCD驱动程序开发

上传人:san****019 文档编号:21041498 上传时间:2021-04-22 格式:PPT 页数:24 大小:564.10KB
收藏 版权申诉 举报 下载
嵌入式LinuxLCD驱动程序开发_第1页
第1页 / 共24页
嵌入式LinuxLCD驱动程序开发_第2页
第2页 / 共24页
嵌入式LinuxLCD驱动程序开发_第3页
第3页 / 共24页
资源描述:

《嵌入式LinuxLCD驱动程序开发》由会员分享,可在线阅读,更多相关《嵌入式LinuxLCD驱动程序开发(24页珍藏版)》请在装配图网上搜索。

1、197 嵌 入 式 Linux LCD驱 动 程 序 开 发 实 例 198 LCD显 示 原 理 LCD驱 动 程 序 的 设 计 LCD驱 动 设 计 步 骤 BMP文 件 显 示 199 液 晶 显 示 器 ( Liquid Crystal Display ) 的 物理 特 性 : 通 电 时 液 晶 排 列 的 有 秩 序 , 光 线 容 易通 过 ; 不 通 电 时 液 晶 排 列 混 乱 , 阻 止 光 线 通过 。 工 作 时 使 用 外 部 光 线 , 本 身 并 不 发 光 。 LCD分 类 : TFT、 DSTN 两 种 照 明 方 式 : 传 送 式 、 反 射 式 。

2、实 验 用 教 学 平 台 参 数 及 技 术 EP7312驱 动 LCD工 作 原 理 图 ( p263) 第 六 章 1 2 3嵌入式Linux 的设备管理 设备驱动程序开发过程 应用实例 200 灰 度 显 示 原 理 LCD显 示 屏 的 一 个 常 用 指 标 是 它 的 反 应 时 间 。 反 应时 间 指 的 是 一 个 像 素 从 显 示 到 关 闭 所 花 费 的 时 间 。 LCD 控 制 器 内 部 有 1个 16周 期 计 数 器 , 用 于 产 生 16周 期 的 间 隔 。 当 驱 动 像 素 时 , 它 读 帧 缓 冲 数 据 所 指的 调 色 板 寄 存 器 中

3、 的 半 字 节 数 据 。 该 数 据 确 定 在 16周 期 间 隔 里 像 素 显 示 的 次 数 。 例 如 该 值 等 于 4, 即认 为 该 像 素 以 最 大 亮 度 的 1/4 进 行 显 示 。 第 六 章 1 2 3嵌入式Linux 的设备管理 设备驱动程序开发过程 应用实例 201 彩 色 显 示 原 理 :彩 色 显 示 时 , 每 个 像 素 点 有 3 个 子 彩 色 像 素( 红 、 绿 、 蓝 ) 。 灰 度 显 示 的 技 术 应 用 到 彩 色 显示 中 , 每 个 子 彩 色 像 素 有 15 种 浓 度 的 感 觉 效果 。 可 用 红 、 绿 、 蓝

4、3 种 颜 色 的 15 种 浓 度 中 的一 种 去 驱 动 1个 像 素 点 。另 外 一 个 显 示 特 性 是 刷 新 率 , 指 的 是 整 个 数 据 帧被 重 新 写 到 显 示 屏 的 频 率 。 如 果 数 据 写 得 太 慢 ,将 影 响 显 示 质 量 ; 太 快 , 则 显 示 器 的 反 应 时 间 跟不 上 像 素 驱 动 状 态 的 改 变 。 推 荐 的 大 部 分 显 示 屏的 速 率 是 70 80Hz。 第 六 章 1 2 3嵌入式Linux 的设备管理 设备驱动程序开发过程 应用实例 202 EP7312对 液 晶 屏 幕 的 支 持 :EP7312 的

5、 LCD接 口 部 分 为 单 板 多 像 素 , 其 接口 特 性 为 :1-2-4 bpp ;可 编 程 屏 幕 面 板 尺 寸 , 在 4bpp 时 最 大 值 为1024 256;可 编 程 刷 新 率 ;16 级 灰 度 值 ;彩 色 屏 幕 接 口 能 力 。 第 六 章 1 2 3嵌入式Linux 的设备管理 设备驱动程序开发过程 应用实例 203 LCD DMA控 制 器 DMA带 宽 计 算 公 式 : VGA比 例 分 辨 率 刷 新 率 每 像 素 点 位 数 DMA延 迟 时 间 计 算 公 式 ( 字 深 数 位 宽 )/DMA带 宽 DMA延 迟 时 间 表 示 在

6、 最 差 的 情 况 下 , 从DMA发 出 请 求 到 可 获 取 第 一 个 DMA数 据 字 , 或者 说 DMA数 据 送 到 FIFO的 延 迟 时 间 或 总 周 期数 。 第 六 章 1 2 3嵌入式Linux 的设备管理 设备驱动程序开发过程 应用实例 204 LCD控 制 寄 存 器 :视 频 缓 冲 区 大 小 0:12, 对 应 视 频 显 示 缓 冲 区 总 位数 。 视 频 缓 冲 区 ( 缓 冲 区 总 位 数 /128) -1线 长 度 13:18: 对 应 于 一 整 行 中 的 像 素 数 。 线 长度 (像 素 数 /16) 1像 素 预 订 标 19:24

7、: 像 素 预 定 标 CPU频 率 /( 刷新 率 像 素 总 数 ) 1; 像 素 数 CPU频 率 /( 像素 预 定 标 1)AC预 定 标 25:29: 设 置 LCD AC偏 移 频 率GSEN30: 灰 度 使 能 位GSMD31: 灰 度 级 模 式 位 第 六 章 1 2 3嵌入式Linux 的设备管理 设备驱动程序开发过程 应用实例 205 LCD调 色 板 寄 存 器 : 为 了 支 持 各 种 颜 色 和 灰 度 级 , LCD控 制 器 有 2 个 32位调 色 板 寄 存 器 (PALLSW 和 PALMSW)。 每 个 调 色 板 寄 存器 被 分 成 8 个 4

8、 位 的 半 字 节 (nibble), 每 个 半 字 节 被 帧 缓冲 区 中 的 数 据 寻 址 , 其 格 式 如 下 : 第 六 章 1 2 3嵌入式Linux 的设备管理 设备驱动程序开发过程 应用实例 206 LCD调 色 板 寄 存 器 : 当 LCD控 制 器 配 置 成 每 像 素 点 4位 时 , 帧 缓 冲 区 中 4位数 据 代 表 1个 像 素 , 2个 调 色 板 寄 存 器 中 的 半 字 节 用 该 数据 寻 址 , 对 应 显 示 的 像 素 。 寻 址 结 构 用 于 将 帧 缓 冲 区 中的 数 据 映 射 到 实 际 的 灰 度 值 , 该 值 提 供

9、 给 显 示 接 口 。 当 配 置 成 每 像 素 4位 模 式 时 , 在 调 色 板 寄 存 器 中 的 所有 16个 半 字 节 都 被 用 于 映 射 。 同 理 , 每 像 素 2位 模 式 只用 编 程 调 色 板 寄 存 器 低 位 有 效 字 , 每 像 素 1位 模 式 只 用编 程 低 位 有 效 寄 存 器 的 前 2个 半 字 节 。 两 个 调 色 板 寄 存 器 半 字 节 可 以 编 程 为 0 15。 这 16个值 对 应 16 种 不 同 的 颜 色 深 度 级 。 第 六 章 1 2 3嵌入式Linux 的设备管理 设备驱动程序开发过程 应用实例 207

10、LCD调 色 板 寄 存 器 : 内 存 中 像 素 值 和 灰 度 级 的 映 射 第 六 章 1 2 3嵌入式Linux 的设备管理 设备驱动程序开发过程 应用实例 208 通 过 以 上 了 解 , 在 lcd.c 中 定 义 下 面 几 个 寄 存 器 : #define LCDCON *(unsigned long *)0 xff0002c0 #define PALLSW *(unsigned long *)0 xff000580 #define PALMSW *(unsigned long *)0 xff000540 #define FBADDR *(unsigned long *

11、)0 xff001000 #define SYSCON1 *(unsigned long *)0 xff000100 第 六 章 1 2 3嵌入式Linux 的设备管理 设备驱动程序开发过程 应用实例 209 驱 动 程 序 的 头 文 件Linux/: module.h, kernal.h, fs.h, sched.h, config.h, Utsname.h, major.h, string.h, fcntl.h, Malloc.h, timer.h, init.h, asm/: pgtable.h, irq.h, io.h 第 六 章 1 2 3嵌入式Linux 的设备管理 设备驱动程序

12、开发过程 应用实例 210 系 统 调 用 分 类处 理 I/O请 求 : open、 close、 read、 write等进 程 : fork、 execve、 kill等时 间 : time、 settimeofday等内 存 : mmap、 brk 第 六 章 1 2 3嵌入式Linux 的设备管理 设备驱动程序开发过程 应用实例 211 系 统 内 部 , I/O设 备 的 存 取 通 过 一 组 固 定的 入 口 点 来 进 行 。 这 组 入 口 点 由 设 备 的 驱动 程 序 提 供 。 由 file_operations这 个 结 构向 系 统 进 行 说 明static

13、struct file_operations LCDfops = read:ReadLCD,ioctl:LCDIoctl,open :OpenLCD,release:CloseLCD,; 第 六 章 1 2 3嵌入式Linux 的设备管理 设备驱动程序开发过程 应用实例 212 寄 存 器 设 置 以 1/4VGA显 示 为 例 , 对 LCD控 制 器 复 制 操 作 进 行 计算 视 频 缓 冲 : 0 x1c1f 画 线 长 度 : 0 x3b 像 素 数 预 定 标 : 1 AC预 定 标 : 0 x13 灰 度 使 能 位 : 1 灰 度 模 式 位 : 1 第 六 章 1 2 3嵌

14、入式Linux 的设备管理 设备驱动程序开发过程 应用实例 213 应 用 编 程 接 口 ( API) 画 点 函 数 lcd_kernel_pixel: unsigned char * base 循 环 320*240*3*4/8次 。 每 个 像 素 使 用 1.5个 字 节 表 示 。 各 种 颜 色 所 对 应 的 值 第 六 章 1 2 3嵌入式Linux 的设备管理 设备驱动程序开发过程 应用实例 214 LCD模 块 化 驱 动在 自 己 的 驱 动 程 序 文 件 中 定 义 file_operations 结 构 , 初 始 化 设 备 需 要 的 操 作 函 数 , 对

15、于 设 备 不需 要 的 操 作 函 数 用 NULL来 初 始 化 或 者 采 用 标 签 格式 来 声 明 。 这 些 操 作 函 数 将 会 被 注 册 到 内 核 , 当应 用 程 序 对 该 设 备 相 应 的 设 备 文 件 进 行 文 件 操 作时 , 内 核 会 找 到 相 应 的 操 作 函 数 , 并 进 行 调 用 。如 果 操 作 函 数 注 册 成 NULL, 操 作 系 统 就 默 认 的 处理 。 第 六 章 1 2 3嵌入式Linux 的设备管理 设备驱动程序开发过程 应用实例 215 LCD模 块 化 驱 动 关 键 函 数 : lcd_kernel_init

16、(void) (模 块 被 载 入 时 执 行 ) lcd_kernel_exit(void) ( 模 块 被 移 出 内 核 空 间 时 执 行 ) lcd_kernel_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg) ( 其 他 功 能 ) 第 六 章 1 2 3嵌入式Linux 的设备管理 设备驱动程序开发过程 应用实例 216 LCD模 块 化 驱 动 lcd_kernel_ioctl(struct inode *inode, struct file *file, un

17、signed int cmd, unsigned long arg) 在 file_ope rations结 构 中 , 把 这 个 函 数 与 ioctl操 作 联 系 在 一 起 , 通 过 这 个 函数 , 可 以 增 加 要 提 供 的 服 务 。 例 如 : switch (cmd) case 0: lcd_clear (); break; case 1: ellip se = (ell ipse_t *) arg; lcd_ellipse (el lipse-x, ellipse-y , ellipse-a, ellipse-b, ellipse-c, ellipse-xorm);

18、 break; . 当 应 用 程 序 中 调 用 rt = ioct l(fd, 0); 或 rt = ioctl(fd, 1, 通 过 swit ch 选 择 , 就 会 分 别 去 执 行 LCD 驱 动 中 的 lcd_clear()和 lcd_ellipse(.)。 第 六 章 1 2 3嵌入式Linux 的设备管理 设备驱动程序开发过程 应用实例 217 LCD模 块 化 驱 动 下 面 是 LCD 驱 动 所 使 用 的 Makefile: KERNELDIR = /usr/src/arm/linux CROSS_COMPILE = arm-linux- CC = $(CROSS

19、_COMPILE)gcc CFLAGS = -D_KERNEL_ -DM ODULE -I$(KERNELDIR)/include -I/arm_linux_root/mod -O -Wall all: lcd.o demo demo: arm-elf -gcc -o demo demo.c clean: rm -f *.o * core demo 第 六 章 1 2 3嵌入式Linux 的设备管理 设备驱动程序开发过程 应用实例 218 将 LCD驱 动 加 入 内 核 配 置 系 统a) 将 lcd.c 复 制 到 linux/drivers/char目 录 下b) 修 改 lcd.c中

20、函 数 名 init_module为 LCDInit, cleanup_module为 LCDCleanupc) 在 lcd.c 最 后 加 上 下 面 两 行 : module_init(LCDInit); module_exit(LCDCleanup)。d) 在 linux/drivers/char/Makefile 中 添 加 obj- $(CONFIG_LCD)+=lcd.oe) 在 linux/drivers/char/Config.in 中 添 加 Tristate LCD driver support CONFIG_LCD 第 六 章 1 2 3嵌入式Linux 的设备管理 设备

21、驱动程序开发过程 应用实例 219 BMP文 件 特 点 : 几 乎 不 压 缩 , 占 用 磁 盘 空 间 较 大 BMP文 件 格 式 : 文 件 头 文 件 信 息 头 调 色 板 图 像 数 据 第 六 章 1 2 3嵌入式Linux 的设备管理 设备驱动程序开发过程 应用实例 220 BMP图 像 显 示 顺 序 读 取 , 逆 序 显 示 BMP图 像 显 示 步 骤 打 开 文 件 读 入 位 图 头 部 信 息 判 断 位 图 是 否 为 指 定 格 式 读 入 调 色 板 信 息 创 建 调 色 板 显 示 位 图 第 六 章 1 2 3嵌入式Linux 的设备管理 设备驱动程序开发过程 应用实例

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!