基于LINUX ARM9 触摸屏驱动程序设计嵌入式系统课程设计.docx
- 文档编号:27289236
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:31
- 大小:325.10KB
基于LINUX ARM9 触摸屏驱动程序设计嵌入式系统课程设计.docx
《基于LINUX ARM9 触摸屏驱动程序设计嵌入式系统课程设计.docx》由会员分享,可在线阅读,更多相关《基于LINUX ARM9 触摸屏驱动程序设计嵌入式系统课程设计.docx(31页珍藏版)》请在冰豆网上搜索。
基于LINUXARM9触摸屏驱动程序设计嵌入式系统课程设计
基于LINUXARM9触摸屏驱动程序设计嵌入式系统课程设计
第1章嵌入式linux触摸屏驱动程序设计...........................................................................................................1
1.1课程设计的目的.......................................................................................................................................1
1.2课程设计要求...........................................................................................................................................1
第二章课程设计平台构建与流程.........................................................................................................................2
2.1嵌入式系统开发平台构建........................................................................................................................2
2.1.1cygwin开发环境.........................................................................................................................2
2.1.2Linux开发环境...........................................................................................................................4
2.1.3EmbestIDE开发环境.................................................................................................................4
2.2触摸屏设计流程........................................................................................................................................4
2.3课程设计硬件结构与工作原理................................................................................................................5
2.3.1硬件结构概述.................................................................................................................................5
2.3.2触摸屏工作原理.............................................................................................................................6
第三章Bootloader移植与下载...............................................................................................................................8
3.1Vivi源代码的安装.....................................................................................................................................8
3.2Vivi源代码分析.........................................................................................................................................9
3.3Vivi源代码的编译与下载.........................................................................................................................9第四章Linux内核移植与下载.............................................................................................................................10
4.1Linux内核源代码的安装.........................................................................................................................11
4.2Linux内核源代码分析与移植.................................................................................................................12
4.3Linux内核编译与下载..........................................................................................................................12第五章触摸屏功能模块程序设计与交叉编译....................................................................................................14
5.1功能模块驱动程序设计..........................................................................................................................14
5.2触摸屏功能模块交叉编译.......................................................................................................................19第六章根文件系统建立与文件系统下载...........................................................................................................20
6.1Cramfs根文件系统分析...........................................................................................................................20
6.2文件系统映像文件生成.........................................................................................................................20
6.3功能模块运行与调试..............................................................................................................................22
第七章课程设计总结与体会...............................................................................................................................26
第1章嵌入式linux触摸屏驱动程序设计1.1课程设计的目的
在开发基于Linux的嵌入式系统前需要首先建立嵌入式系统的开发环境,并制定嵌入式系统上的Linux内核。
本课程设计的主要目的是:
1)进一步了解嵌入式开发工具链的构造过程;
2)掌握开发主机与嵌入式系统通信的方法;
3)通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术,提高阅读和修改程序的能力;
4)通过完成一个嵌入式linux系统开发的完整过程,使我们了解开发嵌入式linux应用系统的全过程,为今后学习打下基础,积累实际操作的经验。
1.2课程设计要求
1)理解基于Linux的嵌入式系统交叉开发环境,对嵌入式系统的开发流程有详细的了解;
2)掌握开发工具链的构建方法,能独立进行系统开发操作;
3)掌握Linux的常用命令,在linux系统下能熟练的使用这些常用命令;
4)熟悉linux内核的知识以及原理,掌握定制Linux内核的方法;
5)基于Linux操作系统,以及EmestIII实验箱,利用触摸屏返回触点坐标值及动作信。
坐标及动作的具体显示:
触摸笔动作,触点X坐标值,触点Y坐标值。
1
第二章课程设计平台构建与流程
2.1嵌入式系统开发平台构建
2.1.1cygwin开发环境
1、运行Cygwin安装程序setup.exe,然后选择“InstallfromLocalDirectory“,选择“下一步”,
2、选择Cygwin的安装目录,注意Cygwin的安装目录必须位于硬盘NTFS分区(且尽量不要使用系统C分区),否则会影响文件属性和权限操作,可能导致错误的结果。
选择Unix文本文件类型进行安装,直接选择“下一步”后,则会把Unix格式的cygwin系统安装到NTFS格式的D分区中,且安装目录为D:
\cygwin。
选择安装目录安装软件包存放目录。
3、选择Cygwin安装包所在的目录,可以是光盘也可以是本地硬盘分区。
如E:
/Cygwin。
选择“下一步”继续安装:
4、选择软件安装项目。
用鼠标单击在安装项目左边“Default”字样的位置,可以调整该软件项目的安装设置,可能出现的状态有四种:
Default---该项目根据默认状态处理,可能被安装,也可能不安装
Install---安装该项目
Reinstall---重新安装该项目
Uninstall---移除该项目
5、对于cygwin的软件项目,如果完全安装可能需要1GB以上空间,对于不想安装的项目可以选择状态为Default。
通常只选择Linux开发必要的选项即可,特别地需要全部安装以下项目:
Admin——包括启动服务cygrunsrv等工具,NFS启动必备
Archive——压缩解压工具集
Base——基本的Linux工具集
Devel——开发工具集,包括gcc、make等开发工具
Libs——函数库
Net——网络工具集
Shells——常用Shell工具集
Utils——包括bzip2等实用工具集
Cygwin软件包的选择(注意:
由于cygwin是Windows环境下虚拟的Linux开发环境,
2
一般在ALL处设置为Install状态,即全部安装。
所以要建立一个完整的Linux开发调试环境,加上存放编译工具和例程的空间,至少需要一个容量在2GB以上的分区。
软件包安装完成后,根据提示信息进行余下的操作,此后可以在PC机上运行Cygwin了。
6、安装cygwin安装程序之外的工具软件
1)cygwin环境下的NFS服务器安装
运行cygwin开发环境后,拷贝要安装的NFS服务器软件包nfs-server-2.2.47-2.tar.bz2到
cygwin/tmp目录下。
按以下进行步骤安装:
(1)解压安装包
$cd/?
一定要回到根目录下解压安装NFS服务器
$tarxvjf/tmp/nfs-server-2.2.47-2.tar.bz2
(2)配置NFSServer
$/usr/bin/nfs-server-config
执行nfs-server-config命令后会显示安装信息。
(3)设置主机访问控制
编辑文件/etc/hosts.allow
设置任何用户都可以访问nfs服务时,在文件中增加行:
nfsd:
ALL?
(文件中只增加这行即可)
也可以特别指定某个IP地址的用户访问nfs服务时,只需增加行如:
nfsd:
192.192.192.100?
(文件中只增加这行即可)
如果特别指定某个子网地址的用户访问nfs服务时,只需增加行如:
nfsd:
192.192.0.0/255.255.0.0?
(文件中只增加这行即可)。
编辑文件/etc/hosts.deny
如果Cygwin中没有其他网络服务,则注释本文件中的所有行。
(4)设置主机共享目录
编辑文件/etc/exports可以分行输入需要共享的路径及目录,共享一个/home/app目录增加类似以下的行:
/home/app192.192.192.0/255.255.255.0(rw,no_root_squash)
表示在192.192.192子网上共享/home/app目录,该目录可读写(rw)。
(5)启动NFS服务
用户可以在Cygwin下执行以下命令启动服务:
$>cygrunsrv-Sportmap
3
$>cygrunsrv-Snfsd
$>cygrunsrv-Smountd
也可以通过打开Windows控制面板?
管理工具?
服务,选择portmap、mountd和nfsd服务并启动,这等效以上三条启动命令。
启动之后可以使用以下命令检查服务是否成功运行。
$>/usr/sbin/showmount
如果输出报告是某服务启动失败,请直接回到根目录/重新安装NFSserver软件包。
2.1.2Linux开发环境
开发嵌入式Linux系统,其实最方便的还是构建一个标准的Linux开发环境,大大地方便Linux开发中的编译调试等工作。
同样地,EduKit2410的Linux开发也可以在标准Linux环境下进行,比如选择RedHat等优秀的系统。
由于时间关系,我们暂不提供标准Linux环境下的安装及使用手册。
2.1.3EmbestIDE开发环境
Linux的调试通常比较复杂,可以选择的调试环境也很多。
但由于Linux系统内核有包括全球在内的技术工程师的维护和测试,需要我们在应用产品开发时进行调试的情况比较少,而且通常需要完成的是比较简单的调试。
在我们编译调试好Linux的启动代码、内核和文件系统后,还需要把相应的映象文件固化到硬件系统上。
像这样的Linux开发需要可以在EmbestIDEforARM和EmbestJTAG仿真器组成的开发环境下进行。
构建EmbestIDE进行Linux调试环境的内容可以参考后面章节。
一般需要EmbestIDEforARM软件、EmbestonlineFlash
ProgrammerforARM、EmbestJTAG仿真器(标准型/增加型/通常型),以及进行调试时所需要的平台初始化文件(命令脚本文件)和烧写时平台配置文件(*.cfg)。
这些文件在随开发板提供的光盘里一并提供了。
2.2触摸屏设计流程
触摸屏设计流程图:
4
图2.2
2.3课程设计硬件结构与工作原理
2.3.1硬件结构概述
EmbestEduKit-III教学实验平台是一款功能强大的32位的嵌入式开发板,里面采用了SAMSUNG公司的以ARM7TDMI-S为内核的处理器S3C44B0X,同时可以兼容S3C2410,具有JTAG调试等功能。
板上提供了一些键盘、LED和串口等一些常用的功能模块,并且具有IDE硬件接口,CF存储卡接口、以太网接口和SD卡接口等等,对用户在32位ARM嵌入式领域进行开发实验非常方便。
EmbestEduKit-III教学实验平台主要功能模块如下:
图2.3.1ARM开发板功能模块
5
S3C2410开发板具有8通道模拟输入的10位CMOS模数转换器(ADC)。
它将输入的模拟信号转换为10位的二进制数字代码。
在2.5MHz的A/D转换器时钟下,最大转化速率可达到500KSPS。
A/D转换器是循环类型的,其支持片上采样和保持功能,并支持掉电模式。
S3C2410开发板的AIN[7]和AIN[5]用于连接触摸屏的模拟信号输入。
触摸屏接口电路一般
由触摸屏,4个外部晶体管和一个外部电压源组成。
触摸屏接口的控制和选择信号(nYPON,YMON,nXPON和XMON)连接切换X坐标和Y坐标转换的外部晶体管。
模拟输入引脚(AIN[7],AIN[5])则连接到触摸屏引脚。
触摸屏的AIN[7]连接触摸屏的X+引脚,而AIN[5]连接触摸屏的Y+引脚的。
要控制触摸屏的引脚(X+,X-,Y+,Y-),就要应用4个外部的晶体管,并采用控制的信号nYPON,YMON,nXPON
和XMON来控制晶体管的打开与关闭。
推荐如下的操作步骤:
1)采用外部晶体管连接触摸屏到S3C2410A的接口的电路。
2)选择分离的X/Y轴坐标转换模式或者自动(连续的)X/Y轴坐标转换模式来获取触摸点的X/Y坐标。
3)设置触摸屏接口为等待中断模式(注意,等待的是INT_TC中断)。
4)如果中断(INT_TC)发生,那么立即激活相应的AD转换(分离的X/Y轴坐标转换或者自动(连续的)X/Y轴坐标转换)。
5)在得到触摸点的X/Y轴坐标值后,返回到等待中断模式(第3步)。
注意:
1)外部电压源是3.3V。
2)外部晶体管的内部阻抗应该小于5ohm。
2.3.2触摸屏工作原理
触摸屏控制接口包括一个外部晶体管控制逻辑和具有中断产生逻辑的ADC接口逻辑。
1)普通转换模式
普通转换模式(AUTO_PST=0,XY_PST=0)是用作一般目的下的ADC转换。
这个模式可以通过设置ADCCON和ADCTSC来进行对AD转换的初始化;而后读取ADCDAT0(ADC数据寄存器0)的XPDATA域(普通ADC转换)的值来完成转换。
2)分离的X/Y轴坐标转换模式:
X轴坐标转换和Y轴坐标转换。
6
X轴坐标转换(AUTO_PST=0且XY_PST=1)将X轴坐标转换数值写入到ADCDAT0寄存器的XPDATA域。
转换后,触摸屏接口将产生中断源(INT_ADC)到中断控制器。
Y轴坐标转换(AUTO_PST=0且XY_PST=2)将X轴坐标转换数值写入到ADCDAT1寄存器的YPDATA域。
转换后,触摸屏接口将产生中断源(INT_ADC)到中断控制器。
3)自动(连续)X/Y轴坐标转换模式。
自动(连续)X/Y轴坐标转换模式(AUTO_PST=1且XY_PST=0)以下面的步骤工作:
触摸屏控制器将自动地切换X轴坐标和Y轴坐标并读取两个坐标轴方向上的坐标。
触摸屏控制器自动将测量得到的X轴数据写入到ADCDAT0寄存器的XPDATA域,然后将测量到的Y轴数据到ADCDAT1的YPDATA域。
自动(连续)转换之后,触摸屏控制器产生中断源(INT_ADC)到中断控制器。
4)等待中断模式
当触摸屏控制器处于等待中断模式下时,它实际上是在等待触摸笔的点击。
在触摸笔点击到触摸屏上时,控制器产生中断信号(INC_TC)。
中断产生后,就可以通过设置适当的转换模式(分离的X/Y轴坐标转换模式或自动X/Y轴坐标转换模式)来读取X和Y的位置。
5)静态(Standby)模式
当ADCCON寄存器的STDBM位被设为1时,Standby模式被激活。
在该模式下,A/D转换操作停止,ADCDAT0寄存器的XPDATA域和ADCDAT1寄存器的YPDATA(正常ADC)域保持着先前转换所得的值。
7
第三章Bootloader移植与下载
3.1Vivi源代码的安装
1、拷贝开发板光盘LinuxSource文件夹下的vivi-20030929.tar.bz2文件和Source\patch整个文件夹到$SOURCEDIR/目录下;
2、进入cygwin,Vivi源代码的安装:
$>source/tmp/edukit-2410/set_env_linux.shLinux编译环境变量设置
$>cd$WORKDIR
$>tar-xvjf/tmp/edukit-2410/vivi-20030929.tar.bz2
$>ls
„vivi„„为$WORKDIR目录下其他内容
正确解压后,可以看到相比之前多了一个vivi目录,即vivi源代码的安装目录,后面的vivi配置及编译都得进入vivi目录进行。
图3.2
3、再为EduKit2410实验系统打入vivi源代码的补丁文件:
$>cdvivi
$>patch-p1
patchingfileMakefile
patchingfilearch/config.in
„„为其他输出内容,无错误提示信息
8
3.2Vivi源代码分析
Vivi的代码包括:
arch、documentation、drivers、include、init、scripts、test、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于LINUX ARM9 触摸屏驱动程序设计 嵌入式系统课程设计 基于 LINUX 触摸屏 驱动程序 设计 嵌入式 系统 课程设计