嵌入式驱动开发实验指导书
嵌入式驱动开发实验指导书
《嵌入式驱动开发》实验
嵌入式驱动开发实验指导书
实验一
实验题目:Linux计算器应用程序及hello驱动程序
实验目的:掌握Linux常用操作命令、熟悉使用vi编程、掌握gcc/makefile编译基本方法 实验类型:设计 实验要求:必修 仪器设备:计算机 实验内容、方法、步骤:
一、编写一个计算器程序,实现菜单显示、加减乘除功能。 要求:1)基于Linux平台开发 2)使用vi编辑器编写 3)使用gcc编译 一.课搭建samba服务器
嵌入式驱动开发实验指导书
嵌入式驱动开发实验指导书
二.c编程练习(将10个数放入数组,找出最大的一个数,并输出)
嵌入式驱动开发实验指导书
二、 编写hello驱动程序,编译后,进行加载、卸载驱动模块以对驱动进行测试。 一.hello.c驱动程序
嵌入式驱动开发实验指导书
实验二
实验题目:简单的字符设备驱动程序
实验目的:掌握Makefile文件编写方法;熟悉字符设备驱动程序设计、开发和使用流程; 实验类型:综合 实验要求:必修 仪器设备:计算机 实验内容、方法、步骤:
编写一个简单的字符设备驱动程序,完成下列功能,并写出运行程序后输出的结果。 1)
编写简单的字符设备驱动程序,能够实现对虚拟设备int类型
变量的读写操作;
嵌入式驱动开发实验指导书
2) 3)
编写Makefile文件,对驱动程序进行编译;
采用动态模块加载方式对驱动程序进行加载,并查看加载前后
效果; 4)
编写测试程序,对虚拟设备进行读写操作,对驱动程序功能进
行验证。 实验步骤:
1)使用如下命令创建驱动源程序文件进行编写。 vim globalvar.c
2)编写相应的Makefile文件。 vim Makefile
3)对驱动程序进行编译、调试,生成globalvar.o目标文件。 make(make clean)
4)加载驱动程序,并查看是否加载成功。 insmod globalvar.o cat /proc/devices
(卸载模块命令 rmmod globalvar)(注意:无后缀名) 5)编写测试文件globalvartest.c,并进行编译,生成
嵌入式驱动开发实验指导书
globalvartest.o可执行文件。 6)创建虚拟设备文件。
mknod /dev/globalvar c 253 0
7)运行globalvartest.o,查看、记录并提交结果。 ./globalvartest.o 提交代码:
1)globalvar.c/globalvar.o 2)Makefile
3)globalvartest.c/globalvartest.o 4)测试结果(.jpg文件)
一.globalvar.c驱动程序 测试程序
嵌入式驱动开发实验指导书
makefile文件
测试结果
嵌入式驱动开发实验指导书
实验三
实验题目:并发控制及中断程序 实验目的:
(1)掌握linux内核中并发控制的方法,学会运用信号量/队列/自旋锁进行内核驱动程序中的并发控制;
(2)掌握中断处理机制原理,学会使用tasklet进行软中断处理。 实验类型:综合 实验要求:必修 仪器设备:计算机 实验内容、方法、步骤:
以简单的字符设备驱动程序globalvar为基础,编写程序完成下列功能,并写出运行程序后输出的结果。
嵌入式驱动开发实验指导书
1) 在globalvar驱动程序中,使用自旋锁功能,进行设备打开操
作控制。实现已打开的设备不能再被其他用户和进程打开;并编写测试程序进行测试; 2)
在globalvar驱动程序中,使用信号量和队列功能,进行设备
读写操作控制。实现:a) 设备不能同时被两个及以上用户和进程打开; b) 且仅能先写入设备,才能进行读取设备操作;c) 编程测试程序进行功能测试; 3)
在globalvar驱动程序中,使用tasklet功能,进行中断处理
操作。实现在对设备进行写入操作后,通过中断处理方式,打印信息;并编写测试程序进行测试; 实验步骤: 一,基本操作
1)使用如下命令创建驱动源程序文件进行编写。 vim globalvar.c
2)编写相应的Makefile文件。 vim Makefile
3)对驱动程序进行编译、调试,生成globalvar.o目标文件。 make(make clean)
嵌入式驱动开发实验指导书
4)加载驱动程序,并查看是否加载成功。 insmod globalvar.o cat /proc/devices
(卸载模块命令 rmmod globalvar)(注意:无后缀名)5)编写测试文件globalvartest.c,并进行编译,globalvartest.o可执行文件。 6)创建虚拟设备文件。
mknod /dev/globalvar c 253 0
7)运行globalvartest.o,查看、记录并提交结果。 ./globalvartest.o 二,自旋锁功能 1)定义及初始化:
包括头文件/asm/semaphore.h
static spinlock_t spin = SPIN_LOCK_UNLOCKED; static int count = 0; 2)获取自旋锁
成 生
嵌入式驱动开发实验指导书
在globalvar_open()中获取自旋锁, spin_lock(&spin); 3)释放自旋锁
在globalvar_open()中释放自旋锁, if(count) {
spin_unlock(&spin); return –EBUSY; } count++;
spin_unlock(&spin);
4) 在globalvar_release()中, count--;
5) 测试MOD_INC_USE_COUNT/ MOD_DEC_USE_COUNT功能。 6)编写应用测试进行测试。
7)提交代码和测试结果(参照实验2方式)。 一. spin.c驱动程序
嵌入式驱动开发实验指导书
测试程序
运行结果
解释代码
嵌入式驱动开发实验指导书
三,信号量和队列功能 1)定义及初始化:
包括头文件/asm/semaphore.h 以及 /linux/wait.h static struct semaphore sem; static wait_queue_head_t outq; static int flag = 0; 初始化:
在globalvar_init(void)中
if(ret) ...
嵌入式驱动开发实验指导书
else {
init_MUTEX(&sem);
init_waitqueue_head(&outq); … }
2)获取信号量和并判断是否加入队列 在globalvar_read()中获取
if(wait_event_interruptible(outq,flag != 0)) return –ERESTARTSYS;
if(down_interruptible(&sem)) return –ERESTARTSYS;
flag = 0; … up(&sem);
…… 此处隐藏:1152字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [幼儿教育]【完整版】2019-2025年中国药物发现外
- [幼儿教育]2018-2019年初中信息技术广东初一竞赛
- [幼儿教育]最新外研版(一起)小学英语五年级上册《
- [幼儿教育]农业推广与创新管理专业 -中农大毕业论
- [幼儿教育]2017-2022年中国更年期用药行业市场深
- [幼儿教育]数学1.1.2第1课时棱柱、棱锥和棱台的结
- [幼儿教育]二年级群文阅读课例欣赏
- [幼儿教育]2010-2015年中国保险行业投资分析及深
- [幼儿教育]厄运打不垮的信念第一课时
- [幼儿教育]巧用文本,让表达在言语中绽放论文
- [幼儿教育]中学生百科知识竞赛题及答案
- [幼儿教育]八大菜系英文简介
- [幼儿教育]中国男装牛仔裤市场发展研究及投资前景
- [幼儿教育]远程数字视频监控系统在银行的应用
- [幼儿教育]光纤光缆制造工艺及设备
- [幼儿教育]国家安全法试题及答案
- [幼儿教育]2011高中提前招生及竞赛试题(物理卷1)
- [幼儿教育]宁夏第三产业房地产业、科学研究和技术
- [幼儿教育]中兴通讯 ME3000模块用户硬件设计手册_
- [幼儿教育]紫外线灯管的辐照强度问题
- 苏联东欧剧变的原因和历史教训浅析
- 人工智能导论实验报告(学生)
- 思科ITE章考试原题及答案
- 《学习雷锋好榜样》主题班会教案
- 加油站建设项目安全评价报告
- 剖析社保卡管理系统
- 2017-2018年影视剧新媒体版权运营行业
- 2017-2018学年四川省成都市高一上学期
- 2019最新高中数学 第三章 3.2.1 几类不
- 2011-2015年中国基酸市场调查及行业前
- 人教版新课标选修八Unit 1 课件Warming
- 郭溪燎原小学辅导学生记录表
- 教师资格证统考综合素质写作秘笈
- 国外校园绿色建筑研究方向与建设实践
- 15.1 动物运动的方式 课件(北师大版八
- 民用飞机空调系统
- 长安侠文化传统与唐诗的任侠主题
- 《中国近现代史纲要》名词解释
- 11金本《保险学概论》复习资料
- 民用建筑机电安装工程专业施工图图纸会




