




已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JIUJIANGUNIVERSITY毕业论文题目基于嵌入式技术的智能监控系统显示模块的驱动与应用开发英文题目DRIVEN/APPLICATIONDEVELOPMENTOFDISPLAYMODULEININTELLIGENTMONITORINGSYSTEMBASEDONEMBEDDEDTECHNOLOGY院系信息科学与技术学院专业计算机科学与技术姓名唐芳杰班级学号信A081150指导教师刘华中二一二年五月摘要基于嵌入式技术的智能监控系统在当今社会被广泛应用于办公以其家居和公共场所,其显示模块主要以LCD屏来进行显示,LCD也被广泛的应用与手机、平板电脑等场合。系统从整个架构上可以分为硬件和软件两部分,硬件部分在系统中关注的是S3C2410开发板和LCD屏,软件部分主要是UBOOT、LINUX操作系统与根文件系统。驱动与应用是基于LINUX内核上所进行的开发。系统主要对基于嵌入式技术的智能监控系统显示模块的驱动与应用进行开发,主要完成开发板上的LINUXARM嵌入式系统搭建,并开发LCD驱动,还做了智能监控系统显示模块相关的服务器搭建。系统采用嵌入式LINUX操作系统,在系统进行开发之前,首先需要搭建嵌入式系统开发环境。在搭建好嵌入式系统开发环境之后,再对显示模块的驱动进行开发,在内核中将显示模块的驱动进行加载,然后以开发板作为服务器端搭建服务器。最后在PC机上以客户端或者在服务器端本地进行显示操作。关键字嵌入式,智能监控系统,LCD显示屏ABSTRACTBASEDONEMBEDDEDTECHNOLOGYOFINTELLIGENTMONITORINGSYSTEMINTODAYSSOCIETYISWIDELYUSEDINOFFICEWITHITSHOUSEHOLDANDPUBLICPLACES,THEDISPLAYMODULEMAINLYTOLCDSCREENTOTHATLCDISWIDELYAPPLIEDWITHTHEMOBILEPHONE,TABLETCOMPUTERANDSOONFROMTHEWHOLEFRAMEWORKSYSTEMHARDWAREANDSOFTWARECANBEDIVIDEDINTOTWOPARTS,HARDWAREPARTOFOURATTENTIONISS3C2410DEVELOPMENTBOARDANDLCDSCREEN,SOFTWAREOFMAINISUBOOT,LINUXOPERATINGSYSTEMWITHROOTFILESYSTEMDRIVEANDAPPLICATIONISBASEDONTHELINUXKERNELOFTHEDEVELOPMENTSYSTEMMAINLYBASEDONEMBEDDEDTECHNOLOGYTOTHEINTELLIGENTMONITORINGSYSTEMDISPLAYMODULEDRIVERANDAPPLICATIONDEVELOPMENT,MAINLYONTHEBOARDFINISHDEVELOPMENTLINUXARMEMBEDDEDSYSTEMSETUP,ANDTHEDEVELOPMENTOFLCDDRIVE,ALSODOINTELLIGENTMONITORINGSYSTEMOFTHEDISPLAYMODULERELATEDSERVERSTRUCTURESTHESYSTEMUSESTHEEMBEDDEDLINUXOPERATINGSYSTEM,INTHISSYSTEMBEFOREDEVELOPMENT,WEFIRSTNEEDTOBUILDEMBEDDEDSYSTEMDEVELOPMENTENVIRONMENTINAPPARENTEMBEDDEDSYSTEMDEVELOPINGENVIRONMENT,THENTODISPLAYMODULEDRIVEROFDEVELOPMENT,WILLSHOWINTHEKERNELMODULESOFTHEDRIVEFORLOADING,ANDTHEN,WITHDEVELOPMENTBOARDTOSERVEASTHESERVERBUILDSERVERFINALLYINTHEPCTOTHECLIENTONTHESERVERORLOCALSHOWOPERATIONKEYWORDSEMBEDDED,INTELLIGENTMONITORINGSYSTEM,LCD目录摘要IABSTRACTII1绪论11选题背景112选题意义213课题国内外研究现状214论文主要工作315论文结构42系统总体架构设计21硬件架构设计522软件架构设计723本章小结83硬件原理分析31LCD屏工作时序分析932LCD控制器分析1033本章小结124驱动设计与开发41嵌入式ARMLINUX环境建立1342LCD驱动结构设计1743LCD驱动程序的开发2044LCD设备驱动的加载2645本章小结275显示模块在系统中的应用实现51搭建BOA服务器2852服务器端的实现2953客户端的实现3154本章小结326系统测试与维护61系统测试3362本章小结37总结38致谢40参考文献411绪论监控系统是用于指定场景区域进行监视,并把其视频信息传递给监控者,使其能根据情况采取适当的措施。监控技术是随着计算机技术、信息技术的发展而发展的,传统的监控系统包括模拟场景监控和数字视频监控。它们都能准确地反映被监控场景的情况,满足人们对安全性的需要。而且随着计算机视觉与人工智能技术发展,新一代的智能监控技术产生了。智能监控系统采用智能监控技术,与计算机视觉进行紧密的结合,从而实现了不需要人为干预,依靠计算机自动分析感知器记录的视频序列图像,对动态场景中运动目标的定位、识别与跟踪的目的,在此基础上分析和判断目标的行为,在发生异常时做出反应,它具有类似人一样的智能,能代替人完成一些监视任务1。智能化是视频监控技术的最高境界,监控系统由目视解释转化为自动解释是视频监控技术的飞跃,是安防技术发展的必然。随着先进理论的不断应用,智能监控系统将会在未来的安防领域中发挥更加重要的作用。11选题背景近些年来,智能监控技术在很多方面得到了广泛的应用(1)物业管理。据公安部2011年发布的不完全统计,60的刑事案件为入室盗窃,对此,人民越来越关注自身家居的安全性2。而智能监控系统发展到现在,只要在相关的硬件和软件便可实现。(2)交通管理。随着我国私家车的快速增长,城市交通管理也成为各大城市管理的一大难题。而智能监控系统能通过远程视频准确的了解各个街道的交通状态,从而充分利用现有的道路资源,提高交通管理的能力。(3)军事领域。我国是个幅员辽阔的大国,有着上万公里的海岸线和边界线,因此,及时的掌握边防区域的情况有着很重要的意义。通过建立智能监控系统,能提高情报获取的实时性和综合处理能力。12选题意义智能视频监控系统是计算机嵌入式领域一个新兴的应用方向和备受关注的前沿课题。伴随着网络技术和数字视频技术的飞速发展,监控技术正向着数字化、智能化、网络化方向不断前进3。智能视频监控系统的需求主要来自于那些对安全要求敏感的场合,如军队、银行、商店、停车场、居民小区、交通路口、商业大楼等。当盗窃、追赶、滞留等异常行为发生时,该类系统能够向保卫人员准确及时地发出警报,从而避免犯罪的发生,同时也减少了雇佣大批监视人员所需要的人力、物力与财力的投入4。13课题国内外研究现状智能视频监控系统发展了短短二十几年时间,从最早模拟监控到前些年火热数字监控再到现在方兴未艾网络视频监控,发生了翻天覆地变化。在IP技术逐步统一全球今天,从技术角度出发,智能视频监控系统发展划分为第一代模拟视频监控系统,到第二代基于“PC多媒体卡”数字视频监控系统,到第三代完全基于IP网络视频监控系统5。第一代视频监控是传统模拟闭路视频监控系统,依赖摄像机、缆、录像机和监视器等专用设备。例如,摄像机通过专用同轴缆输出视频信号。缆连接到专用模拟视频设备,如视频画面分割器、矩阵、切换器、卡带式录像机及视频监视器等。这存在大量局限性,有限监控能力只支持本地监控,受到模拟视频缆传输长度和缆放大器限制。有限可扩展性系统通常受到视频画面分割器、矩阵和切换器输入容量限制。录像负载重用户必须从录像机中取出或更换新录像带保存,且录像带易于丢失、被盗或无意中被擦除6。录像质量不高录像是主要限制因素。录像质量随拷贝数量增加而降低。第二代视频监控是当前“模拟数字”监控系统,“模拟数字”监控系统是以数字硬盘录像机DVR为核心半模拟半数字方案,从摄像机到DVR仍采用同轴缆输出视频信号,通过DVR同时支持录像和回放,并可支持有限IP网络访问,由于DVR产品五花八门,没有标准,所以这一代系统是非标准封闭系统,DVR系统仍存在大量局限,复杂布线“模拟数字”方案仍需要在每个摄像机上安装单独视频缆,导致布线复杂性7。有限可扩展性DVR典型限制是一次最多只能扩展16个摄像机。有限可管理性您需要外部服务器和管理软件来控制多个DVR或监控点。有限远程监视/控制能力您不能从任意客户机访问任意摄像机。您只能通过DVR间接访问摄像机。磁盘发生故障风险与RAID冗余和磁带相比,“模拟数字”方案录像没有保护,易于丢失。第三代视频监控是未来完全IP视频监控系统IPVS,全IP视频监控系统与前面两种方案相比存在显著区别。该系统优势是摄像机内置WEB服务器,并直接提供以太网端口。这些摄像机生成JPEG或MPEG4数据文件,可供任何经授权客户机从网络中任何位置访问、监视、记录并打印,而不是生成连续模拟视频信号形式图像8。全IP视频监控系统它巨大优势是简便性所有摄像机都通过经济高效有线或者无线以太网简单连接到网络,使您能够利用现有局域网基础设施9。您可使用5类网络缆或无线网络方式传输摄像机输出图像以及水平、垂直、变倍PTZ控制命令甚至可以直接通过以太网供。强大中心控制一台工业标准服务器和一套控制管理应用软件就可运行整个监控系统。易于升级与全面可扩展性轻松添加更多摄像机。中心服务器将来能够方便升级到更快速处理器、更大容量磁盘驱动器以及更大带宽等10。全面远程监视任何经授权客户机都可直接访问任意摄像机。您也可通过中央服务器访问监视图像11。坚固冗余存储器可同时利用SCSI、RAID以及磁带备份存储技术永久保护监视图像不受硬盘驱动器故障影响。14论文主要工作(1)针对S3C2410处理器的FS2410平台设计基于嵌入式技术智能监控系统方案;(2)针对S3C2410处理器和LCD屏硬件原理开发显示模块的驱动,并将驱动加载到已经准备安装到开发板上的LINUX内核中;(3)针对S3C2410开发平台,构建嵌入式交叉开发环境,移植UBOOT、LINUX内核,创建根文件系统;(4)构建嵌入式BOA服务器,通过客户端浏览器和视频服务器的交互来实现对服务器的相关设置,在客户端用浏览器或在服务器本地进行视频显示。15论文结构本论文重点介绍了智能监控系统显示模块的驱动与应用开发,包括相关硬件的原理分析、驱动设计等。全文共分六章第1章绪论,介绍了系统的开发背景及研究现状,本文所作的工作;第2章系统总体架构,主要介绍了系统硬件和软件的组成部分;第3章主要是硬件原理分析,分析了LCD屏的发展过程与硬件结构原理;第4章驱动设计分析,主要介绍了LINUX下驱动的设计及帧缓冲,及搭建环境的具体过程,然后从硬件原理分析设计出相关的驱动程序;第5章系统实现,主要介绍了BOA服务器的搭建及视频流的传输过程,并将LCD驱动应用到系统当中;第6章系统测试及维护,对整个系统进行验证,看本模块的功能是否支持整个系统的所需求的功能。2系统总体架构设计本系统的架构可以分为硬件和软件两部分,以下分别从硬件和软件两方面来进行阐述。系统总体架构如图21所示。图21系统总体架构图21硬件架构设计要完成本系统,我们就要关注本系统所要用到的硬件,在本系统中,主要用到的硬件为FS2410开发板和和TFT型LCD屏。(1)FS2410开发板FS2410采用SAMSUNGS3C2410A微处理器,它的处理器主频为203MHZ,系统采用的开发板由处理器、存储器、调试接口、I/O接口、按键、电源及其他的一些小配件组成。其硬件资源如表21所示。系统硬件软件FS2410LCD屏UBOOTLINUX操作系统根文件系统驱动程序应用程序表21FS2410开发板硬件资源表名称描述处理器SAMSUNGS3C2410,ARM9TDMI,主频203MHZ存储器64MBYTESNANDFLASHK9F12082MBYTESNORFLASHSST39VF1601EEPROMAT24C0264MBYTESSDRAM调试接口20芯标准JTAG接口I/O接口音频接口,立体声音频输入接口UDA134150芯LCD接口引出了LCD控制器和触摸屏的全部信号两个标准5线串行接口,波特率高达115200BPS10M网口CS8900Q3,带发送和接受指示灯内部实时时钟带后备锂电池一个USB11DEVICE接口两个USB11HOST接口SD卡接口按键复位按键16个小按键电源开关电源供电,输入直流电压范围是712V,带电源指示灯其他一个EEPROMAT24C02用来验证IIC总线读写四个高亮LED一个蜂鸣器带使能控制的短路块一个精密可调电阻接到ADC引脚上用来验证模数转换一个50芯2毫米间距双排标准连接器用作扩展口,引出了地址线、数据线、读写、片选、中断、IO口、ADC、5V和33V电源、地等用户扩展可能用到的信号(2)TFTLCD屏TFT技术是二十世纪九十年代发展起来的,采用新材料和新工艺的大规模半导体全集成电路制造技术,是液晶(LC)、无机和有机薄膜电致发光(EL和OEL)平板显示器的基础。TFT是在玻璃或塑料基板等非单晶片上(当然也可以在晶片上)通过溅射、化学沉积工艺形成制造电路必需的各种膜,通过对膜的加工制作大规模半导体集成电路(LSIC)。采用非单晶基板可以大幅度地降低成本,是传统大规模集成电路向大面积、多功能、低成本方向的延伸。在大面积玻璃或塑料基板上制造控制像元(LC或OLED)开关性能的TFT比在硅片上制造大规模IC的技术难度更大。对生产环境的要求(净化度为100级),对原材料纯度的要求(电子特气的纯度为99999985),对生产设备和生产技术的要求都超过半导体大规模集成,是现代大生产的顶尖技术。22软件架构设计软件架构设计从总体上可以分为三个部分UBOOT,LINUX操作系统与根文件系统,其中LINUX内核又可以分为驱动程序与应用程序两种。(1)UBOOT,全称UNIVERSALBOOTLOADER,是遵循GPL条款的开放源码项目。从FADSROM、8XXROM、PPCBOOT逐步发展演化而来。其源码目录、编译形式与LINUX内核很相似。UBOOT不仅仅支持嵌入式LINUX系统的引导,它还支持NETBSD,VXWORKS,QNX,RTEMS,ARTOS,LYNXOS嵌入式操作系统12。UBOOT在操作系统之前运行。它首先定义了一个入口,由于一个可以执行的镜像文件必须有一个入口点,并且只能有一个全局入口,通常这个入口放在ROM的0X0地址,因此,必须通知编译器以使其知道这个入口,该工作通过修改连接器脚本来完成。在定义完入口之后,设置异常向量,并设置CPU的速度、时钟频率和中断控制寄存器。然后初始化内存控制器,将ROM中的程序复制到RAM中,再初始化堆栈,最后跳转到RAM。在RAM中UBOOT调用一系列初始化函数,初始化FLASH设备和系统内存分配函数,如果目标用于NAND设备,再初始化该类设备,最后初始化相关网络设备,填写IP地址等,进入命令循环,接收用户从串口输入的命令,进行相应的工作初。(2)LINUX操作系统,它是是一款免费的操作系统,用户可以通过多种途径免费获得,并且可以任意修改其源代码。正是由于这一点,本系统才选择LINUX操作系统作为软件开发的系统。LINUX系统的内核完全开放,并且有强大的网络支持功能,它拥有一整套的工具链,很容易自行建立嵌入式系统的开发环境和交叉运行环境,并且拥有广泛的硬件支持特性。无论是RISC还是CISC、32位或者64位的处理器都能在LINUX下运行。LINUX还具有装载和卸载程序的能力,所有应用程序都以文件的方式存在文件系统中,在必要的时候被装载到内核中,以节省RAM。并且LINUX移植非常方便,适合各种的开发环境。LINUX操作系统是系统中重要的组成部分之一,它从功能上来说可以分为驱动程序与应用程序两部分,而LCD驱动也属于LINUX系统中驱动程序的一部分,所做的系统也是基于LINUX操作系统而开发的13。它将存储器与外设分为三类字符设备、块设备和网络设备。LCD驱动就属于字符设备,除网络设备外,字符设备与块设备都被映射到LINUX系统的文件和目录,都是通过文件系统的系统调用接口OPNE/WRITE/READ/CLOSE等访问字符设备和块设备。(3)根文件系统,由于系统选定的操作系统为LINUX,而LINUX操作系统支持多种文件系统,为了对各类文件系统进行统一的管理,LINUX引入了虚拟文件系统VFS,为各类文件系统提供统一的操作界面和应用编程接口。但是不同的文件系统有不同的特点,因此得根据存储设备的硬件特性、系统需求等有不同的应用场合。系统中所采用的根文件系统用BUSYBOX制作。根文件系统一直以来都是所有类UNIX操作系统的一个重要组成部分,也可以认为是嵌入式LINUX系统区别于其他一些传统嵌入式操作系统的重要特征,它给LINUX带来了许多强大和灵活的功能,同时也带来了一些复杂性。在做开发的时候需要清楚的了解根文件系统的基本结构,以及细心的选择所需要的系统库、内核模块和应用程序等,并配置好各种初始化脚本文件,以及选择合适的文件系统类型并把它放到实际的存储设备的合适位置。23本章小结本章从硬件和软件两方面来对整个系统的架构进行了设计。硬件方面系统所需的开发板配置与LCD屏。软件方面介绍了UBOOT、嵌入式操作系统与根文件系统的选择并进行了简单的说明介绍。3硬件原理分析在了解某一硬件怎么工作时,必须先分析该硬件的原理及构造。若不对该硬件原理进行了解,就不能真正满足系统所需求的驱动程序。因此深入了解硬件原理构造是硬件驱动开发的前途条件,本章主要从硬件原理对智能监控系统的显示模块进分析。31LCD屏工作时序分析TFT屏是目前嵌入式系统应用的主流,为TFTLCD屏的典型时序如图31所示。时序图中的VCLK、HSYNC和VSYNC分别表示像素时钟信号、行同步信号和帧同步信号,VDEN为数据有效标志信号,VD为图像的数据信号。VSYNCHSYNCVDEN1FRAME1LINEHSYNCVCLKVDVDEN图31TFTLCD屏工作时序图像素时钟信号VCLK每发出一个脉冲代表着一个新的像素的图像数据开始发送,作为行同步信号的HSYNC,每发出一个脉冲表明新的一行图像资料开始发送,而作为帧同步信号的VSYNC,每发出一个脉冲,就代表这有新的一帧图像数据开始发送。在帧同步信号以及行同步信号的头尾都必须留有回扫时间。这样的时序安排起源于CRT显示器电子枪偏转所需要的时间,但后来已经变成了实际上的工业标准,因此在TFTLCD屏中也包含了回扫时间。LCD控制器中应该设置的TFTLCD屏的参数如图32所示。其中上边界和下边界为帧切换的回扫时间,左边界和右边界为行切换的回扫时间,水平同步和垂直同步分别是行同步和帧同步本身所需要的时间。XRES为屏幕的水平分辨率,YRES为屏幕的垂直分辨率,系统所采用的分辨率为320240。上边界YREX左边界右边界垂直同步XREX下边界水平同步图32LCD控制器中的时序参数设置32LCD控制器分析LCD控制器的功能是产生显示驱动信号,驱动LCD显示器。用户只需要通过读写一系列的寄存器,完成配制和显示控制。S3C2410LCD控制器支持STN和TFT屏,对于TFT屏,其特性如下支持单色、4级灰度、256色的调色板显示模式。支持64K和16M色非调色板显示模式。支持分辨率为640480,320240及其他多种规格的LCD。S3C2410的LCD控制器内部逻辑结构如图33所示。REGBANK是LCD控制器的寄存器组,用来对LCD控制器的各项参数进行设置。而LCDCDMA则是LCD控制器专用的DMA信道,负责将视频资料从系统总线(SYSTEMBUS)上取来,通过VIDPRCS从VD230发送给LCD屏。同时TIMEGEN和LPC3600负责产生LCD屏所需要的控制时序(如VSYNC,HSYNC,VCLK,VDEN),然后从VIDEOMUX送给LCD屏。VCLK/LCD_HCLKVLINE/HSYNC/CPVVFRAME/VSYNC/STVVM/VDEN/TPSYSTEMBUSLCDVF03VD230LPC3600ISATIMINGCONTROLLOGICUNITFORLTS35Q1PD1ORLTS350Q1PD2图33S3C2410的LCD控制器内部逻辑结构通常使用的LCD控制管脚的定义如下VCLK像素时钟信号;VD230LCD像素输出端口;VM/VDEN/TPLCD驱动器的AC偏置信号STN数据使能信号TFTSECTFT源驱动器数据加载脉冲信号复用端口。S3C2410LCD控制器内部的寄存器可以控制LCD控制器接口的工作模式,LCD驱动编写的主要工作就是正确地设置所用LCD屏的CPU寄存器。S3C2410中REGBANKLCDCDMATIMEGENLPC3600VIDPRCSVIDEOMUX与LCD相对应的寄存器如表31所示,给出了各个寄存器的简要描述。(LCDCON15是最重要的控制寄存器,其详细说明可以参看S3C2410处理器的详细说明书)。表31LCD主要控制器LCD控制器LCDCON10X4D000000LCD控制器1LCDCON20X4D000004LCD控制器2LCDCON30X4D000008LCD控制器3LCDCON40X4D00000CLCD控制器4LCDCON50X4D000010LCD控制器5LCDSADDR10X4D000014帧缓冲区起始地址1LCDSADDR20X4D000018帧缓冲区起始地址2LCDSADDR30X4D00001C虚拟屏地址设置REDLUT0X4D000020STN红色查找表GREENLUT0X4D000024STN绿色查找表BLUELUT0X4D000028STN蓝色查找表DITHMODE0X4D00004CSTN抖动模式TPAL0X4D000050TFT临时调色板LCDINTPND0X4D000054LCD中断请求LCDSRCPND0X4D000058LCD中断源LCDINTMSK0X4D00005CLCD中断屏蔽LPCSEL0X4D000060WR/WLPC3600控制33本章小结本章主要介绍了LCD屏的发展及LCD一些工作原理,由于篇幅有限,并没有很详细的对LCD的硬件结构进行说明,只是对后面跟驱动开发有关的方面进行了一下说明。4驱动设计与开发设备驱动程序是操作系统内核和机器硬件之间的接口,设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件,应用程序可以像操作普通文件一样对硬件设备进行操作。设备驱动程序是内核的一部分,它主要完成的功能有对设备进行初始化和释放;把数据从内核传送到硬件和从硬件读取数据;读取应用程序传送给设备文件的数据、回送应用程序请求的数据以及检测和处理设备出现的错误。41嵌入式ARMLINUX环境建立411LCD驱动开发环境的搭建在开发LCD驱动之前必须要现在UBUNTU里面建立交叉编译工具。以下是制作交叉编译工具GCC345GLIBC236的具体步骤(1)安装CROSSTOOL工具依赖的软件包SUDOAPTGETINSTALLBUILDESSENTIALGAWKAUTOTOOLSDEVAUTOMAKETEXINFOLIBTOOLGCJCVSPATCHBISONFLEXCVSDLIBNCURSES5DEVSUDOAPTGETINSTALLGCC41然后SUDORM/USR/BIN/GCC(删除GCC,它只是个到GCC432的软链接文件)SUDOLNS/USR/BIN/GCC41/USR/BIN/GCC(建立GCC到GCC41的软链接(2)创建工作目录并拷贝相关的软件包MKDIR/HOME/FARSIGHT/DOWNLOADS把需要用到的工具包拷贝到DOWNLOADS目录中。用到的工具包有如下GCC345TARGZ;GLIBC236TARGZ;LINUX2614TARGZ;CROSSTOOL043TARGZ;BINUTILS215TARGZ;GLIBCLINUXTHREADS233TARGZ;LINUXLIBCHEADERS26120TARBZ2;GDB66TARBZ2将这些工具包拷贝到/HOME/FARSIGHT/DOWNLOADS里面。(3)解压软件包,修改脚本文件在DEMOARMSOFTFLOATSH里修改文件SETEXTARBALLS_DIRHOME/DOWNLOADS表示下载的源码的存放目录RESULT_TOP/OPT/CROSSTOOL表示生成的工具链的存放目录EXPORTTARBALLS_DIRRESULT_TOP在EVALCATARMSOFTFLOATDATGCC345GLIBC236DATSHALLSHNOTEST后加GDB由于交叉编译器是编译2614的内核,那么在GCC345GLIBC236DATA中修改LINUX_DIRLINUX2614,并添加GDB调试功能。在ARMSOFTFLOATDAT文件中修改TARGETARMLINUXGNU,在ALLSH文件里面修改TOOLCOMBO345,将PREFIXPREFIXRESULT_TOP/TOOLCOMBO。(4)执行/DEMOARMSOFTFLOATSH进行编译,得到交叉编译工具。412制作BOOTLOADER工具在制作好交叉编译工具之后,用交叉编译工具编译UBOOT得到BOOTLOADER工具。具体步骤如下(1)进入UBOOT所在目录下的BOARD/SAMSUNG/,CPSMDK2410FS2410A;(2)进入FS2410目录,MVSMDK2410CFS2410C;(3)在MAKEFILE下修改,COBJSFS2410FLASHO;(4)回到顶层MAKEFILE里面修改增加的内容,并修改交叉编译工具为ARMLINUXGNU;(5)在INCLUDE/CONFIGS/FS2410H中设置内核加载地址、NORFLASH支持与NANDFLASH支持,然后编译UBOOT得到UBOOTBIN;(6)利用HJTAG将UBOOT烧写在FS2410开发板上的NANDFLASH上;(7)打开开发板,进入命令状态设置环境变量,设置好之后重启开发板则得到了BOOTLOADER工具。413LINUX内核的移植在BOOTLOADER制作好之后,我们就可以对内核进行编译,具体步骤如下(1)在/HOME/FARSIGHT目录,将LINUX源代码解压至该目录下,本课题用到的内核为LINUX2614内核;(2)对内核进行最初始的配置,在内核中修改映射地址与平台信息;(3)编译内核,在ARCH/ARM/BOOT目录下将会生成ARMLINUX内核镜像文件UIMAGE,将其拷贝到根目录文件下的TFTPBOOT文件夹下。414根文件系统的制作在内核编译完成的情况下可以制作根文件系统,并通过NFS服务器进行挂接,具体步骤是(1)从网下下载一个BUSYBOX1173TARGZ,在UBUNTU里面进行解压操作;(2)配置源码,通过MAKEMENUCONFIG来配置,在BUSYBOXSETTINGS选项里的BUILDOPTIONS选择BUILDBUSYBOXASASTATICBINARYNOSHAREDLIBS,并在CROSSCOMPILERPREFIX选项里填入交叉编译工具的链接路径;(3)MAKE编译;(4)安装BUSYBOX,MAKEINSTALL,则在BUSYBOX默认安装路径下生成一个_INSTALL文件夹,此文件夹里面会生产四个最初始的四个文件夹BIN、LINUXRC、SBIN、USR;(5)添加其他所需目录,MKDIRDEVETCMNTPROCVARTMPSYSROOTLIB;(6)添加库文件,CP/HOME/FARSIGHT/CROSSTOOL/ARMNONELINUXGNU/LIB/SO/LIB/A;(7)添加系统启动文件,VIMINITTAB,在INITTAB中添加如下内容;THISISRUNFIRSTEXCEPTWHENBOOTINGINSINGLEUSERMODESYSINIT/ETC/INITD/RCS/BIN/SHINVOCATIONSONSELECTEDTTYSSTARTAN“ASKFIRST“SHELLONTHECONSOLEWHATEVERTHATMAYBEASKFIRST/BIN/SHSTUFFTODOWHENRESTARTINGTHEINITPROCESSRESTART/SBIN/INITSTUFFTODOBEFOREREBOOTINGCTRLALTDEL/SBIN/REBOOT(8)在ETC下添加FSTAB,VIMFSTAB,在FSTAB中添加如下内容DEVICEMOUNTPOINTTYPEOPTIONSDUMPFSCHORDERPROC/PROCPROCDEFAULTS00TMPFS/TMPTMPFSDEFAULTS00SYSFS/SYSSYSFSDEFAULTS00TMPFS/DEVTMPFSDEFAULTS00(9)因为LINUX系统挂载的文件系统有三个PROC、SYSFS、TMPFS,在LINUX内核中PROC和SYSFS默认都支持,而TMPFS是没有支持的,因此需要检查内核中有没有支持TMPFS,如果没有则需要在FILESYSTEM菜单下的PSEUDOFILESYSTEM下的VIRTUALMEMORYFILESYSTEMSUPPORTFROMSHMFS选项和TMPFSPOSIXACCESSCONTROLLISTS选项加入编译模块,然后进行重新编译;(10)在ETC文件夹下建立INITD目录,并在该目录下创建RCS文件,并添加如下内容/BIN/SHTHISISTHEFIRSTSCRIPTCALLEDBYINITPROCESS/BIN/MOUNTA并对RCS文件加上读写和可执行的权限;(11)在ETC文件夹下创建PROFILE文件,在文件中添加如下内容/BIN/SHEXPORTHOSTNAMEFARSIGHTEXPORTUSERROOTEXPORTHOMEROOTEXPORTPS1“USERHOSTNAMEW“PATH/BIN/SBIN/USR/BIN/USR/SBINLD_LIBRARY_PATHLIB/USR/LIBLD_LIBRARY_PATHEXPORTPATHLD_LIBRARY_PATH(12)在DEV文件夹下创建CONSOLE节点,SUDOMKNODDEV/CONSOLEC51;(13)将做好整个_INSTALL文件夹拷贝到/OPT/文件中并重命名为FILESYSTEM;至此,整个开发板上的根文件系统就制作好了,将其挂载到开发板上,通过NFS服务器进行测试。42LCD驱动结构设计LINUX将设备分为最基本的三大类一类是字符设备,一类是块设备,还有一类是网络设备。字符设备和块设备的主要区别是在对字符设备发出读/写请求时,实际的硬件I/O一般就紧接着发生了。字符设备以单个字节为单位进行顺序读写操作,通常不使用缓冲技术;块设备则是以固定大小的数据块进行存储和读写的,如硬盘、软盘等,并利用一块系统内存作为缓冲区。为提高效率,系统对于块设备的读写提供了缓存机制,由于涉及缓冲区管理、调度和同步等问题,实现起来比字符设备复杂得多。LCD是以字符设备方式加以访问和管理的,LINUX把显示驱动看做字符设备,把要显示的数据一字节一字节地送往LCD驱动器。LINUX的设备管理是和文件系统紧密结合的,各种设备都以文件的形式存放在/DEV目录下,称为设备文件。应用程序可以打开、关闭和读写这些设备文件,完成对设备的操作,就像操作普通的数据文件一样。为了管理这些设备,系统为设备编了号,每个设备号又分为主设备号和次设备号。主设备号用来区分不同种类的设备,而次设备号用来区分同一类型的多个设备。对于常用设备,LINUX有约定俗成的编号,如硬盘的主设备号是3。LINUX帧缓冲设备驱动的主要结构设计如图41所示,帧缓冲设备提供给用户空间的FILE_OPERATIONS结构体由FBMEMC中的FILE_OPERATIONS提供,而特定帧缓冲设备FB_INFO结构体的注册、注销以及其中成员的维护,尤其是FB_OPS中成员函数的实现则由对应的XXXFBC文件实现,FB_OPS中的成员函数最终会操作LCD控制器硬件寄存器。图41帧缓冲设备的驱动结构LINUX为所有的设备文件都提供了统一的操作函数接口,方法是使用数据结构STRUCTFILE_OPERATIONS。这个数据结构中包括许多操作函数的指针,如OPEN、CLOSE、READ和WRITE等,但由于外设的种类较多,操作方式各不相同。STRUCTFILE_OPERATIONS结构体中的成员为一系列的接口函数,如用于读/写的READ/WRITE函数和用于控制的IOCTL等。打开一个文件就是调用这个文件FILE_OPERATIONS中的OPEN操作。不同类型的文件有不同的FILE_OPERATIONS成员函数,如普通的磁盘数据文件,应用程序FILE_OPERATIONFB_READ/FB_WRITE/FB_MMAP/FB_IOCTLFB_INFOREGISTER_FRAMEBUFFERUNREGISTER_FRAMEBUFFERLCD控制器接口函数完成磁盘数据块读写操作;而对于各种设备文件,则最终调用各自驱动程序中的I/O函数进行具体设备的操作。这样,应用程序根本不必考虑操作的是设备还是普通文件,可一律当作文件处理,具有非常清晰统一的I/O接口。所以FILE_OPERATIONS是文件层次的I/O接口。此次设计LINUXTFTLCD驱动就是基于帧缓冲设备编写。帧缓冲(FRAMEBUFFER)是LINUX系统为显示设备提供的一个接口,它将显示缓冲区抽象,屏蔽图像硬件的底层差异,允许上层应用程序在图形模式下直接对显示缓冲区进行读写操作。用户不必关心物理显示缓冲区的具体位置及存放方式,这些都由帧缓冲设备驱动本身来完成。对于帧缓冲设备而言,只要在显示缓冲区中与显示点对应的区域写入颜色值,对应的颜色会自动在屏幕上显示。LINUXFRAMEBUFFER设备是标准字符设备,主设备号为29,次设备号则从0到31。帧缓冲设备对应的设备文件为/DEV/FB,如果系统有多个显示卡,LINUX下还可支持多个帧缓冲设备,最多可达32个,分别为/DEV/FB0到/DEV/FB31,而/DEV/FB则为当前缺省的帧缓冲设备,通常指向/DEV/FB0。此次设计为嵌入式系统,支持一个显示设备就够了。FRAMEBUFFER设备在很大程度上依靠了下面的3个数据结构,在FBH中声明STRUCTFB_VAR_SCREENINFOSTRUCTFB_FIX_SCREENINFOSTRUCTFB_INFO第1个结构是用来描述图形卡的特性的,通常是被用户设置记录帧缓冲设备和指定显示模式的可修改信息。它包括显示屏幕的分辨率、每个像素的比特数和一些时序变量。其中变量XRES定义了屏幕一行所占的像素数,YRES定义了屏幕一列所占的像素数,BITS_PER_PIXEL定义了每个像素用多少个位来表示。第2个结构定义了图形卡的硬件特性,它包含了屏幕缓冲区的物理地址和长度,是不能改变的,用户选定了LCD控制器和显示器后,那么它的硬件特性也就定下来了。第3个结构中是LINUX为帧缓冲设备定义的驱动层接口。它不仅包含了底层函数,而且还有记录设备状态的数据。每个帧缓冲设备都与一个FB_INFO结构相对应。其中成员变量MODENAME为设备名称,FONTNAME为显示字体,FBOPS为指向底层操作的函数的指针。帧缓冲设备中所有的信息,包括设备的设置参数、状态及操作函数指针,并且定义了当前图形卡FRAMEBUFFER设备的独立状态,一个图形卡可能有两个FRAMEBUFFER,在这种情况下,就需要两个FB_INFO结构,这个结构是惟一内核空间可见的。43LCD驱动程序的开发首先要定义并初始化了LCD平台设备驱动结构体,并把设备驱动结构体注册到内核的平台设备总线上。STATICSTRUCTDEVICE_DRIVERS3C2410FB_DRIVERNAME“S3C2410LCD“,BUSINT_DEVINITS3C2410FB_INITVOIDRETURNDRIVER_REGISTER完成平台设备和平台设备驱动的定义和注册后,便要开始执行LCD设备驱动的PROBE函数,即S3C24XXFB_PROBESTRUCTPLATFORM_DEVICEPDEV,ENUMS3C_DRV_TYPEDRV_TYPE该函数的参数STRUCTPLATFORM_DEVICEPDEV,即内核传递过来的LCD平台设备的指针,它指向DEVSC文件中定义初始化的LCD控制器设备的平台设备的结构体STRUCTPLATFORN_DEVICES3C_DEVICE_LCD。ENUMS3C_DRV_TYPEDRV_TYPE参数为芯片型号,内核驱动中提供了两种芯片2410和2412,这里我们使用的是2410。在S3C24XXFB_PROBE函数里面完成帧缓冲变量STRUCTS3C2410FB_INFO初始化后,就开始调用FBMEMC提供的接口函数REGISTER_FRAMEBUFFER注册一个帧缓冲STRUCTFB_INFOFBINFO到LCD控制器的帧缓冲层。RETREGISTER_FRAMEBUFFERFBINFO至此,我们已基本完成底层的一些操作,接下来定义帧缓冲设备与应用层的文件操作接口STRUCTFILE_OPERATIONSFB_FOPSSTATICSTRUCTFILE_OPERATIONSFB_FOPSOWNERTHIS_MODULE,READFB_READ,WRITEFB_WRITE,IOCTLFB_IOCTL,IFDEFCONFIG_COMPATCOMPAT_IOCTLFB_COMPAT_IOCTL,ENDIFMMAPFB_MMAP,OPENFB_OPEN,RELEASEFB_RELEASE,IFDEFHAVE_ARCH_FB_UNMAPPED_AREAGET_UNMAPPED_AREAGET_FB_UNMAPPED_AREA,ENDIF向内核中注册帧缓冲区字符设备。STATICINT_INITFBMEM_INITVOIDCREATE_PROC_READ_ENTRY“FB“,0,NULL,FBMEM_READ_PROC,NULLDEVFS_MK_DIR“FB“IFREGISTER_CHRDEVFB_MAJOR,“FB“,FB_CLASSCLASS_CREATETHIS_MODULE,“GRAPHICS“IFIS_ERRFB_CLASSPRINTKKERN_WARNING“UNABLETOCREATEFBCLASSERRNOLDN“,PTR_ERRFB_CLASSFB_CLASSNULLRETURN0FBMEMC处于LCD驱动技术的中心位置,它为上层应用程序提供系统调用也为下一层的特定硬件驱动提供接口,那些底层硬件驱动需要用到这儿的接口来向系统内核注册它们自己FBMEMC为所有支持帧缓冲设备驱动提供了通用的接口,避免重复工作。它里面有两个很重要的全局变量STRUCTFB_INFOREGISTERED_FBFB_MAX和INTNUM_REGISTERED_FB。这两变量记录了所有FB_INFO结构的实例,FB_INFO结构描述显卡的当前状态,所有设备对应的FB_INFO结构都保存在这个数组中,当一个FRAMEBUFFER设备驱动向系统注册自己时,其对应的FB_INFO结构就会添加到这个结构中,同时NUM_REGISTERED_FB为自动加1。并实现了如下函数REGISTER_FRAMEBUFFERSTRUCTFB_INFOFB_INFOUNREGISTER_FRAMEBUFFERSTRUCTFB_INFOFB_INFO这两个是提供给下层FRAMEBUFFER设备驱动的接口,设备驱动通过这两函数向系统注册或注销自己。几乎底层设备驱动所要做的所有事情就是填充FB_INFO结构然后向系统注册或注销它。应用程序通过内核对FRAMEBUFFER的控制主要有下面三种方式读/写/DEV/FB相当于读/写屏幕缓冲区映射(MAP)操作通过映射操作,可将屏幕缓冲区的物理地址映射到用户空间的一段虚拟地址中,之后用户就可以通过读写这段虚拟地址访问屏幕缓冲区,在屏幕上绘图。I/O控制对应帧缓冲设备,设备文件的IOCTL操作可读取设置显示设备及屏幕的参数,如分辨率、显示颜色数、屏幕大小等等。IOCTL的操作是由底层的驱动程序来完成的。以下是帧缓冲读操作的核心代码WHILECOUNTCCOUNTPAGE_SIZEPAGE_SIZECOUNT/每次操作不能大于PAGE_SIZE/DSTBUFFERFORIC2I/一次性读四个字节/DSTFB_READLSRCIFCU8_IOMEMSRC8U8_IOMEMSRCFORICIDST8FB_READBSRC8SRCU32_IOMEMSRC8IFCOPY_TO_USERBUF,BUFFER,CERREFAULTBREAKPPOSCBUFCCNTCCOUNTC综上所述,FRAMEBUFFER驱动要完成的工作已经很少了,只需分配显存的大小,初始化LCD控制寄存器、设置修改硬件设备相应的VAR信息和FIX信息。应用程序如何写帧缓冲设备来显示图形的全过程如图42所示。失败成功应用程序打开一个帧缓冲设备调用文件层函数FB_MMAP等对帧缓冲设备对应的地址空间进行写LCD控制将帧缓冲设备地址空间的数据显示在LCD面板上结束调用驱动层函数获取设备特性FB_GET_FIX等图42应用程序调用驱动的过程我们可以以一个用LCD画圆的程序的主函数来具体进行说明INTMAININTFDUNSIGNEDINTI0UNSIGNEDINTCOLOR,BGCOLORLONGINTSCREENSIZEBGCOLOR0COLOR0X0000FF00IFFDOPEN“/DEV/FB0“,O_RDWR0/打开帧缓冲设备,默认为FB0PERROR“FAILTOOPEN“RETURN0IFIOCTLFD,FBIOGET_FSCREENINFO,RETURN0IFIOCTLFD,FBIOGET_VSCREENINFO,RETURN0SCREENSIZEVINFOXRESVINFOYRESVINFOBITS_PER_PIXEL/8/获得屏幕大小FBPUNSIGNEDCHARMMAP0,SCREENSIZE,PROT_READ|PROT_WRITE,MAP_SHARED,FD,0/进行内存映射FORI0ISCREENSIZEIVINFOBITS_PER_PIXEL/8MEMCPYFBPI,/从显存中拷贝数据USLEEP10000DRAWCIRCLE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 感谢公司的发言稿
- 如何起草培训合同
- 分数乘整数课件
- IBM产品差异化模型$appeals
- 2025版轻钢屋顶绿化工程合同协议
- 二零二五年门卫室承包与智慧城市建设合作协议
- 2025版电商平台会员销售与直播带货合作协议
- 二零二五年矿山环保工程居间服务合同
- 2025版农业科技创新与应用推广承包合同协议书
- 二零二五版国有企业职工集资建房买卖合同协议
- 2025至2030中国教辅书行业市场发展现状及前景趋势与企业案例报告
- 2026版步步高大一轮高考数学复习讲义第三章 进阶篇 不等式恒(能)成立问题 进阶2 参数半分离与主元变换含答案
- 女职工关爱室管理制度
- 中国NAD+ 增强剂行业市场占有率及投资前景预测分析报告
- 膝骨关节炎针刀临床诊疗指南
- 物业管理质量保障措施
- 权责清单培训实施纲要
- GB/T 2099.31-2025家用和类似用途插头插座第31部分:装有USB电源的插座的特殊要求
- 影像学辅助护理试题及答案
- 特种气体系统工程技术规范
- 老年髋部骨折诊疗与管理指南
评论
0/150
提交评论