之前研究Linux设备驱动时做的零零散散的笔记,整理出来,方便以后复习。

1.1驱动程序的的角色

提供机制

例如:unix图形界面分为X服务器和窗口会话管理器
X服务器理解硬件及提供统一的接口给用户程序
窗口管理器实现了特别的策略但对硬件一无所知 目标:实现对策略透明

1.2划分内核

进程管理

负责创建和销毁进程,并处理它们与外部的联系(输入和输出)。

实现了多个进程在一个单个或几个CPU之上的抽象。

内存管理

为每一个进程在有限的可用资源上建立了虚拟地址空间。

文件系统

在非结构化的硬件之上建立了一个结构化的文件系统。

设备控制

全部设备的控制操作都由特定的寻址设备相关的代码来进行。

网络

系统负责在程序和网络接口之间递送数据报文。

1.2.1可加载模块
Linux特性:可以在运行时扩展由内核提供的特性,可以在系统正
运行的时候增加内核的功能(也可以去除)。 每块可以在运行时添加到内核的代码被称为一个模块。
通过insmod和rmmod程序去连接。

1.3设备和模块的分类

字符设备

字符(char)设备是一种可以当作字节流来存取的设备。

这样的驱动常常实现open,close,read,write系统调用。

例如:文本控制台(/dev/console),串口(/dev/ttyS0)

块设备

通过位于/dev目录的文件系统节点来存取,可以驻有文件系统。

与字符设备的区别在于内部管理数据的方式上--块设备允许一次

传送任意数据的字节。

网络接口

负责发送和接收数据报文

1.4安全问题

小心对待输入,未初始化的内存等

从内核获取的任何内存应当清零或者在其可用之前进行初始化。

1.5版本编号

Linux系统中使用的每一个软件包存有自己的发行版本号

它们之间存在相互依赖性。

1.6版权条款

3-字符驱动

scull

Simple Character Utility for Loading Localities

设备编号

[oxy@centos ~]$ ll /dev

total 0 主编号,次编号

drwxr-xr-x. 2 root root 640 May 12 22:24 block

crw-------. 1 root root 10, 234 May 12 22:24 btrfs-control

drwxr-xr-x. 3 root root 60 May 12 22:24 bus

lrwxrwxrwx. 1 root root 3 May 12 22:24 cdrom -> sr0

drwxr-xr-x. 3 root root 80 May 12 22:24 cpu

crw-rw----. 1 root root 10, 62 May 12 22:24 crash

drwxr-xr-x. 6 root root 120 May 12 22:24 disk

brw-rw----. 1 root disk 253, 0 May 12 22:24 dm-0

drwxr-xr-x. 2 root root 60 May 12 22:24 dri

lrwxrwxrwx. 1 root root 3 May 12 22:24 fb -> fb0

crw-rw----. 1 root root 29, 0 May 12 22:24 fb0

crw-rw-rw-. 1 root root 1, 7 May 12 22:24 full

主编号标识设备相连的驱动

次编号被内核用来决定引用哪个设备

