微机原理实验1复习过程.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
微机原理实验1 精品文档 精品文档 收集于网络,如有侵权请联系管理员删除 收集于网络,如有侵权请联系管理员删除 精品文档 收集于网络,如有侵权请联系管理员删除 成绩: 成绩: 课程设计大作业 课程名称: 嵌入式Linux程序设计案例与实验教程 设计题目: 触摸屏驱动程序 姓 名: 刘骐郡、闫佳瑞 专 业: 计算机科学与技术 班 级: 计算机13-9 学 号: 1304010910、1304010922 计算机科学与技术学院 实验教学中心 2016年 11 月 24 日 设计项目: 触摸屏驱动程序 功能描述 以一个简单字符设备驱动程序为原型,剖析其基本结构。进行部分改写之后并编译实现其 相应功能。了解在 UP-NETARM2410-S 平台上实现触摸屏 Linux 驱动程序的基本原理。了解 Linux 驱动开发的基本过程。 二、触摸屏的工作原理 1.硬件设计 ??? SPI接口是Motorola推出的一种同步串行接口,采用全双工、四线通信系统,S3C2410X是三星推出的自带触摸屏触摸屏接口的ARM920T内核芯片,ADS7843为Burr-Brown生产的一款性能优异的触摸屏触摸屏控制器。ADS7843与S3C2410的硬件连接如图1所示,鉴于ADS7843差分工作模式的优点,在硬件电路中将其配置为差分模式。 图1触摸屏输入系统示意图 2.嵌入式Linux系统下的驱动程序 ??? 设备驱动程序是Linux内核的重要组成部分,控制了操作系统和硬件设备之间的交互。Linux的设备管理是和文件系统紧密结合的,各种设备都以文件的形式存放在/dev目录下,成为设备文件。应用程序可以打开、关闭、读写这些设备文件,对设备的操作就像操作普通的数据文件一样简便。为开发便利、提高效率,本设计采用可安装模块方式开发调试触摸屏驱动程序。 设备驱动在加载时首先需要调用入口函数init_module(),该函数完成设备驱动的初始化工作。其中最重要的工作就是向内核注册该设备,对于字符设备调用register_chrdev()完成注册,对于块设备需要调用register_blkdev()完成注册。但是,应用程序却还不能“看见”它,因而还不能通过系统调用它。要使应用程序能“看见”这个模块或者它所驱动的设备,就要在文件系统中为其创建一个代表它的节点。通过系统调用mknod()创建代表此项设备的文件节点——设备入口点,就可使一项设备在系统中可见,成为应用程序可以访问的设备。另外,设备驱动在卸载时需要回收相应的资源,令设备的相应寄存器值复位并从系统中注销该设备。 内容和步骤 1.程序分析 剖析 UP-NETARM2410-S 平台上运行的触摸屏驱动程序(s3c2410-ts.c),该程序在 /arm2410s/kernel-2410s/drivers/char/s3c2410-ts.c,具体代码如下: #include asm/hardware.h #ifdef CONFIG_PM #include linux/pm.h #endif /* debug macros */ #undef DEBUG #ifdef DEBUG #define DPRINTK( x... ) printk(s3c2410-ts: ##x)   /*由于驱动主要是内核空间运行的,所以无法使用用户空间的相关库函数,这里不能用标准 C 库中的 ptintf 来打印调试信息,只能用内核支持的 printk 函数。*/ #else #define DPRINTK( x... ) #endif #define PEN_UP 0 //定义抬笔,即触摸屏不被压下。 #define PEN_DOWN 1 //定义下笔,即触摸屏被压下。 #define PEN_FLEETING 2 //定义拖动。 #define MAX_TS_BUF 16 //定义缓冲区大小位 16 字节。 #define DEVICE_NAME s3c2410-ts //定义了设备名以后我们就根据它来寻找该设备。 #define TSRAW_MINOR 1 //次设备号为 1。 typedef struct {  unsigned int penStatus; /*触摸屏状态: PEN_UP, PEN_DOWN, PEN_SAMPLE */  TS_RET buf[MAX_TS_BUF]; /* protect against overrun */ unsigned int head, tail; /* head and tail for queued events */ wait_

文档评论(0)

158****8111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档