自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux设备模型

创建结构体并且对里面的变量赋值。/sys目录有各种子目录以及文件,前面讲过当我们注册新的总线、设备或驱动时,内核会在对应的地方创建一个新的目录,目录名为各自结构体的name成员,如果是注册总线则会有/sys/bus/<bus_name>。/sys/class目录下则是包含所有注册在kernel里面的设备类型,这是按照设备功能分类的设备模型, 我们知道每种设备都具有自己特定的功能,比如:鼠标的功能是作为人机交互的输入,按照设备功能分类无论它 挂载在哪条总线上都是归类到/sys/class/input下。

2025-12-17 23:43:34 950

原创 Rk3588鲁班猫4点亮led

这里只上代码,先执行sudo sh -c 'echo 0 > /sys/class/leds/sys_status_led/brightness'关闭自带一直闪烁的led。随后编译下面代码得到.ko文件并加载到板卡。Makefile文件可以看我上一篇博客的末尾。之后执行下面语句就可以看到板卡的led点亮和关闭了。Rk3588鲁班猫4点亮led。

2025-12-16 22:10:24 278

原创 字符设备点亮led灯实验rk3568

当CPU开启了MMU时,CPU发出的地址将被送入到MMU,被送入到MMU的这段地址称为虚拟地址, 之后MMU会根据去访问页表地址寄存器(这个寄存器是在cpu内部的,为 MMU 提供页表在物理内存中的起始地址)然后去内存中找到页表(假设只有一级页表)的条目,从而翻译出实际的物理地址, 如下图所示。简单地说,物理地址就是内存单元的绝对地址,好比你电脑上插着一张8G的内存条,则第一个存储单元便是物理地址0x0000, 内存条的第6个存储单元便是0x0005,无论处理器怎样处理,物理地址都是它最终的访问的目标。

2025-12-16 16:02:02 856

原创 Linux字符设备初始化操作

(如果不知道结构体file_operation有啥函数可以自定义的可以看我第一篇帖子,这里不赘述)当你open这个路径之后,内核会沿着路径一直找知道找到你这个路径下对应的inode(这个inode的来源是insmod加载模块产生的,因为我们上面的初始化函数有个device_create函数,它帮我们做了这件事)。包括了下图的一些函数。1、在/dev目录下创建对应的设备文件:udevd会监听内核的设备事件uevent,当检测到device_create发送的事件后,会在/dev目录下创建对应的设备文件。

2025-12-14 23:14:01 1030

原创 linux字符设备驱动的基本运行流程和一些基础

该函数有三个参数:file类型指针变量,char__user*类型的数据缓冲区,__user用于修饰变量,表明该变量所在的地址空间是用户空间的。虚拟文件系统的 “虚拟”,核心是它构建了一层抽象的、统一的软件层 **,屏蔽了底层不同物理文件系统(如 ext4、NTFS、tmpfs、sysfs)和设备文件(如 /dev 下的字符 / 块设备)的实现差异,让用户态和内核上层代码无需关心底层具体类型,就能用统一的接口操作所有 “文件”—— 这种 “对下封装差异、对上提供统一抽象” 的设计,就是 “虚拟” 的本质。

2025-12-12 00:38:57 875 1

空空如也

空空如也

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

TA关注的人

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