免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1627 | 回复: 0
打印 上一主题 下一主题

基于ARM9处理器S3C2410的LCD显示系统 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-17 08:48 |只看该作者 |倒序浏览
基于ARM9处理器S3C2410的LCD显示系统
                                   
一 概述
   
S3C2410
是三星公司生产的基于ARM920T内核的RISC微处理器,其主频可达203MHz,适用于信息家电、PDA、手持设备、移动终端等领域。FS2410开发板采用的CPU是三星S3C2410,主频率为203MHZ,2M NOR Flash 和64M NAND Flash,板上集成了4线电阻式触摸屏接口的相关电路一个50芯LCD接口引出了LCD控制器的全部信号;支持STN 和TFT 屏,分辨率可达到1024*768象素。操作系统支持linux和wince。本文主要是采用FS2410平台控制3.5’lcd,速度快,稳定,可移植性好,可裁剪性好,是采用arm平台的优势。
二 lcd控制原理图
   本系统采用的lcd是3.5’TFT LCD,由于不是FS2410开发板标准配件,所以在 参数设置上会有所差异。具体参数要进行实验调整。
下图是整个采用arm平台控制lcd显示的系统原理框图:
   

   
三 控制lcd显示
   1 TFT-LCD模块的时序要求
本显示模块选用的74LVTH162245的TFT-LCD器件,该器件的分辨率为320*240,控制时序图和时间参数如图所示。74LVTH162245为S3C2410开发板中LCD控制IC。



2 硬件电路设计
在该显示系统的硬件电路中,S3C2410与LCD模块的连接是关键,S3C2410内部自带一个LCD驱动控制器,其接口可以与单色、灰度、彩色STN型和彩色TFT型的LCD直接相连,但需要根据所连接的LCD的类型设置相应寄存器中的显示模式。
74LVTH162245要求其电源电压Vdd典型值为3.3V/5V,并且LCD数据和控制信号的高电平输入电压Vih在2.3-5.5V范围内,低电平输入电压Vil则在-0.3-0.9V范围内,故可以直接与S3C2410相连,其电路图如图所示。



下图是开发板上核心板和底版lcd接口芯片通信图:
  3 系统软件设计
    S3C2410处理器中的LCD控制器内含寄存器LCDCOM1-LCDCON5。这些寄存器的具体设置如下:
(1)在LCDCON1中,CLKVAL是时钟参数,对于LQ080V3DG01,该域值取1。PNRMODE是显示模式参数,该域值取3,表示所用模块是TFT型,BPPMODE是每个象素的数据位数参数,设计时可设置成16bpp,所以此域值取12。

(2)在LCDCON2中,VBPD对应于表中的H参数,该域值取32。LINEVAL对应于表中的I参数,该域值取479,VFPD对应于表中的J参数,该域值取9,VSPW对应于表1中的G参数,该域值取1。

(3)在LCDCON3中,HBPD对应于表中的C参数,该域值取47。HOZVAL对应无于表中的D参数,该域值取639,HFPD对应于表中的E参数,该域值取15。

(4)在LCDCON4中只需要设置HSPW即可,它对应于表中的B参数,该域值取95。

(5)LCDCON5中,BPP24BL用于决定24bpp视频存储器的大小端模式,该域值取0,FRM565决定16bpp视频输入数据的格式。

在设计中,还可在基于S3C2410的硬件平台上安装嵌入式Linux操作系统。为了使LCD能够正常显示,还需要在嵌入式Linux系统下开发LCD的驱动程序。

Framebuffer是出现在Linux2.2.xx内核的一种驱动程序接口,对应的源文件在Linux/drivers/video/目录下,总的抽象设备文件为fbcon.c。这种接口将显示设备抽象为帧缓冲区,用户可以将它看成是显示内存的一个映象。在使用帧缓冲时,Linux将显卡置于图形模式下。

