教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 幼儿教育 >

嵌入式驱动开发实验指导书

来源:网络收集 时间:2026-08-21
导读: 嵌入式驱动开发实验指导书 《嵌入式驱动开发》实验 嵌入式驱动开发实验指导书 实验一 实验题目:Linux计算器应用程序及hello驱动程序 实验目的:掌握Linux常用操作命令、熟悉使用vi编程、掌握gcc/makefile编译基本方法 实验类型:设计 实验要求:必修 仪器设

嵌入式驱动开发实验指导书

《嵌入式驱动开发》实验

嵌入式驱动开发实验指导书

实验一

实验题目: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字,全部文档内容请下载后查看。喜欢就下载吧 ……
嵌入式驱动开发实验指导书.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1485658.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)