视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
设备驱动(3)实验手册
2025-09-30 22:49:56 责编:小OO
文档
设备驱动(三)

华清远见—嵌入式学院

2008实验一、秒表字符设备

【实验内容】

编写一个字符设备“second”(即“秒”)的驱动,它在被打开的时候初始化一个定时器并将其添加到内核定时器链表,每秒输出一次当前的“秒”值

【实验目的】

掌握内核定时器的用法。

【实验平台】

Ubantu7.04

【实验步骤】

1、将文件夹second复制到linux环境中,如:/home/linux/test

#su root

#cp second /home/linux/test –a

2、#cd /home/linux/test/second

3、#make

4、通过insmod命令将模块加入内核

# insmod second.ko

5、建立设备结点

# mknod /dev/second c 253 0

6、编译应用程序

#gcc –o second_test second_test.c

7、运行second_test后,内核将不断地输出目前的jiffies值,如下所示:

current jiffies is 17216

current jiffies is 17316

current jiffies is 17416

current jiffies is 17516

current jiffies is 17616

8、而应用程序将不断输出自打开/dec/second以来经历的秒数,如下所示:

]# ./second_test

seconds after open /dev/second :1

seconds after open /dev/second :2

seconds after open /dev/second :3

seconds after open /dev/second :4

seconds after open /dev/second :5实验二、tasklet实验

【实验内容】

在globalfifo的实验中加入tasklet的功能。

【实验目的】

掌握tasklet的用法。

【实验平台】

Ubantu7.04

【实验步骤】

1、文件夹tasklet复制到linux环境中,如:/home/linux/test

#su root

#cp tasklet /home/linux/test –a

2、#cd /home/linux/test/tasklet

3、#make

4、通过insmod命令将模块加入内核

# insmod globalfifo.ko

5、建立设备结点

# mknod /dev/globalfifo c 253 0

6、#echo “hello” > /dev/globalfifo

7、#demsg 查看内核打印信息

8、查看源码,设当修改,掌握tasklet的实现方法。

实验三、工作队列实验

【实验内容】

在globalfifo的实验中加入工作队列的功能。

【实验目的】

掌握工作队列的用法。

【实验平台】

Ubantu7.04

【实验步骤】

1、文件夹work_queue复制到linux环境中,如:/home/linux/test

#su root

#cp work_queue /home/linux/test –a

2、#cd /home/linux/test/work_queue

3、#make

4、通过insmod命令将模块加入内核

# insmod globalfifo.ko

5、建立设备结点

# mknod /dev/globalfifo c 253 0

6、#echo “hello” > /dev/globalfifo

7、#demsg 查看内核打印信息

8、查看源码,设当修改,掌握工作队列的实现方法。

实验四 利用udev、sys动态创建设备结点

【实验内容】

编写一简单设备驱动,能够利用udev和sys文件系统实现动态创建设备结点

【实验目的】

掌握常用udev工具的用法及动态创建设备结点的方法。

【实验平台】

Ubantu7.04

【实验步骤】

1、将文件夹udev复制到linux环境中,如:/home/linux/test

#su root

#cp udev /home/linux/test –a

2、#cd /home/linux/test/udev

3、#make

4、通过insmod命令将模块加入内核

# insmod char-read.ko

查看/dev/farsight_dev

5、编译应用程序

#gcc –o test test.c

6、# ./test

7、查看源码,设当修改,掌握udev工具的用法及动态创建设备结点的方法。

#udevtest /sys/class/farsight_class/farsight_dev/ //列出udev处理一个class 设备的过程 # udevinfo -a -p /sys/class/farsight_class/farsight_dev/ //列出设备的属性#udevinfo -q path -n /dev/farsight_dev //得到设备在sys中的位置

# Udevmonitor //跟踪udev的运行

# vim /etc/udev/rules.d/20-names.rules //改变命名规则文件

可以添加:

# Other devices

KERNEL=="hw_random

KERNEL=="tun

#KERNEL=="farsight_dev

【实验内容】

编写一驱动,能够实现在sys文件系统系统下创建新的/sys/bus总线模型、及新的/sys/device模型,并在/sys/bus总线模型下创建新的属性

【实验目的】

掌握sys文件系统模型,及操作方法。

【实验平台】

Ubantu7.04

【实验步骤】

1、将文件夹lddbus复制到linux环境中,如:/home/linux/lddbus

#su root

#cp lddbus /home/linux/lddbus–a

2、#cd /home/linux/lddbus

3、#make

4、通过insmod命令将模块加入内核

# insmod lddbus.ko

5、查看/sys/bus/,这时就多了一个文件夹ldd,查看里面的内容为:

root@farsight:/sys/bus/ldd# ls

devices drivers version

root@farsight:/sys/bus/ldd# cat version (version为新创建的属性) $Revision: 1.9 $

6、查看/sys/device/,发现多了一个名为ldd0的文件夹,表示系统多了一个名为ldd0的设备

7、查看源码,找到上述现象的实现原理下载本文

显示全文
专题