美文网首页
32 | 字符设备(上)

32 | 字符设备(上)

作者: AndyWei123 | 来源:发表于2020-05-10 21:51 被阅读0次
image.png
  • 内核模块:设备驱动程序就是一种内核模块,一般以ko结尾的文件。

    内核模块一般包括以下几部分:

    • 头文件部分
      #include <linux/module.h>
      #include <linux/init.h>
    • 内核模块的主要逻辑函数,如打开,关闭,读取,写入。
    • file_operation结构
    • 定义整个模块的初始化函数和退出函数(model_init,model_exit)
    • licese
  • insmod 加载内核模块

    • 调用model_init 注册字符设备
    • 初始化一个cdev 并且将该cdev的ops指向模块的 operations
    • 将该cdev放到 cdev_map 中,以设备的主设备号和次设备号作为dev_t 为key
  • mknode 注册字符设备

    • 为/dev/*** 对应的设备文件创建对应的dentry并指向该inode
    • 将该inode的i_rdev复制为dev_t,并将该inode的file_operation指向 def_char_ops
  • open 打开该字符设备

    • 直接调用设备驱动程序的file_operations的open 函数
  • 写入字符设备
    通过task_struct 的fd文件描述符找到对应的 file 然后找到innode 在通过innode 的file_operations 操作。

  • IOCT 操作符
    • 通过file_operation的unlock_ioctl传入 CMD 进行控制
image.png

相关文章

  • 32 | 字符设备(上)

    image.png 内核模块:设备驱动程序就是一种内核模块,一般以ko结尾的文件。内核模块一般包括以下几部分:头文...

  • 2017年六月

    1,32位设备上的时间戳转化 通过13位的字符串时间戳转化为整型时,如果在32位的设备上,会丢失部分数据,造成时间...

  • 字符设备

    字符设备 设备号 32 位, 次设备号 20 位, 主设备号 12 位, 最大 4096 register_ch...

  • Linux设备驱动简介

    linux中三种驱动设备 linux系统将设备分为3类:字符设备、块设备、网络设备。 字符设备字符设备是能够像字节...

  • 3-字符设备框架_创建设备文件

    字符设备框架: 字符设备类包含了同种的字符设备。/sys/class 每种设备都有struct cdev来描述的:...

  • 2-驱动_加载函数_卸载函数_注册设备号_led驱动示例代码

    字符设备框架: 字符设备类包含了同种的字符设备。/sys/class 每种设备都有struct cdev来描述的:...

  • Linux 字符设备驱动之一

    字符设备、字符设备驱动与用户空间访问该设备的程序三者之间的关系 1 字符设备的初步认识 1.1 与普通文件差异 在...

  • 字符设备、块设备与网络设备

    在Linux中,设备类型可以分为:字符设备、块设备和网络设备。 1 字符设备 提供连续的数据流,应用程序可以顺序读...

  • LDD学习笔记系列之二

    基础知识 主设备号和次设备号 重要数据结构 字符设备的注册及移除 方式一 方式二 字符设备驱动编写要点 获取设备编...

  • Base64编码表

    码值 字符 码值 字符 码值 字符 码值 字符0 A 16 Q 32 g 48 ...

网友评论

      本文标题:32 | 字符设备(上)

      本文链接:https://www.haomeiwen.com/subject/uvpsnhtx.html