软件学院大作业设计报告
课程名称: 嵌入式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,
四、实验步骤
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);
// end
set_irq_type(S3C2440_IRQ5,/*IRQT_FALLING*/IRQT_LOW);
local_irq_restore(flags);
ret = request_irq(S3C2440_IRQ5, s3c2440_IRQ3_fun, SA_INTERRUPT, "S3C2440_IRQ5", NULL);
if (ret)
{
printk("S3C2440_IRQ5 request_irq failure");
return ret;
}
printk(DEVICE_NAME " int05 initialized\n");
return 0;
}
设备退出:
static void __exit s3c2440_interrupt_exit(void)
{
free_irq(S3C2440_IRQ5,NULL);
pri