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

上传人:公**** 文档编号:554877052 上传时间:2022-12-27 格式:DOC 页数:42 大小:1.61MB
返回 下载 相关 举报
嵌入式驱动开发实验指导书_第1页
第1页 / 共42页
嵌入式驱动开发实验指导书_第2页
第2页 / 共42页
嵌入式驱动开发实验指导书_第3页
第3页 / 共42页
嵌入式驱动开发实验指导书_第4页
第4页 / 共42页
嵌入式驱动开发实验指导书_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《嵌入式驱动开发实验指导书》由会员分享,可在线阅读,更多相关《嵌入式驱动开发实验指导书(42页珍藏版)》请在金锄头文库上搜索。

1、嵌入式驱动开发实验实验一实验题目:Linux计算器应用程序及hello驱动程序实验目的:掌握Linux常用操作命令、熟悉使用vi编程、掌握gcc/makefile编译基本方法实验类型:设计实验要求:必修仪器设备:计算机实验内容、方法、步骤:一、编写一个计算器程序,实现菜单显示、加减乘除功能。要求:1)基于Linux平台开发2)使用vi编辑器编写3)使用gcc编译一.课搭建samba服务器二c编程练习(将10个数放入数组,找出最大的一个数,并输出)二、 编写hello驱动程序,编译后,进行加载、卸载驱动模块以对驱动进行测试。一hello.c驱动程序实验二实验题目:简单的字符设备驱动程序实验目的:

2、掌握Makefile文件编写方法;熟悉字符设备驱动程序设计、开发和使用流程;实验类型:综合实验要求:必修仪器设备:计算机实验内容、方法、步骤:编写一个简单的字符设备驱动程序,完成下列功能,并写出运行程序后输出的结果。1) 编写简单的字符设备驱动程序,能够实现对虚拟设备int类型变量的读写操作;2) 编写Makefile文件,对驱动程序进行编译;3) 采用动态模块加载方式对驱动程序进行加载,并查看加载前后效果;4) 编写测试程序,对虚拟设备进行读写操作,对驱动程序功能进行验证。实验步骤:1) 使用如下命令创建驱动源程序文件进行编写。vim globalvar.c2) 编写相应的Makefile文

3、件。vim Makefile3)对驱动程序进行编译、调试,生成globalvar.o目标文件。make(make clean)4)加载驱动程序,并查看是否加载成功。insmod globalvar.ocat /proc/devices(卸载模块命令 rmmod globalvar)(注意:无后缀名)5)编写测试文件globalvartest.c,并进行编译,生成globalvartest.o可执行文件。6)创建虚拟设备文件。mknod /dev/globalvar c 253 07)运行globalvartest.o,查看、记录并提交结果。./globalvartest.o提交代码:1) gl

4、obalvar.c/globalvar.o2) Makefile3) globalvartest.c/globalvartest.o4) 测试结果(.jpg文件)一globalvar.c驱动程序测试程序makefile文件测试结果实验三实验题目:并发控制及中断程序实验目的:(1)掌握linux内核中并发控制的方法,学会运用信号量/队列/自旋锁进行内核驱动程序中的并发控制;(2)掌握中断处理机制原理,学会使用tasklet进行软中断处理。实验类型:综合实验要求:必修仪器设备:计算机实验内容、方法、步骤:以简单的字符设备驱动程序globalvar为基础,编写程序完成下列功能,并写出运行程序后输出的

5、结果。1) 在globalvar驱动程序中,使用自旋锁功能,进行设备打开操作控制。实现已打开的设备不能再被其他用户和进程打开;并编写测试程序进行测试;2) 在globalvar驱动程序中,使用信号量和队列功能,进行设备读写操作控制。实现:a) 设备不能同时被两个及以上用户和进程打开; b) 且仅能先写入设备,才能进行读取设备操作;c) 编程测试程序进行功能测试;3) 在globalvar驱动程序中,使用tasklet功能,进行中断处理操作。实现在对设备进行写入操作后,通过中断处理方式,打印信息;并编写测试程序进行测试;实验步骤:一,基本操作1) 使用如下命令创建驱动源程序文件进行编写。vim

6、globalvar.c2)编写相应的Makefile文件。vim Makefile3)对驱动程序进行编译、调试,生成globalvar.o目标文件。make(make clean)4)加载驱动程序,并查看是否加载成功。insmod globalvar.ocat /proc/devices(卸载模块命令 rmmod globalvar)(注意:无后缀名)5)编写测试文件globalvartest.c,并进行编译,生成globalvartest.o可执行文件。6)创建虚拟设备文件。mknod /dev/globalvar c 253 07)运行globalvartest.o,查看、记录并提交结果。

