基于ARM控制器的LCD驱动原理及设计
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
GPG4 is setted a s L CD PW R EN rGPGU P = rGPGU P (1< < 4) ; Pu ll- up disab le rGPGCON = rGPGCON (3 < < 8) ; GPG4 = L CD PW R EN
Enab le L CD POW ER ENABL E Function rL CDCON 5 = rL CDCON 5& (~ (1< < 3) ) (pw ren< < 3) ;
帧缓冲区是一种驱动程序接口, 这种接口将显示设备抽象 为帧缓冲区设备区。 帧缓冲区为图像硬件设备提供了一种抽象
化处理, 它代表了一些视频硬件设备, 允许应用软件通过定义明 确的界面来访问图像硬件设备。 这样软件无须了解任何涉及硬
件底层驱动的东西 (如硬件寄存器)。 它允许上层应用程序在图
形模式下直接对显示缓冲区进行读写和 I O 控制等操作。 通过 专门的设备节点可对该设备进行访问。 用户可以将它看成是显
W IN CE 在外围支持方面会提供部分驱动程序源代码模板 作 为开发者参考, 基本方法有所谓的N a tive D rivers 和 Stream D rivers。 两种方法在内存应用和数据流控制上有些不同, 前者 针对较初级内置硬件, 后者几乎可用于任何硬件。
W IN CE 的设备管理是和文件系统紧密结合的, 各种设备 都以文件的形式存放在特定目录下, 称为设备文件[3]。应用程序 可以打开、关闭和读写这些设备文件, 完成对设备的操作, 就像 操作普通的数据文件一样。为了管理这些设备, 系统为设备编了 号, 每个设备号又分为主设备号和次设备号。主设备号用来区分 不同种类的设备, 而次设备号用来区分同一类型的多个设备。对 于常用设备,W IN CE 会有约定俗成的编号。W IN CE 为所有的 设备文件都提供了统一的操作函数接口, 方法是使用数据结 Struct file op era tion s[4]。 这个数据结构中包括许多操作函数 的指针, 如op en ()、clo se ()、read () 和w rite () 等, 但由于外设的种 类较多, 操作方式各不相同。Struct file op era tion s 结构体中的 成员为一系列的接口函数, 如用于读 写的 read w rite 函数和用 于控制的ioctl 等。打开一个文件就是调用这个文件file op era2
# define PAL ET T E 0x4d000400 Pa lette sta rt address p a lette= (U 32 3 ) PAL ET T E; 3 p a lette+ + = 0; b lack fo r (cda ta= 1; cda ta< 255; cda ta+ + ) { p red= (cda ta & 0xe0) ; p green= (cda ta & 0x1c) ; p b lue= (cda ta & 0x03) ; 3 p a lette+ + = ( (U 32) ( (p red< < 8) (p green < < 6) (p b lue< < 3) ) ) ; } 3 p a lette= 0xffff; w h ite } 4. 2. 5 移动观察窗口 1 函数 vo id L cd M oveV iew Po rt (in t vx, in t vy) 4. 2. 6 移动观察窗口 2 函数 vo id M oveV iew Po rt (vo id) 4. 2. 7 单个象素的显示数据输出函数 vo id Pu tP ixel (U 32 x, U 32 y, U 32 c) 4. 2. 8 全屏填充特定颜色单元或清屏函数 vo id L cd C lea rScr (U 16 c) vo id G lib L ine (in t x1, in t y1, in t x2, in t y2, in t co lo r) 4. 3 设计功能模块初始化函数 在对 S3C2410 的L CD 编写模块化驱动程序前, 首先要从内 核中去除L CD 驱动, 并进行相应改动。 在编写模块化驱动程序
2 嵌入式驱动的概念 设备驱动程序是操作系统内核和机器硬件之间的接口, 设 备驱动程序为应用程序屏蔽了硬件的细节, 这样在应用程序看 来, 硬件设备只是一个设备文件, 应用程序可以像操作普通文件 一样对硬件设备进行操作。设备驱动程序是内核的一部分, 它主 要完成的功能有: 对设备进行初始化和释放; 把数据从内核传送 到硬件和从硬件读取数据; 读取应用程序传送给设备文件的数 据、回送应用程序请求的数据以及检测和处理设备出现的错误。 下面给出了完整的驱动系统示意框图[2] (图 1)
[ 关键词 ]嵌入式系统 L CD S3C2410 W IN CE
1 引言 随着科学进步, 技术创新, CR T、L ED、L CD 显示技术不断
涌现且产品成本不断降低, 人们开始对显示技术的质量有了更 高的要求, 信息显示技术在人们社会活动和日常生活中的作用 日益明显[1]。 因此L CD (液晶显示) 以其出色的显示能力逐渐走 进千家万户。L CD 模块满足了嵌入式系统日益提高的要求, 它 可以显示汉字、字符和图形, 同时还具有低压、微功耗、体积小、 重量轻和超薄等很多优点。 同时随着嵌入式系统的应用越来越 广泛, 功能也越来越强大, 对系统中的人机界面的要求也越来越 高, 在应用需求的驱使下, 许多工作在W IN CE 下的图形界面软 件包的开发和移植工作中都涉及到底层L CD 驱动的开发问题。 因此在嵌入式系统中开发L CD 驱动得以广泛运用。
整个驱动开发过程的重点。 S3C2410 中的L CD 控制器可支持 STN 和 T FT 两种液晶。 对于 STN 液晶平板, 该L CD 控制器可 支持 4 位双扫描、4 位单扫描和 8 位单扫描三种显示类型, 支持 4 级和 16 级灰度级单色显示模式, 支持 256 色和 4096 色显示, 可 接多种分辨率的L CD , 例如640×480、320×240 和160×160 等, 在 256 色显示模式时, 最大可支持 4096×1024、2048×2048 和 1024×4096 显示。T FT 液晶平板可支持 1- 2- 4- 8bpp (b its p er p ixel) 调色板显示模式和 16bpp 非调色板真彩显示。
示内存的一个映像, 将其映射到进程地址空间之后, 就可以进行 读写操作, 而读写操作可以反映到L CD。
4 L CD 驱动开发的主要工作 4. 1 设计初始化函数 初始化函数首先初始化L CD 控制器, 通过写寄存器设置显 示模式和颜色数, 然后分配L CD 显示缓冲区。 在W IN CE 中可 以用km a lloc () 函数分配一段连续的空间[4]。缓冲区大小用代码 表示为: screen size= vinfo. x res3 vinfo. yres3 vinfo. b its p er p ixel 8; 即点阵行数×点阵列数×用于表示一个像素的比特 数 8。缓冲区通常分配在大容量的片外SDRAM 中, 起始地址保 存在L CD 控制寄存器中。 本文采用的L CD 显示方式为 320× 240, 16 位彩色, 则需要分配的显示缓冲区为 320×240×2= 150kb。使用语句 fbp = (U 16 3 ) mm ap (0, screen size, PRO T R EAD PRO T W R IT E,M A P SHA R ED. . . . . . ; 用mm ap 函数使用户空间的一段地址关联到设备内存 (F ram eB uffer) 上。 无论何时, 只要程序在分配的地址范围内进行读取或者写入, 实 际上就是对设备的访问, 使用 mm ap 可以既快速又简单地访问 显示卡的内存。对于象这样的性能要求比较严格的应用来说, 直 接访问能给我们提供很大不同。并调用L CD BU FER [SCR YS IZE T FT 240320 ] [SCR XS IZE T FT 240320 ]进 行内核登记。
3 L CD 控制器 L CD 控制器的功能是接收计算机发来的指令和数据, 并向 计算机反馈所需的数据信息[1], 进而驱动显示。用户只需要通过 读写一系列的寄存器, 完成配置和显示驱动。 在驱动L CD 设计 的过程中首要的是配置L CD 控制器, 而在配置L CD 控制器中最 重要的一步则是帧缓冲区 (F ram eB uffer) 的指定。用户所要显示 的内容皆是从缓冲区中读出, 从而显示到屏幕上的。帧缓冲区的 大小由屏幕的分辨率和显示色彩数决定。 驱动帧缓冲的实现是
— 16 —
时, 使用的关键函数:
PW R EN rL CDCON 5= rL CDCON 5& (~ (1< < 5) ) ( invpw ren < <
5) ; INV PW R EN } 4. 2. 4 颜色初始化函数及代码 vo id L cd Pa lette In it (vo id) { un signed cha r cda ta, p red, p green, p b lue; U 32 3 p a lette;
嵌入式驱动的概念设备驱动程序是操作系统内核和机器硬件之间的接口备驱动程序为应用程序屏蔽了硬件的细节这样在应用程序看硬件设备只是一个设备文件应用程序可以像操作普通文件一样对硬件设备进行操作
科技信息
博士·专家论坛
基于A RM 控制器的L CD 驱动原理及设计
辽宁工程技术大学研究生学院 尹 航 李秀华
注: 李秀华, 女, 辽宁阜新人, 教授。 研究方向: 计算机硬件领域。
— 15 —
科技信息
博士·专家论坛
ቤተ መጻሕፍቲ ባይዱ
4. 2 设计部分成员函数 4. 2. 1 数据和控制端口初始化函数及代码 vo id L cd Po rt In it (vo id) {
rGPCU P = 0xffffffff; D isab le Pu ll- up register rGPCCON = 0xaaaa56a9; In itia lize VD [ 7: 0 ], L CDV F [ 2: 0 ], VM , V FRAM E , VL IN E, V CL K, L END rGPDU P = 0xffffffff; D isab le Pu ll- up register rGPDCON = 0xaaaaaaaa; In itia lize VD [ 15: 8 ] } 4. 2. 2 L CD 视频和控制信号输出或者停止, 1 开启视频输 出函数及代码
[ 摘 要 ]本文介绍嵌入式系统中L CD 显示原理及驱动设计, 以三星公司A RM 9 内核芯片 S3C2410 的L CD 接口为基 础, 采用W IN CE P la tfo rm B u ilder3. 0 平台编译器, 使用320×240 分辨率的T FT 彩色L CD , 通过对其W IN CE 系统下 驱动程序编写和修改, 实现对屏幕的驱动和显示。
tion s 中的op en 操作。不同类型的文件有不同的file op era tion s 成员函数, 如普通的磁盘数据文件, 接口函数完成磁盘数据块读 写操作; 而对于各种设备文件, 则最终调用各自驱动程序中的 I O 函数进行具体设备的操作。这样, 应用程序根本不必考虑操作 的是设备还是普通文件, 可一律当作文件处理, 具有非常清晰统 一的 I O 接口。 所以 file op era tion s 是文件层次的 I O 接口。
vo id L cd EnvidO nO ff (in t onoff) { if (onoff= = 1) rL CDCON 1 = 1; ENV ID = ON e lse rL CDCON 1 = rL CDCON 1 & 0x3fffe; ENV ID O ff } 4. 2. 3 电源控制引脚使能函数及代码 vo id L cd Pow erEnab le (in t invpw ren, in t pw ren) {
Enab le L CD POW ER ENABL E Function rL CDCON 5 = rL CDCON 5& (~ (1< < 3) ) (pw ren< < 3) ;
帧缓冲区是一种驱动程序接口, 这种接口将显示设备抽象 为帧缓冲区设备区。 帧缓冲区为图像硬件设备提供了一种抽象
化处理, 它代表了一些视频硬件设备, 允许应用软件通过定义明 确的界面来访问图像硬件设备。 这样软件无须了解任何涉及硬
件底层驱动的东西 (如硬件寄存器)。 它允许上层应用程序在图
形模式下直接对显示缓冲区进行读写和 I O 控制等操作。 通过 专门的设备节点可对该设备进行访问。 用户可以将它看成是显
W IN CE 在外围支持方面会提供部分驱动程序源代码模板 作 为开发者参考, 基本方法有所谓的N a tive D rivers 和 Stream D rivers。 两种方法在内存应用和数据流控制上有些不同, 前者 针对较初级内置硬件, 后者几乎可用于任何硬件。
W IN CE 的设备管理是和文件系统紧密结合的, 各种设备 都以文件的形式存放在特定目录下, 称为设备文件[3]。应用程序 可以打开、关闭和读写这些设备文件, 完成对设备的操作, 就像 操作普通的数据文件一样。为了管理这些设备, 系统为设备编了 号, 每个设备号又分为主设备号和次设备号。主设备号用来区分 不同种类的设备, 而次设备号用来区分同一类型的多个设备。对 于常用设备,W IN CE 会有约定俗成的编号。W IN CE 为所有的 设备文件都提供了统一的操作函数接口, 方法是使用数据结 Struct file op era tion s[4]。 这个数据结构中包括许多操作函数 的指针, 如op en ()、clo se ()、read () 和w rite () 等, 但由于外设的种 类较多, 操作方式各不相同。Struct file op era tion s 结构体中的 成员为一系列的接口函数, 如用于读 写的 read w rite 函数和用 于控制的ioctl 等。打开一个文件就是调用这个文件file op era2
# define PAL ET T E 0x4d000400 Pa lette sta rt address p a lette= (U 32 3 ) PAL ET T E; 3 p a lette+ + = 0; b lack fo r (cda ta= 1; cda ta< 255; cda ta+ + ) { p red= (cda ta & 0xe0) ; p green= (cda ta & 0x1c) ; p b lue= (cda ta & 0x03) ; 3 p a lette+ + = ( (U 32) ( (p red< < 8) (p green < < 6) (p b lue< < 3) ) ) ; } 3 p a lette= 0xffff; w h ite } 4. 2. 5 移动观察窗口 1 函数 vo id L cd M oveV iew Po rt (in t vx, in t vy) 4. 2. 6 移动观察窗口 2 函数 vo id M oveV iew Po rt (vo id) 4. 2. 7 单个象素的显示数据输出函数 vo id Pu tP ixel (U 32 x, U 32 y, U 32 c) 4. 2. 8 全屏填充特定颜色单元或清屏函数 vo id L cd C lea rScr (U 16 c) vo id G lib L ine (in t x1, in t y1, in t x2, in t y2, in t co lo r) 4. 3 设计功能模块初始化函数 在对 S3C2410 的L CD 编写模块化驱动程序前, 首先要从内 核中去除L CD 驱动, 并进行相应改动。 在编写模块化驱动程序
2 嵌入式驱动的概念 设备驱动程序是操作系统内核和机器硬件之间的接口, 设 备驱动程序为应用程序屏蔽了硬件的细节, 这样在应用程序看 来, 硬件设备只是一个设备文件, 应用程序可以像操作普通文件 一样对硬件设备进行操作。设备驱动程序是内核的一部分, 它主 要完成的功能有: 对设备进行初始化和释放; 把数据从内核传送 到硬件和从硬件读取数据; 读取应用程序传送给设备文件的数 据、回送应用程序请求的数据以及检测和处理设备出现的错误。 下面给出了完整的驱动系统示意框图[2] (图 1)
[ 关键词 ]嵌入式系统 L CD S3C2410 W IN CE
1 引言 随着科学进步, 技术创新, CR T、L ED、L CD 显示技术不断
涌现且产品成本不断降低, 人们开始对显示技术的质量有了更 高的要求, 信息显示技术在人们社会活动和日常生活中的作用 日益明显[1]。 因此L CD (液晶显示) 以其出色的显示能力逐渐走 进千家万户。L CD 模块满足了嵌入式系统日益提高的要求, 它 可以显示汉字、字符和图形, 同时还具有低压、微功耗、体积小、 重量轻和超薄等很多优点。 同时随着嵌入式系统的应用越来越 广泛, 功能也越来越强大, 对系统中的人机界面的要求也越来越 高, 在应用需求的驱使下, 许多工作在W IN CE 下的图形界面软 件包的开发和移植工作中都涉及到底层L CD 驱动的开发问题。 因此在嵌入式系统中开发L CD 驱动得以广泛运用。
整个驱动开发过程的重点。 S3C2410 中的L CD 控制器可支持 STN 和 T FT 两种液晶。 对于 STN 液晶平板, 该L CD 控制器可 支持 4 位双扫描、4 位单扫描和 8 位单扫描三种显示类型, 支持 4 级和 16 级灰度级单色显示模式, 支持 256 色和 4096 色显示, 可 接多种分辨率的L CD , 例如640×480、320×240 和160×160 等, 在 256 色显示模式时, 最大可支持 4096×1024、2048×2048 和 1024×4096 显示。T FT 液晶平板可支持 1- 2- 4- 8bpp (b its p er p ixel) 调色板显示模式和 16bpp 非调色板真彩显示。
示内存的一个映像, 将其映射到进程地址空间之后, 就可以进行 读写操作, 而读写操作可以反映到L CD。
4 L CD 驱动开发的主要工作 4. 1 设计初始化函数 初始化函数首先初始化L CD 控制器, 通过写寄存器设置显 示模式和颜色数, 然后分配L CD 显示缓冲区。 在W IN CE 中可 以用km a lloc () 函数分配一段连续的空间[4]。缓冲区大小用代码 表示为: screen size= vinfo. x res3 vinfo. yres3 vinfo. b its p er p ixel 8; 即点阵行数×点阵列数×用于表示一个像素的比特 数 8。缓冲区通常分配在大容量的片外SDRAM 中, 起始地址保 存在L CD 控制寄存器中。 本文采用的L CD 显示方式为 320× 240, 16 位彩色, 则需要分配的显示缓冲区为 320×240×2= 150kb。使用语句 fbp = (U 16 3 ) mm ap (0, screen size, PRO T R EAD PRO T W R IT E,M A P SHA R ED. . . . . . ; 用mm ap 函数使用户空间的一段地址关联到设备内存 (F ram eB uffer) 上。 无论何时, 只要程序在分配的地址范围内进行读取或者写入, 实 际上就是对设备的访问, 使用 mm ap 可以既快速又简单地访问 显示卡的内存。对于象这样的性能要求比较严格的应用来说, 直 接访问能给我们提供很大不同。并调用L CD BU FER [SCR YS IZE T FT 240320 ] [SCR XS IZE T FT 240320 ]进 行内核登记。
3 L CD 控制器 L CD 控制器的功能是接收计算机发来的指令和数据, 并向 计算机反馈所需的数据信息[1], 进而驱动显示。用户只需要通过 读写一系列的寄存器, 完成配置和显示驱动。 在驱动L CD 设计 的过程中首要的是配置L CD 控制器, 而在配置L CD 控制器中最 重要的一步则是帧缓冲区 (F ram eB uffer) 的指定。用户所要显示 的内容皆是从缓冲区中读出, 从而显示到屏幕上的。帧缓冲区的 大小由屏幕的分辨率和显示色彩数决定。 驱动帧缓冲的实现是
— 16 —
时, 使用的关键函数:
PW R EN rL CDCON 5= rL CDCON 5& (~ (1< < 5) ) ( invpw ren < <
5) ; INV PW R EN } 4. 2. 4 颜色初始化函数及代码 vo id L cd Pa lette In it (vo id) { un signed cha r cda ta, p red, p green, p b lue; U 32 3 p a lette;
嵌入式驱动的概念设备驱动程序是操作系统内核和机器硬件之间的接口备驱动程序为应用程序屏蔽了硬件的细节这样在应用程序看硬件设备只是一个设备文件应用程序可以像操作普通文件一样对硬件设备进行操作
科技信息
博士·专家论坛
基于A RM 控制器的L CD 驱动原理及设计
辽宁工程技术大学研究生学院 尹 航 李秀华
注: 李秀华, 女, 辽宁阜新人, 教授。 研究方向: 计算机硬件领域。
— 15 —
科技信息
博士·专家论坛
ቤተ መጻሕፍቲ ባይዱ
4. 2 设计部分成员函数 4. 2. 1 数据和控制端口初始化函数及代码 vo id L cd Po rt In it (vo id) {
rGPCU P = 0xffffffff; D isab le Pu ll- up register rGPCCON = 0xaaaa56a9; In itia lize VD [ 7: 0 ], L CDV F [ 2: 0 ], VM , V FRAM E , VL IN E, V CL K, L END rGPDU P = 0xffffffff; D isab le Pu ll- up register rGPDCON = 0xaaaaaaaa; In itia lize VD [ 15: 8 ] } 4. 2. 2 L CD 视频和控制信号输出或者停止, 1 开启视频输 出函数及代码
[ 摘 要 ]本文介绍嵌入式系统中L CD 显示原理及驱动设计, 以三星公司A RM 9 内核芯片 S3C2410 的L CD 接口为基 础, 采用W IN CE P la tfo rm B u ilder3. 0 平台编译器, 使用320×240 分辨率的T FT 彩色L CD , 通过对其W IN CE 系统下 驱动程序编写和修改, 实现对屏幕的驱动和显示。
tion s 中的op en 操作。不同类型的文件有不同的file op era tion s 成员函数, 如普通的磁盘数据文件, 接口函数完成磁盘数据块读 写操作; 而对于各种设备文件, 则最终调用各自驱动程序中的 I O 函数进行具体设备的操作。这样, 应用程序根本不必考虑操作 的是设备还是普通文件, 可一律当作文件处理, 具有非常清晰统 一的 I O 接口。 所以 file op era tion s 是文件层次的 I O 接口。
vo id L cd EnvidO nO ff (in t onoff) { if (onoff= = 1) rL CDCON 1 = 1; ENV ID = ON e lse rL CDCON 1 = rL CDCON 1 & 0x3fffe; ENV ID O ff } 4. 2. 3 电源控制引脚使能函数及代码 vo id L cd Pow erEnab le (in t invpw ren, in t pw ren) {