动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息

本月文章推荐
.Spring+ibatis 数据化持久层(转.
.Effective Java读书笔记之四..
.多线程设计要点.
.使用 Struts 提供的 HTML 标签库.
.Java实现SOA的标准途径.
.用内嵌类减少 JAVA 程序设计中的.
.IntelliJ IDEA 5.1&nb.
.如何实现二维向量.
.Java集合的缺点:类型未知.
.JavaApplication启动画面的制作.
.Ant实战之Jar文件数字签名的制作.
.applet 的参数化 -- 对数组进行初.
.深入浅出基于Java的建造设计模式.
.Leopard新问题 不能用最新版Java.
.用NetBeans平台开发J2ME游戏实例.
.Java中鲜为人知的缺点(下).
.isPrototypeOf 方法.
.VisualCafé pro1.0--轻松Java编.
.Java编码规范.
.3D编程指南第二部分:光的3D理论.

在Linux下驱动STN彩色LCD

发表日期:2008-1-5 |



  伴随着高性能嵌入式处理器的飞速发展与普及,非凡是ARM处理器系列的出现,嵌入式系统的功能也变得越来越强大。以前的单色LCD已不能满足现今的各种多媒体应用,彩色LCD被越来越多地应用到嵌入式系统中。同时,在应用需求的促使下,许多工作在Linux下的图形界面软件包的开发和移植工作中都涉及到底层LCD驱动的开发问题。
  
  在硬件采用Intel ASSABET开发板,软件采用Linux 2.4.19平台,编译器为arm-linux-gcc的交叉编译器作为开发的前提下,因为ASSABET开发板上使用的是Sharp 3.9英寸320×240 TFT彩色LCD,现改用Kyocera 7.7英寸640×480 STN型彩色LCD,所以通过对其Linux驱动程序进行改写和调试,成功地实现了对该种屏的驱动和显示。
  
  LCD
  
  控制器
  LCD控制器的功能是显示驱动信号,进而驱动LCD显示器。在驱动LCD设计的过程中首要的是配置LCD控制器。在配置LCD控制器中最重要的一步则是帧缓冲区的指定。用户所要显示的内容皆是从缓冲区中读出,从而显示到屏幕上。帧缓冲区的大小由屏幕的分辨率和显示色彩数决定。驱动帧缓冲的实现是整个驱动开发过程的重点。
  
  ASSABET开发板采用SA1110作为处理器。SA1110微处理器是Intel公司生产的一种基于StrongARM环境的微处理器。该处理器内部有一LCD驱动控制器,可支持单、双屏显示和最大1024×1024dpi。每个像素数据以4、8、12或16位编码后存储于外部存储器内,通过LCD的专用DAM控制器,被装入至532位的FIFO中。在双屏显示时,两个DMA通道分别负责上下屏幕的显示,但只有第一个DMA通道有调色板缓冲器。帧缓冲器中的已编码像素数据是作为指针指向256×12位的调色板。调色板的色调数据控制着抖动逻辑,以产生各种灰度和彩色信号并从LCD数据引脚输出。
  
  显示屏
  LCD选择Kyocera公司的7.7英寸STN型LCD。该LCD可在640×480分辨率的情况下提供12位彩色显示。该屏为双屏扫描模式,具有两个8位的数据通道,每种基色都由4位的抖动逻辑来产生15级灰度,因此可以显示最多153=3375种可能的颜色。
  
  驱动LCD的设计
  
  帧缓冲设备
  帧缓冲设备为图像硬件设备提供了一种抽象化处理。它代表了一些视频硬件设备,答应应用软件通过定义明确的界面来访问图像硬件设备。这样软件无需了解任何涉及硬件底层驱动的东西(如硬件寄存器)。它答应上层应用程序在图形模式下直接对显示缓冲区进行读写和I/O控制等操作。通过专门的设备节点可对该设备进行访问,如/dev/fb*。
  
  Linux下可支持多个帧缓冲设备,最多可达32个,即从/dev/fb0到/dev/fb31。通常情况下,缺省的帧缓冲设备为/dev/fb0。
  
  在SA1110处理器的LCD控制器操作中,帧缓冲器用于存放全部屏幕的所有编码像素数据。在它的最低位地址处是32或512字节的缓冲器,用来存放调色板数据表。32位缓冲器用于4、12或16位像素编码的16项调色板;512字节缓冲器用于装入8位像素编码的256项调色板。在12或16位像素编码时,不使用调色板,此时的帧缓冲器的起始32字节必须填入全零。
  
  主要结构体
  
  strUCt fb_fix_screeninfo中记录了帧缓冲设备和指定显示模式的不可修改信息。它包含了屏幕缓冲区的物理地址和长度。
  
  struct fb_var_screeninfo中记录了帧缓冲设备和指定显示模式的可修改信息。它包括显示屏幕的分辨率、每个像素的比特数和一些时序变量。其中变量xres定义了屏幕一行所占的像素数,yres定义了屏幕一列所占的像素数,bits_per_pixel定义了每个像素用多少个位来表示。
  
  struct fb_info是Linux为帧缓冲设备定义的驱动层接口。它不仅包含了底层函数,而且还有记录设备状态的数据。每个帧缓冲设备都与一fb_info结构相对应。其中成员变量modename为设备名称,fontname为显示字体,fbops为指向底层操作的函数的指针。
  
  Linux内核配置与编译
  
  使用下面的命令启动Linux内核配置工具:
  #make menuconfig
  
  启动如下内核选项,选择对应的选项之后,执行下面的命令:
  
  Console drivers --->
  Frame-buffer support--->
  [*] Support for frame buffer devices (EXPERIMENTAL)
  [*] SA-1100 LCD support (NEW)
  [*] Advanced low level driver options (NEW)
  [*] 16 bpp packed pixels support (NEW)
  [*] Select compiled-in fonts (NEW)
  [*] VGA 88 font
  #make dep
  #make zImage
  
  驱动帧缓冲的设计
  帧缓冲设备属于字符设备,采用了“文件层-驱动层”的接口方式。Linux为帧缓冲设备定义的驱动层接口为struct fb_info结构。在文件层次上,Linux为其定义了下面的操作函数:
  
  static struct file_operations fb_fops = {
  owner: THIS_MODULE,
  read: fb_read, /* 读操作*/
  write: fb_write, /* 写操作*/
  ioctl: fb_ioctl, /* 控制操作*/
  mmap: fb_mmap, /* 映射操作*/
  open: fb_open, /* 打开操作*/
  release: fb_release, /*关闭操作*/
  };
  
  应用程序层对帧缓冲设备的访问同对文件的访问操作类似。在应用程序中,对帧缓冲设备(dev/fb)的操作只需调用文件层的操作函数。首先打开/dev/fb设备文件;随后用ioctl操作取得屏幕的分辨率和bpp值,从而计算出屏幕缓冲区的大小,并将屏幕的缓冲区映射到用户空间;最后就可直接对屏幕缓冲区进行图片显示。
  
  嵌入式Linux操作系统对帧缓冲的初始化入口在fbmem.c中的如下定义:
  
  static struct {
  const char *name;
  int (*init)(void);
  int (*setup)(char*);
  } fb_drivers[ ]__initdata = {
  #ifdef CONFIG_FB_YOURCARD
  { "driver_name", xxxfb_init, xxxfb_setup },
  #endif
  
  通过该入口可进入帧缓冲的初始化函数。下面是对整个帧缓冲的实现过程。
  
  首先,根据所选择的STN型LCD先初始化显示屏幕的分辨率(640×480)、每个像素的比特数(实际所选的LCD为12bpp,但在设计中可作为16bpp来设计。这是因SA1110的LCD控制器对两者处理方式相同而只有色彩深度的比例不同的缘故)和各种时序值。随后这些值将会被写入LCD控制器的控制寄存器LCCR0到LCCR3内,即完成对LCD控制器内一部分寄存器的配置。非凡的一点,因为所选的LCD是12bpp显示,所以rgBT色彩的深度比值应为4:4:4:0。
  
  其次对LCD进行显示缓冲区的分配。该过程由kmalloc函数实现动态分配一片连续的空间,需要分配的缓冲区大小为600K字节。缓冲区是在SDRAM中分配大容量的地址,存储器映射至SA1110内,其中上半屏起始地址保存到LCD控制器的寄存器DBAR1中,下半屏起始地址保存到DBAR2中。在此完全初始化一个fb_info结构,填充其中的各成员变量。之后进行中断处理请求和各种变量和调色板等的设置。然后注册驱动程序,通过调用register_framebuffer(&fb_info)实现将fb_info登记入内核。最后,启动GPIO9~2和LCD控制器。
  
  效果
  
  因为该设计将驱动作为内核的一部分,而不是模块加载的方式,所以需重新编译内核,并将新编译的Linux内核下载到开发板内。重新启动系统后,通过应用程序检测,可以使屏幕显示任意所需图片,表明了驱动LCD显示的设计已成功实现。
  
  在对嵌入式Linux系统进行驱动LCD的开发时,不仅涉及到对开发板的了解(非凡是微处理器和外围接口),还要求熟练配置Linux内核、把握Linux的整个系统启动过程和Linux下开发设备驱动程序过程,同时开发人员还需把握所开发的LCD技术资料。本文具体的介绍驱动LCD过程中驱动帧缓冲的设计。该设计的实现使得此LCD可应用在嵌入式开发的多种领域,因此具有实用价值。
上一篇:把您从麻烦中解脱的JNDI在J2EE中的角色 人气:398
下一篇:基于Linux技术的Sharp Zaurus SL-5600 人气:489
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-9-6 Movie34电影搜索引擎 v3.0
2008-9-6 wap2.0仿帝国建站喜用 v2.0
2008-9-6 免费人才招聘网 宽屏版 v3.01
2008-9-6 喜喔喔视频采集程序 v1.0 beta
2008-9-6 ASP客户管理系统
2008-9-6 主流驿站中秋祝福程序
2008-9-6 php实现msn协议的类
2008-9-5 Coppermine Photo Gallery v1.4.
2008-9-5 清松网络日记本 v2.4
2008-9-7 iBlacklist通话黑名单汉化破解补
2008-9-7 EndlessWalls无尽壁纸 v1.0.4破解
2008-9-7 Dynolicious车载测量仪v1.1破解版
2008-9-7 iVoodoo巫毒娃娃1.0.1破解版
2008-9-7 iWallpape精品墙纸1.2破解版
2008-9-7 iChillout自然音效工具1.1破解版
2008-9-7 Todo计划提醒1.2破解版
2008-9-7 allRadio电台集合1.01破解版
2008-9-7 My Money个人理财1.0破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | Html转换js | js/vbs加密 | md5加密 | 进制转换
实用工具:汉字翻译拼音 | 符号对照表 | 个税计算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