7、./globalvartest.o二,自旋锁功能1)定义及初始化:包括头文件/asm/semaphore.hstatic 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-;

8、5) 测试MOD_INC_USE_COUNT/ MOD_DEC_USE_COUNT功能。6)编写应用测试进行测试。7)提交代码和测试结果(参照实验2方式)。一. spin.c驱动程序测试程序运行结果解释代码三,信号量和队列功能1)定义及初始化:包括头文件/asm/semaphore.h 以及 /linux/wait.hstatic struct semaphore sem;static wait_queue_head_t outq;static int flag = 0;初始化:在globalvar_init(void)中if(ret).else init_MUTEX(&sem);init_w

9、aitqueue_head(&outq);2)获取信号量和并判断是否加入队列在globalvar_read()中获取if(wait_event_interruptible(outq,flag != 0)return ERESTARTSYS;if(down_interruptible(&sem)return ERESTARTSYS;flag = 0;up(&sem);3)在globalvar_write()中唤醒队列if(down_interruptible(&sem)return ERESTARTSYS; up(&sem);flag = 1; wake_up_interruptible(&ou

10、tq);4)编写应用test1.c test2.c进行测试。5)提交代码和测试结果(参照实验2方式)。四,中断练习1)void tast_tasklet_action(unsigned long t) printk(tasklet is runningn);2)DECLARE_TASKLET(test_tasklet,test_tasklet_action, 0);3) tasklet_schedule(&test_tasklet);4)编写应用test1.c test2.c进行测试。5)提交代码和测试结果(参照实验2方式)。二waitqueue.c驱动程序makefile文件解释代码实验五实

11、验题目:ADC设备驱动开发实验目的:了解s3c2410 ADC 芯片相关寄存器功能;编写驱动和应用程序对ADC进行配置及读取数据。学会交叉编译环境的搭建。实验类型:综合实验要求:必修仪器设备:计算机实验内容、方法、步骤:编写一个ADC设备驱动程序,能够对ADC设备配置及读取数据。将设备驱动程序和应用程序下载到实验箱,测试并写出运行程序后输出的结果。1) 交叉编译环境的搭建。a) 将armv4l-tools-2.95.2.tar.bz2复制到根目录cp armv4l-tools-2.95.2.tar.bz2 /b) 解压工具包tar jxvf armv4l-tools-2.95.2.tar.bz

12、2c) 配置环境变量vim /root/.bashrc输入:export PATH = $PATH:/opt/host/armv4l/binsource /root/.bashrcd) 测试在任意终端下输入arm4v后,按tab键,如能出现arm编译命令armv4l-unknown-linux-gcc即为成功交叉编译环境搭建成功。2) 下载s3c2410实验箱内核源码从百度云盘下载,下载后搭建samba服务器,拷贝到/root目录下。则Makefile中 KERNELDIR = /root/kernel-2410s3) 编写驱动程序myadc.c编写Makefile,并对驱动程序进行测试,成功

13、后,编写用户程序。4) 编写测试程序test.c在Makefile中增加编译语句,对test.c进行编译。5) 运行、测试将编译后的驱动程序和测试程序,拷贝到实验箱所连接的上位机。通过超级终端将程序下载到实验箱,进行测试。观察结果。6) 按照之前实验提交方式,提交源程序、目标程序及测试结果一myadc1、预分频使能位,1为使能,0为禁止启动adc控制位,1为启动,0为不启动预分频值定义通道等待队列读写中断的入口函数2、配置ADC启动指定的通道进入睡眠从ADCDATA0读数据取0-9这10位ADC转换数据4、将预分频值转换成ADCCON可接收形式5、将ADC的通道号转换成ADCCON可接收形式6

14、、初始化等待队列计数器加17、计数器减18、在/dev中建立设备文件,指明它是字符驱动设备,可读写9、注销ADC设备释放中断实验六实验题目:Linux内核编译实验目的:了解Linux内核编译步骤;学会如何将驱动加入到内核,通过内核编译,实现驱动静态加载。实验类型:综合实验要求:必修仪器设备:计算机实验内容、方法、步骤:对编写的globalvar或chrdemo等设备驱动程序,通过内核编译,实现静态加载。内核编译后,重启机器,对驱动功能进行测试,比较静态与动态加载的不同。测试后,写出内核编译步骤及运行程序后的结果。具体步骤如下:1) 将驱动源程序加入到linux系统内核源码中a) 将驱动源程序拷贝到内核源码相应路径。cp globalvar.c /usr/src/linux/driver/charb) 修改/usr/src/linux/driver/char下配置文件Config.in,在文件最后一行endmenu前,加入一行tristate globalvar su

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号