Linux 驱动程序介绍
知识结构:
1. Linux驱动程序设计规范 50%
2. 内核相关知识 25%
3. 硬件相关知识 25%
学习方法:
理论->实验-(疑问)->理论->实验
早期驱动程序-模式一
缺点:没有实现驱动的复用,没有操作系统的保护。
早期驱动程序-模式二
缺点:应用程序和驱动紧密耦合,驱动程序修改后,应用程序也要进行修改。
驱动分类
*字符设备驱动(重点)
*网路接口驱动(重点)
*块设备驱动
字符设备
字符设备是一种按字节来访问的设备,字符驱动则负责驱动字符设备,这样的驱动程序通常实现open,close,read和write系统调用。
块设备
*在大部分的Unix系统,块设备不能按照字节处理数据,只能一次传送一个或者多个长度是512字节(或者一个更大的2次幂的数)的整块数据。
*而Linux则允许块设备传送任意数目的字节。因此,块和字符设备的区别仅仅是驱动的与内核的接口不同。
*字符设备必须顺序读取数据,而块设备可以跳过某些数据。
网路接口
任何网络事务都通过一个接口来进行,一个接口通常是一个硬件设备(eth0),但是它也可以是一个纯粹的软件设备,比如回环接口(lo)。一个网路接口负责发送和接受数据报文。
驱动程序安装
*模块方式(已知)
*直接编译进内核
直接编译进内核
*Kconfig? 用于产生menuconfig的菜单选项。
*Makefile?
例:将helloWorld编译进内核
修改/driver/Kconfig,添加
config HELLO_DRIVER 显示在.config中
bool “my hello driver” 显示在menuconfig中
修改Makefile,添加
Obj-$(CONFIG_HELLO_DRIVER) +=hello_dev.o
驱动程序的使用
Linux 驱动程序介绍相关推荐
- Linux驱动程序安装步骤
一.PC机上Ubuntu9.10系统下 1. 驱动程序源码及Makefile如下: #------源程序------# #include <linux/module.h> #include ...
- Linux驱动程序编写
工作需要写了我们公司一块网卡的Linux驱动程序.经历一个从无到有的过程,深感技术交流的重要.Linux作为挑战微 软垄断的强有力武器,日益受到大家的喜爱.真希望她能在中国迅速成长.把程序文档贴出来, ...
- linux内核模块是什么,Linux内核模块介绍,使用Linux模块的优点
描述 1.1 Linux内核模块介绍1.1.1 Linux内核模块概述 嵌入式设备驱动开发中将驱动程序以模块的形式发布,更是极大地提高了设备使用的灵活性--用户只需要拿到相关驱动模块,再插入到用户的内 ...
- Linux驱动程序学习步骤
了解linux驱动程序技巧学习的方法很重要,学习linux操作系统时,你可能会遇到关于驱动方面的问题, 这里将介绍学习linux驱动程序的方法,在这里拿出来和大家分享一下. 1.学会写简单的make ...
- poll接口《来自Linux驱动程序开发实例》
您所在的位置:读书频道 > 操作系统 > Linux > 1.2.7 poll接口 1.2.7 poll接口 2012-05-22 13:38 冯国进 机械工业出版社 我要评论(0) ...
- 异步通知《来自Linux驱动程序开发实例》
您所在的位置:读书频道 > 操作系统 > Linux > 1.2.8 异步通知 1.2.8 异步通知 2012-05-22 13:38 冯国进 机械工业出版社 我要评论(0) 字号: ...
- 第一个linux驱动程序
本章将进行实例的学习,第一个linux驱动程序:统计单词个数.本例子的目的不是讲解如何统计单词个数,而是该算法的实现技术:Linux驱动.Linux系统将每一个驱动都映射成一个文件,这些文件称为设备文 ...
- Linux常用命令(本篇包括,Linux目录结构介绍、Linux Shell介绍、9个常见命令介绍、文件的概念、文件的操作(20个)、目录的操作、文件和目录的权限、文件压缩及解压缩)
Linux常用命令(本篇包括,Linux目录结构介绍.Linux Shell介绍.9个常见命令介绍.文件的概念.文件的操作(20个).目录的操作.文件和目录的权限.文件压缩及解压缩) ...
- 嵌入式Linux驱动程序开发
嵌入式Linux驱动程序开发 1.设备驱动程序的概念... 2 2.处理器与设备间数据交换方式... 2 21.查询方式... 2 2.2.中断方式... 3 2.3.直接访问内存(DMA)方式... ...
最新文章
- 吸顶wifi_分享 | 酒店WiFi网络的三种部署模式
- 【Codeforces】835B The number on the board (贪心)
- 笔记 | PyTorch张量Tensor的一些必备操作
- Python列表之for循环应用
- 网站运营手册_新媒体代运营模式价格
- #1182 : 欧拉路·三(有向图的欧拉路)
- Ajax+Node.js前后端交互最佳入门实践(04)
- Spring Mvc Url和参数名称忽略大小写
- 组装台式计算机需要哪些配件,组装电脑需要哪些配件 电脑装机教程图解
- windows录屏_ApowerREC for Mac(屏幕录屏工具) V1.2.7.10激活版
- Jetty使用教程(四:24-27)—Jetty开发指南
- 存在链接注入漏洞_【安全提示】CNVD发布上周关注度较高的产品安全漏洞(20200817-20200823)...
- 从目标文件结构,加载、执行阶段,汇编角度来理解C程序内存分区
- 关灯游戏 Lights out (一)(极速求解)
- Postman安装与简单使用
- 卡尔曼滤波系列——(二)扩展卡尔曼滤波
- 经纬财富:昭通炒现货白银技巧
- python数据可视化第三章图表辅助元素的定制
- 08-图8 How Long Does It Take (25分)
- macOS Monterey 12.2 (21D49) 虚拟机 IOS 镜像
热门文章
- 成年后常用的资源都从哪里来的?原来是在几个网站里面搜索到的!
- windows开启SMB
- 面向对象编程(OOP)面向对象编程(OOP)
- django 缓存cache配置注意事项
- [Validation set: 'activiti-executable-process' | Problem: 'activiti-exclusive-gateway-condition-not-
- Apache CXF 简介
- torch.meshgrid 使用探究
- [Halcon] WriteImage保存图像崩溃问题
- 技术博客那些事儿-如何写好博客
- 硬件知识:独立显卡和集成显卡的区别