如何创建适合二手车网站的WordPress漫画主题?
摘要:二手车网站建设论文,wordpress漫画主题,天津的设计公司,沪佳装饰门店地址文章目录1 - 字符设备介绍2 - 字符设备开发流程图3 - 字符设备开发流程具体讲解(1)设备编号
二手车网站建设论文,wordpress漫画主题,天津的设计公司,沪佳装饰门店地址文章目录1 - 字符设备介绍2 - 字符设备开发流程图3 - 字符设备开发流程具体讲解#xff08;1#xff09;设备编号的定义与申请【1】Linux主次设备号介绍【2】分配设备编号【3】释放主次设备号#xff08;2#xff09;定义file_operations结构体-初始化接口函数#xff08;…
文章目录1 - 字符设备介绍2 - 字符设备开发流程图3 - 字符设备开发流程具体讲解1设备编号的定义与申请【1】Linux主次设备号介绍【2】分配设备编号【3】释放主次设备号2定义file_operations结构体-初始化接口函数3分配cdev结构体与注销4绑定主次设备号fops到cdev中注册cdev给Linux内核5创建设备类型、注册设备节点【1】创建【2】注销4 - 字符设备开发与测试1驱动源码与测试源码1x86架构虚拟机上运行2arm架构开发板上运行4copy_to/from_user()函数5 - inode与file结构体1inode结构体2file结构体首先我们介绍一下什么是字符设备然后讲解一下字符设备开发的具体的流程分别详细介绍每一个流程中涉及到的结构体以及知识点最后我们编写代码实现字符设备的开发以及测试。 1 - 字符设备介绍
Linux内核设计哲学是把所有的东西都抽象成文件进行访问这样对设备的访问都是通过文件I/O来进行 操作。Linux内核将设备按照访问特性分为三类字符设备、块设备、网络设备。 字符设备对数据的处理按照字节流的形式进行的。典型的字符设备串口、键盘、触摸屏、摄像头、I2C、SPI、声卡等应用程序能够使用系统IO函数open、write、read、lseek、close…来就行访问。
如下图应用程序运行在用户空间而Linux驱动属于内核一部分因此驱动运行于内核空间当用户想要实现对内核操作时必须使用系统调用来实现从用户空间到内核空间的操作。 2 - 字符设备开发流程图 3 - 字符设备开发流程具体讲解
1设备编号的定义与申请
【1】Linux主次设备号介绍
字符设备通过文件系统中的设备名来存取惯例上它们位于/dev目录。
wangdengtaowangdengtao-virtual-machine:~$ ls -l /dev/
总用量 0
crw------- 1 root root 10, 124 3月 17 18:48 cpu_dma_latency
crw------- 1 root root 10, 203 3月 17 18:48 cuse
...我们可以看见上面的两个设备首先最前面的‘c’表示这是一个字符character设备我们可以看见第二个root后面的数字这些数字是给特殊设备的主次设备编号。10就是主设备号后面的124和203就是次设备号。如果我们想要对相关设备进行操作只需要对设备文件进行读或者写操作就可以了。
传统上主编号标识设备相连的驱动次设备号被内核来决定应用哪个设备。
dev_t 是一个32位的数据类型其中高 12 位为主设备号低 20 位为次设备号。在编码时我们不应该管哪些位是主设备号哪些位是次设备号。而是应当利用在linux/kdev_t.h中的一套宏定义来获取一个dev_t的主、次编号
wangdengtaowangdengtao-virtual-machine:~/imx6ull/imx6ull/bsp/kernel/linux-imx/include/linux$ cat kdev_t.h
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _LINUX_KDEV_T_H
#define _LINUX_KDEV_T_H#include uapi/linux/kdev_t.h#define MINORBITS 20
#define MINORMASK ((1U MINORBITS) - 1)#define MAJOR(dev) ((unsigned int) ((dev) MINORBITS))
#define MINOR(dev) ((unsigned int) ((dev) MINORMASK))
#define MKDEV(ma,mi) (((ma) MINORBITS) | (mi))
...宏 MINORBITS 表示次设备号位数一共是 20 位。 宏 MINORMASK 表示次设备号掩码。 宏 MAJOR 用于从 dev_t 中获取主设备号将 dev_t 右移 20 位即可。
