博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2017-2018-1 20155225 实验四 外设驱动程序设计
阅读量:7156 次
发布时间:2019-06-29

本文共 889 字,大约阅读时间需要 2 分钟。

2017-2018-1 20155225 实验四 外设驱动程序设计

《嵌入式Linux应用程序开发标准教程》第十一章学习

Lsmod列出当前系统加载的模块

Rmmod卸载当前模块

Insmod/modprobe加载当前模块

Linux系统的设备分为3类:字符设备、块设备和网络设备

设备号是设备的标志,一个设备文件(设备节点)可以通过mknod命令创建,其中指定了主设备号(标明设备的类型,与一个确定的驱动程序对应)和次设备号(标明不同的属性)

设备驱动程序位内核提供了一个I/O接口。

字符设备驱动编程:

程序入口:init_module()函数,在该函数中完成对设备的注册

模块卸载的入口函数cleanup_module()。

设备驱动程序主要组成:

(1) 早期版本的字符设备注册

(2) 设备号相关函数

(3) 最新版本的字符设备注册

(4) 打开设备

(5) 释放设备

(6) 读写设备

(7) Ioctl函数,提供配置和控制等非读写操作机制

(8) 获取内存,以字节或页面为单位

(9) 打印信息

/proc是一个伪文件系统,是内核和内核模块用来向进程发送信息的机制。

块设备驱动编程,包括一个request请求队列,设备驱动描述符和块设备驱动的编写流程。

中断编程,以编写完整的按键驱动程序为例。

test试验

在虚拟设备驱动源码目录下编译并加载驱动模块。

make clean;make

./test_drv_load

编译并运行测试程序

gcc –o test test.c

./test

卸载驱动程序

./test_drv_unload

通过 dmesg 命令可以查看内核打印的信息

dmesg|tail –n 10

……

The major of the test device is 250

This is open operation

This is release operation

Test device uninstalled

image

image

image

转载于:https://www.cnblogs.com/clever-universe/p/7967802.html

你可能感兴趣的文章
SELinux初学者指南
查看>>
ECCV 2018 | 旷视科技包揽COCO+Mapillary四项世界第一,中国公司成最大赢家
查看>>
Shiro Ajax请求没有权限返回JSON,没有登录返回JSON
查看>>
classList属性详解
查看>>
MYSQL-锁机制
查看>>
寻找List之和的最近素数
查看>>
程序员必知必会的那些邪恶的脚本
查看>>
Go 程序的基本结构和要素
查看>>
深入理解Java中的反射机制
查看>>
Git命令速查
查看>>
Android--解包、添加文件、打包、签名
查看>>
阿里云服务器ECS操作系统的分类
查看>>
HTML5 manifest离线缓存
查看>>
iframe父子页面通讯解决方案
查看>>
hive外表和事务表
查看>>
人工智能最终将超越人类,但不是反人类
查看>>
bearcat-dao 一个基于 SQL mapping 的 node.js DAO 框架
查看>>
还在担心机器人?人工智能目前水平还不如初中生
查看>>
菜鸟学Linux 第047篇笔记 bind97简单配置
查看>>
awk处理合并
查看>>