根据上面对LCD各主要寄存器设置的分析所得出的结果,开发了基于FrameBuffer机制的S3C2410fb驱动程序。下面是经过调试成功的部分代码,该程序可对显示屏幕进行初始化并设置LCD控制寄存器的值:
/*s3c2410fb.c*/
static struct s3c2410fb_mach_infoxxx_stn_info_initdata={
pixclock:174757,
bpp:16,
xres:640,
yres:480,
hsync_len:96,
vsync_len:2,
left_margin:40,
upper_margin:24,
right_margin:32,
lower_margin:11,
sync:0,
cmap_static:1。

reg:{

//设置LCD控制寄存器的值
Lcdcon1:LCD1_BPP_16T |LCD1_PNR_TFT|LCD1_CLKVAL(1),
lcdcon2:LCD2_VBPD(32)|LCD2_VFPD(9)|LCD2_VSPW(1),
lcdon3:LCD3_HBPD(47)|LCD3_HFPD(15),
lcdcon4:LCD4_HSPW(95)|LCD4_MVAL(13),
lcdcon5:LCD5_FRM565|LCD5_INVVLIEN|LCD5_INVVFRAME|LCD5_HW SWP|LCD5_PWREN,},
};
   在S3C2410  开发板自带bootloader中需要修改的参数和参数值如下:
#define VBPD_240320     (2)     //垂直同步信号的后肩   初始值:4
#define VFPD_240320     (12)     //垂直同步信号的前肩  初始值:4
#define VSPW_240320     (2)     //垂直同步信号的脉宽   初始值:3

#define HBPD_240320     (15)    //水平同步信号的后肩    初始值:13
#define HFPD_240320     (65)     //水平同步信号的前肩   初始值:4
#define HSPW_240320     (2)    //水平同步信号的脉宽     初始值:15

四 linux中的bootloader 和 kernel及移植bootloader 和kernel
   
嵌入式开发过程中,bootloader和kernel的裁剪和移植很重要。Bootloader就如同WINDOWS中的BIOS,而kernel就是核心。但是linux中的bootloader和kernel可以根据具体情况的要求进行不同程序的裁剪,以满足不同设计的要求。

下面主要介绍kernel裁剪和移植,bootloader的做法基本相同:

内核移植流程图




1 缺省配置内核config

缺省配置文件为s3c2410_defconfig/smdk_2410_defconfig,在目录:linux(内核根目录)/arch/arm/configs/ ;
命令:make smdk_2410_defconfig;                        
make s3c2410_defconfig ;  






2 手动配置内核config
命令:make menuconfig : 为菜单图形界面方式;



输入配置文件kernel_2410.config:


make xconfig : gui图形界面。
  
逐项配置命令:make config,回答y/n方式逐条配置内核。
//之后可以用命令 make 直接编译内核,生成镜象文件zImage 在/linux/arch/arm/boot/下面,vmlinux 在/linux/arch/arm/boot/compressed/下面 ,Image文件在 /linux/arch/arm/boot/下面。

3 编译镜象文件zImage
  命令: make zImage :
zImage 为可执行文件格式
完成后,zImage文件在/linux/arch/arm/boot/下面

4 编译模块modules
   命令:make modules

5 安装模块
   命令:make modules_install
//查看各个模块情况:路径为 arm_zznum/nfs/rootfs/modules/2.6.1…./kenel/

6 调试内核以及驱动程序
   命令:/linux:#  make integrator_defconfig
                Make zImage

7 用DNW将刚刚生成的内核映象下载到开发板上,上电启动开发板,就可以看到LCD显示进入系统界面了。


五 调整参数
   由于本次LCD并不是标准配件,在某些参数上可能与原配件存在差异,所以在系统可以正常启动的前提下,主要进行参数修改。主要要修改的参数有:
HBPD      水平同步信号的后肩
HFPD      水平同步信号的前肩
VBPD      垂直同步信号的后肩
VFPD      垂直同步信号的前肩
在原程序中修改参数,编译后下载到开发板,如此循环,直到LCD可以完全显示系统界面。另外,触摸屏在进入系统前要进行校准,只要准确点击在屏幕上出现的+五次,校准程序就可以通过并进入linux系统了。


六 8寸LCD  
在ARM开发系统中集成了lcd控制器,可以用此系统来控制各种不同型号和尺寸LCD显示图象,需要修改的就是控制参数,详细在第五节中已经讲述。大尺寸的LCD:8寸LCD同样在此范围内。


七 附录
   1 未调整参数前


启动画面不是在lcd的中央位置,偏向左侧

2 调整参数后


启动画面(调整参数后启动画面的图象显示在lcd的中央位置)





进入linux系统画面







系统整体图(图中标示出了各个部分的内容)
/*******************************************************************

本来想把图片做好,没想到传上来就这么小了。还看不清楚。没办法,大家见谅!
*******************************************************/


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/66913/showart_691289.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP