自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(8)
  • 收藏
  • 关注

原创 Linux内核对于设备树文件的处理过程

Linux内核对于设备数文件的处理

2020-12-16 11:17:08 601

原创 Linux设备模型

Linux设备驱动模型我们在写最简单的设备驱动程序的时候,我们将所有的硬件信息都保存在了驱动代码中,这样有一个非常明显的不足:会导致驱动程序的通用性极差,一旦硬件平台或硬件连接有锁改变,就一定要修改驱动代码。为了解决这个问题,Linux在2.6版本之后,添加了“总线—设备—驱动”的Linux设备模型,有效地实现了设备和驱动的分离。该设备模型通过几个数据结构来反映当前系统中总线、设备以及驱动的工作状况,提出了以下几个重要概念:设备(device):挂载在某个总线的物理设备;驱动(driver):与特

2020-05-20 13:45:12 469

原创 字符设备驱动框架

初始化/移除字符设备Linux内核提供了两种方式来定义字符设备,如下所示://第一种方式:常见的变量定义static struct cdev chrdev;//第二种方式:内核提供的动态分配方式struct cdev *cdev_alloc(void);从内核中移除某个字符设备,则需要调用cdev_del函数,如下所示:void cdev_del(struct cdev *p)分配/注销设备号Linux的各种设备都以文件的形式存放在/dev目录下,为了管理这些设备,系统为各个设备进行编号

2020-05-19 13:08:14 184

原创 字符设备结构体

file_operations结构体文件结构体file以及字符设备结构体cdev,他们都有一个struct file_operations类型的成员变量。file_operations结构体中包含了操作文件的一系列函数指针,以下代码中只列出部分函数。struct file_operations { loff_t (*llseek) (struct file *, loff_t, int); ssize_t (*read) (struct file *, char __user *, size_t

2020-05-19 10:28:54 322

原创 字符设备驱动Open调用过程

使用open函数打开设备文件,到底做了些什么工作?下图中列出了open函数执行的大致过程。设备文件通常在开机启动时自动创建的,不过,我们仍然可以使用命令mknod来创建一个新的设备文件,命令的基本语法如下:mknod 设备名 设备类型 主设备号 次设备号当我们使用上述命令,创建了一个字符设备文件时,实际上就是创建了一个设备节点inode结构体,并且将该设备的设备编号记录在成员i_rdev,将成员f_op指针指向了def_chr_fops结构体。这就是mknod负责的工作内容,具体代码见如mknod

2020-05-19 09:50:26 1085

转载 linux--多目录下的MakeFile文件(嵌套Makefile)编写

linux–多目录下的MakeFile文件(嵌套Makefile)编写

2020-05-15 14:09:27 175

原创 多级目录结构的Makefile(详细注释)

多级目录结构的Makefile(详细注释)本文主要以例程的方式展示了二级目录结构下的Makefile的写法(详细注释);对于更加纷杂的多级目录,大家可在此基础上进行修改#定义变量#ARCH默认为x86,使用gcc编译器,否则使用arm编译器ARCH ?= x86TARGET = hello_main#存放中间文件的路径 :./build_x86BUILD_DIR = build_$(ARCH)#存放源文件的文件夹 :./sourcesSRC_DIR = sources#存放头文件的文

2020-05-15 14:02:43 1025

原创 Linux驱动程序Makefile详解

驱动Makefile详解参考:http://blog.chinaunix.net/uid-21161467-id-108104.html例:一个简单的hello内核模块的Makefile:#hell0_makefileifneq ($(KERNELRELEASE),)obj-m:=hello.oelseKERNELDIR:=/lib/modules/$(shell uname -r)/buildPWD:=$(shell pwd)default: $(MAKE) -C $(

2020-05-15 11:54:27 5671

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除