驱动 driver linux
文章平均质量分 86
linux驱动
liveloading
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
需要知道的spinlock
函数作用影响范围仅获取自旋锁。防止其他 CPU进入临界区。禁用本地CPU中断+ 获取锁。防止其他 CPU本地中断进入临界区。禁用本地CPU中断(并保存状态) + 获取锁。防止其他 CPU本地中断进入临界区。禁用本地CPU软中断+ 获取锁。防止其他 CPU本地软中断/tasklet进入临界区。中断禁用操作(irqsaveirqbh)都是每CPU的,只影响执行操作的本地核心。是“本地中断禁用”和“全局自旋锁”的组合。它解决了两种竞争:进程上下文 vs 其他CPU的进程上下文。原创 2025-09-04 17:56:40 · 899 阅读 · 0 评论 -
regmap的使用
在 Linux 内核中,regmap 是一个通用的寄存器映射抽象层,用于简化对硬件寄存器(尤其是 I2C、SPI、MMIO 等设备)的访问。定义底层总线操作(如 read/write),由具体总线驱动(如 I2C、SPI)实现。REGCACHE_RBTREE:红黑树缓存,适合稀疏寄存器访问。核心结构体,包含寄存器位宽、缓存策略、总线操作等配置。REGCACHE_FLAT:数组缓存,适合连续寄存器。配置参数(如寄存器位宽、缓存类型、读写回调等)。缓存机制:透明管理寄存器缓存(可选)。(2) 寄存器读写操作。原创 2025-09-03 14:01:16 · 396 阅读 · 0 评论 -
linux管理分散物理内存
保留内存通常在设备树中显式声明,这样内核和驱动程序都会避免使用它们。// 为GPU保留128MB内存 gpu_memory : region@ 98000000 {// 非常重要!告诉内核不要映射此区域用于常规用途 };// 为DSP保留64MB内存 dsp_memory : region@a0000000 {// 然后,设备节点可以引用这些保留区域 gpu : gpu@ff300000 {原创 2025-08-28 11:57:12 · 826 阅读 · 0 评论 -
Linux下of常用函数集
这些函数是 Linux 驱动开发中操作设备树的核心接口,熟练掌握后可高效编写与硬件无关的驱动代码。表示 Open Firmware,即设备树标准来源)实现。目录下,用于解析设备树节点、属性及硬件资源。| 读取 MAC 地址属性(如。属性中的地址和大小(用于寄存器映射) |属性) || 比较节点名是否匹配。| 检查节点是否可用(在 Linux 内核中,原创 2025-07-31 18:22:45 · 403 阅读 · 0 评论 -
sysfs 与设备驱动模型0331
如果调用者需要明 确指定一个自己的kobj_type对象给该kobject对象,那么还应该使用其他函数,比如调用kobject_init_and_add函数。kset意味着一组相似的设备,相互通过 list联系起来, 当需要向用户发送uevent时候,就用大家共享的uevent_ops发送uevent给用户层的udev(函数是kobject_uevent()).如上所见,cdev结构中嵌人了kobject:结构。在kobject结构的parent成员中,保存了另外一个kobject结构的指针,这个结构表。原创 2025-04-03 07:53:05 · 615 阅读 · 0 评论 -
device-driver:bus/kobject/kset
bus是驱动模型的主要一环,衔接了driver和device,特别地,bus负责管理挂载在上面的所有driver和devices, 大部分的情况是: 系统初始化时候,xxx-bus-core注册了一个虚拟总线,比如 i2c总线, 然后soc厂家在这个总线上, 注册自己的i2c-host, 一个host,一个driver,多个client devices.使用kobject del。删除一个kobject,或者使用kobject_unregister函数,它是kobject_del和kobject_put。原创 2025-07-19 09:57:09 · 976 阅读 · 0 评论
分享