嵌入式Linux应用程序开发实验报告-期末作业.doc

嵌入式Linux应用程序开发实验报告-期末作业.doc

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式Linux应用程序开发实验报告-期末作业

软件学院大作业设计报告 课程名称: 嵌入式Linux应用程序开发 题 目: 基于UP-CUP2440平台的驱动程序开发和QT程序开发 专 业: 计算机软件 班 级: 计算机软件 111 班 姓名 学号:鲁 飞8000611038 卢惠民8000611021 戚成林8000611032 慕一聪8000611018 刘 备8000611006 任课教师: 李岚 职称: 副教授 完成时间: 2014年6月11日 目 录 一、小组成员分工 2 二、实验任务 2 三、主要仪器设备及耗材 3 四、实验步骤 3 一、驱动 3 1.基本知识: 3 2.实验原理: 4 3.具体实现: 4 二、QT计算器 9 1.QT程序设计 9 2.虚拟机下进行编译: 15 3.下载到开发板上运行: 17 六、实验数据及处理结果 18 七、思考讨论题或体会或对改进实验的建议 18 八、参考资料: 20 一、小组成员分工 分工: 鲁飞:QT设计与设计报告 卢惠民:QT设计与设计报告 戚成琳:驱动与设计报告 慕一聪、刘备:设计报告 二、实验任务 1.编写基于UP-CUP2440硬件平台的GPIO驱动程序 必选功能:使中断按键按下后,开发板上的LED灯能作如下闪动: 连续性闪动,跑马灯:如:1-2-3-1-2-3…或 3-2-1-3-2-1 间隔性闪动:如: 1-3-2-1-3-2…或 3-1-2-3-1-2… 进阶功能:改变中断按键的控制功能,使中断按键按下后,LED灯不断闪亮,再次按下后,LED灯灭。 2.QT计算器 三、主要仪器设备及耗材 PC,Windows Xp,H-JTAG,H-Flasher,DNW,开发实验箱。 四、实验步骤 一、驱动 思路: 前后台思想: 在中断模块中设置一个计数的变量,每一次中断计数器加一。 然后在GPIO驱动模块的ioctl()函数中分情况使跑马灯按要求闪动或熄灭。 1.基本知识: 设备驱动程序可以使用模块的方式动态加载到内核中去。 模块的必需组成部分: 模块加载函数,insmod时调用。 模块卸载函数,rmmod时调用 模块许可证LICENSE说明 数据结构file_operation中定义驱动程序会使用的函数。 在获得了系统分配的设备号之后,必须要通过注册才能实现设备号和驱动程序之间的关联。 打开设备和释放设备,没什么要特别注意的。 读写设备:把内核空间的数据复制到用户空间去,或者从用户空间复制到内核空间。 read()里面使用copy_to_user()就可以将内核空间的值传到用户空间去。这一点在本实验的驱动程序的实现中起着至关重要的作用。 ioctl()则是对IO寄存器的控制,在本实验中就要用ioctl()来实现不同的跑马灯亮灭。 2.实验原理: 3.具体实现: (一)中断驱动模块: 该模块只需在老师给的实例的基础上加以修改就行。 (1)模块初始化函数中,请求中断处理函数: ret = request_irq(S3C2440_IRQ5, s3c2440_IRQ3_fun, SA_INTERRUPT, S3C2440_IRQ5, NULL); 中断处理函数为: s3c2440_IRQ3_fun() 在此中断处理函数中,用一个全局变量count在每一次中断的时候加1,由于我们的开发板按一次会处理两次,所以计数到7的时候,必须使count恢复到1。 具体实现如下: int count=0; irqreturn_t s3c2440_IRQ3_fun (int irq, void *dev_id, struct pt_regs *reg) { printk(enter interrupt 5 !\n); count++; if(count==7) count=1; } 设备初始化: static int __init s3c2440_interrupt_init(void) { int ret; int flags; local_irq_save(flags); // by sprife s3c2410_gpio_cfgpin( S3C2410_GPF5, S3C2410_GPF5_EINT5); s3c2410_gpio_pullup(S3C2410_GPF5,1

文档评论(0)

dashewan + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档