![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux驱动
中华田园巨龙
这个作者很懒,什么都没留下…
展开
-
记一次坑爹的ioremap bug
在进行IGH协议栈修改时,遇到这样一个宏定义#define EC_WRITE_U16(DATA, VAL) \ do { \ if( (uint16_t)(DATA) % 2 ==0 ) \ { \ *((uint16_t *) (DATA)) = cpu_to_le16((uint16_t) (VAL)); \ } \ else { \ *((uint8_t *)(DA原创 2021-12-08 15:57:35 · 1347 阅读 · 0 评论 -
Linux驱动笔记--自动加载模块
目的实现开机时自动加载.ko文件模块。步骤1、将所需要加载的.ko文件放到/lib/modules/4.19.xxxx/extera/ 文件夹下。例:mymodule.ko文件2、修改/etc/modules-load.d/modules.conf ,写入自己的模块名称 mymodule (不加.ko)3、修改完成,重启系统用 lsmod查看已加载模块。...原创 2021-05-08 14:52:02 · 765 阅读 · 0 评论 -
Linux驱动--of_match_ptr 宏定义
在查看设备驱动时,经常看到如下结构。为什么会有一个of_match_ptr呢?查看源代码,在include/linux/of.h里面。#ifdef CONFIG_OF...#define of_match_ptr(_ptr) (_ptr)...#else /* CONFIG_OF */...#define of_match_ptr(_ptr) NULL...#endif /* CONFIG_OF */查看arch/arm64/KCONFIG,可以知道CONFIG_OF默认是打开的原创 2021-02-19 16:01:01 · 3484 阅读 · 2 评论 -
kobject(转载)
核心结论: 1、sys 目录下的层次结构依赖于 kobject.parent ,未指定parent时,默认使用 kobject.kset.kobject 作为 parent,如果都没有,就出现在 /sys 目录下。 2、该 kobject 目录下的属性文件依赖于 kobject.ktype 在linux的驱动表示中,主要有三个基本的结构,分别是kobject...转载 2021-01-22 14:30:22 · 288 阅读 · 0 评论 -
Linux 设备总线驱动模型(转载)
尽管LDD3中说对多数程序员掌握设备驱动模型不是必要的,但对于嵌入式Linux的底层程序员而言,对设备驱动模型的学习非常重要。 Linux设备模型的目的:为内核建立一个统一的设备模型,从而又一个对系统结构的一般性抽象描述。换句话说,Linux设备模型提取了设备操作的共同属性,进行抽象,并将这部分共同的属性在内核中实现,而为需要新添加设备或驱动提供一般性的统一接...转载 2021-01-22 11:38:18 · 290 阅读 · 1 评论 -
Linux驱动之Kobject、Kset (二)uevent mdev ktype type(转载)
LDD3中说,Kobject的作用为: 1、sysfs 表述:在 sysfs 中出现的每个对象都对应一个 kobject, 它和内核交互来创建它的可见表述。 2、热插拔事件处理 :kobject 子系统将产生的热插拔事件通知用户空间。 3、数据结构关联:整体来看, 设备模型是一个极端复杂的数据结构,通过其间的大量链接...转载 2021-01-22 11:35:03 · 205 阅读 · 0 评论 -
Linux设备驱动之Kobject、Kset(转载)
纠结又纠结,虽然看了一些关于kobject 和 kset 的书与文章,但是对于这两个东西,还是不太明白,又分析了一遍2.6.32.2内核的代码,结合前人的努力,终于有了一点眉目。总结一下,给自己做个笔记,也给初学者一点指引。 LDD3中说,Kobject的作用为: 1、sysfs 表述:在 sysfs 中出现的每个对象都对应一个 kobje...转载 2021-01-22 11:32:27 · 550 阅读 · 0 评论 -
Linux驱动笔记--主机驱动与外设驱动概念以及分离思想
主机端驱动 即CPU上的总线控制器,例如I2C,SPI,USB等。指的是总线。外设端驱动 CPU上的总线所连接的外设,即为外设端驱动。连接主机和外设的纽带 外设调用主机端驱动时,使用的标准API,由标准API将请求发给主机端驱动。板级逻辑 CPU上的总线与对应外设的连接顺序,即哪个总线连接了哪个外设,即为板级逻辑。一般出现在arch/arm/mach-xxx或者arch/arm/boot/dts下面。举例说明:一个CPU使用USB1连接了一个鼠标,USB2连接了一个键盘。那么USB就原创 2020-10-13 14:46:03 · 1006 阅读 · 1 评论 -
Linux驱动笔记-字符设备,块设备,网络设备
在Linux设备驱动开发中,粗略的将设备分为三种类型:字符设备,块设备和网络设备。1、字符设备:指能够像字节流串行顺序依次进行访问的设备,对它的读写是以字节为单位。字符设备的上层没有磁盘文件系统,所以字符设备的file_operations成员函数就直接由字符设备驱动提供(一般字符设备都会实现相应的fops集),因此file_operations 也就成为了字符设备驱动的核心。 类型举例:鼠标,键盘,串口,控制台,LED2、块设备:以数据块的形式存放数据,如NAND Flash以页为单位存储数转载 2020-09-27 10:06:03 · 524 阅读 · 0 评论 -
Linux驱动笔记2--内核模块
内核模块可加载到内核中或生成为.ko文件,等系统启动后再加载。加载完之后就与加载到内核中完全一样。以此可以减少内核体积。知识结构命令函数内核模块例子#include <linux/init.h>#include <linux/module.h>static int __init hello_init(void){ printk(KERN_INFO "Hello World enter\n"); return 0;}module_int(hello_原创 2020-09-23 10:01:54 · 146 阅读 · 0 评论 -
linux驱动笔记1---linux内核驱动目录结构
在Linux内核中新增驱动时,需要增加以下结构和文件更改,下面做一个笔记进行记录。驱动结构的Xmind展示新增驱动test详解 新增驱动为drivers下的test文件夹,里面包含了驱动源码test**.c1、在arch/arm64/Kconfig文件下增加source “drivers/test/Kconfig” ,使得进行make menuconfig时,drivers/test下的Kconfig可以参与进来。2、在drivers下的Makefile下,增加对test目录的支持3、在原创 2020-09-04 10:30:19 · 2708 阅读 · 0 评论