Linux设备驱动学习笔记的更多相关文章

  1. linux设备驱动学习笔记(1)

    学习了将近半个月的设备驱动程序的编写,也有一些体会,这里写下来也给学习做一个总结,为后面的学习做更好的准备. 首先,个人感觉驱动程序的设计是很有套路的,最基本的要求就是要掌握这些套路.所谓的套路就是一 ...

  2. linux设备驱动学习笔记--内核调试方法之printk

    1,printk类似于用户态的printf函数,但是比printf函数多了一个日志级别,内核中最常见的日志输出都是通过调用printk来实现的,其打印级别有8种可能的记录字串, 在头文件 <Li ...

  3. linux字符设备驱动学习笔记(一):简单的字符设备驱动

    最近在鼓捣lnux字符设备驱动,在网上搜集的各种关于linux设备驱动的代码和注释,要么是针对2.4的,要么是错误百出,根本就不能运行成功,真希望大家在发博客的时候能认真核对下代码的正确性,特别是要把 ...

  4. 精通linux设备驱动开发 笔记

      3.2.7 错误处理   #include <linux/err.h> char * collect_data(char *userbuffer) { char *buffer; /* ...

  5. linux设备驱动概述,王明学learn

    linux设备驱动学习-1 本章节主要学习有操作系统的设备驱动和无操作系统设备驱动的区别,以及对操作系统和设备驱动关系的认识. 一.设备驱动的作用 对设备驱动最通俗的解释就是“驱使硬件设备行动” .设 ...

  6. Linux设备驱动程序学习----目录

    目录 设备驱动程序简介 1.设备驱动程序简介 构造和运行模块 2.内核模块和应用程序的对比 3.模块编译和装载 4.模块的内核符号表  5.模块初始化和关闭  6.模块参数  7.用户空间编写驱动程序 ...

  7. linux 驱动学习笔记01--Linux 内核的编译

    由于用的学习材料是<linux设备驱动开发详解(第二版)>,所以linux驱动学习笔记大部分文字描述来自于这本书,学习笔记系列用于自己学习理解的一种查阅和复习方式. #make confi ...

  8. (笔记)linux设备驱动--LED驱动

    linux设备驱动--LED驱动 最近正在学习设备驱动开发,因此打算写一个系列博客,即是对自己学习的一个总结,也是对自己的一个督促,有不对,不足,需要改正的地方还望大家指出,而且希望结识志同道合的朋友 ...

  9. Hasen的linux设备驱动开发学习之旅--时钟

    /** * Author:hasen * 參考 :<linux设备驱动开发具体解释> * 简单介绍:android小菜鸟的linux * 设备驱动开发学习之旅 * 主题:时钟 * Date ...

随机推荐

  1. 面试题 :10亿url去重只给4G内存

    我能想到的有以下几种: 用语言判断去重,ex表格去重,数据库去重,文件名字去重, 有人说:10亿url ex表放不下!! 可以用树和折半的思想将10亿url,变成单元最小化的树,然后用ex表去重 ex ...

  2. 致远OA利用POC

    批量检测url 在脚本同目录下建立url.txt 放入待检测的URL 运行脚本 # Wednesday, 26 June 2019 # Author:nianhua # Blog:https://gi ...

  3. 解析之Apache解析

  4. [c++] 幂法求特征向量

    幂法的原理可参考此篇论文:http://d.wanfangdata.com.cn/Periodical/hnnydxxb2001Z1023 本文求解的是 3 阶矩阵最大特征值及其特征向量 下面是其 C ...

  5. PTA(Basic Level)1006.Sign In and Sign Out

    At the beginning of every day, the first person who signs in the computer room will unlock the door, ...

  6. PostgreSQL查询数据库中包含某种类型的表有哪些

    and c.relnamespace = n.oid and nspname = 'public' and a.atttypid = t.oid and typname = 'TEXT' and c. ...

  7. GrapeCity Documents for Excel 与 Apache POI 功能对比

    GrapeCity Documents for Excel 与 Apache POI 功能对比 GrapeCity Documents for Excel 是什么? GrapeCity Documen ...

  8. Spread.NET 表格控件 V12.1 正式发布

    Spread.NET 表格控件 V12.1 正式发布 加入动态数组,让公式运算更具效率 Spread.NET 是一个在功能和布局上与 Excel 高度类似的 .NET表格控件,目前已广泛应用于财务.预 ...

  9. windows10 AppStore安装 应用商店重新安装

    点击左下角的搜索按钮,如下图所示   输入powershell,在结果中找到widows powershell应用,如下图所示   右键单击widows powershell应用,选择以管理员运行,如 ...

  10. Oracle RAC安装文档

    http://www.itpub.net/thread-1895813-2-1.html chkconfig iptables offservice iptables stop 1.修改主机名rac1 ...