Linux驱动入门

Linux 简介

Linux 驱动程序分类

三种驱动设备分类

  1. 字符设备(char)


    实际上就是字节设备,对设备操作的读写操作是以字节为最小单位,如控制LED灯的亮灭,串口的读写,
  2. 块设备(block)


    实际是就是存储设备,其驱动操作的最小单位是块,对整个块进行操作,如HDD,Flash 都是以一个固定的Block大小进行读写,如512B等等。修改时需要读出整块到内存,对需要的地方进行修改后,再覆写整块
  3. 网络设备(network)


    是一套通用的接口,实际上已经包含在内核,无需开发

驱动的应用

  1. 常见的设备大多数为字符设备
  2. 非标准设备
    实际上应用最多的,需要开发的就是字符设备,如对于外设的开发,如键盘(HID),或者一些用户自定义的外设,如FPGA和ARM的方案中,和FPGA的控制,读写等,就可以通过字符设备来把FPGA作为一个内核的设备节点,这里的FPGA控制就是典型的非标准设备

驱动程序的安全性

  • 在Linux的源码中有进1/3的代码量都是属于驱动设备的代码,其实是一个很庞大的体系
  • 内核通过函数调用的方式来调用驱动程序的代码
  • 驱动是以模块的形式 装载 在内核之中

常见的内核漏洞

由于内核代码运行在 Ring0 运行级,所以驱动安全就是内核安全,之于Arm 就是特权模式(除了用户模式之外的六种)。
1. 未初始化指针
2. 缓冲区溢出
3. 竞态
4. 代码逻辑漏洞

开始着手

  1. C语言基础
  2. 硬件操作基础
  3. Linux基础
  4. 应用层编程基础
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值