logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

linux驱动-设备驱动模型(device设备)

从代码可以看出对于 dev 来说名字是一个非常重要的参数,首先使用 init_name 作为dev->kobj 的名字同时将 init_name 设置为空,如果 init_name 初始为空则使用 “bus->dev_nam + dev->id” 作为dev->kobj 的名字,如果设备没有设置名字则直接返回错误。

文章图片
#linux#驱动开发#c语言 +1
linux驱动-设备驱动模型(platform设备)

只要dts中的节点有 compatible 属性,将会在内核中将该节点转换为 platform 设备,该设备将出现在下如果有设备节点有 reg 属性则使用作为该设备的名字如果设备节点没有 reg 属性则使用作为设备名,同时设置。

文章图片
#linux#嵌入式硬件#驱动开发 +1
linux驱动-设备驱动模型(属性文件 kobject )

Linux设备模型的核心是使用四个核心数据结构,将大量的、不同功能的硬件设备(以及驱动该硬件设备的方法),以树状结构的形式,进行归纳、抽象,从而方便Kernel的统一管理。more。

文章图片
#linux#嵌入式硬件#驱动开发
基于 rk3566 的 uboot 分析 - dts 加载和 dm 模型的本质

rk3566 中对 dtb 的组成分为两个部分uboot和kernel并不是单纯的只用 uboot 和只用 kernel, 两者都用到了. 他们在内存中的分布如下. 下图描述的是RK3566的 dtb img 位置.rk3566 uboot 中设备树的加载有两个阶段, 首先使用 uboot中的设备树, 之后再加载使用 kernel dtb 中的设备树.rk 3566 中 u-boot.dtb 和

文章图片
#android#linux#驱动开发 +2
drm 驱动系列- 第一章 drm_device

drm_device 的注册为两个部分, 首先是调用 drm_dev_init 创建并初始化一个 drm_device 然后调用 drm_dev_register 进行注册.通过 drm_minor 用来描述一个 drm_dev 下的三种不同可以实例化的设备, 每个 drm 子系统至少有一个 DRM_MINOR_PRIMARY 设备。真正的设备注册函数. 注册 dev 下对应的 tpye 的设备,

文章图片
#嵌入式硬件#linux
drm 驱动系列 - 第三章 gem 内存管理

drm_gem_cma_dumb_create 首先在 drm_mm 中申请一片需要的空间描述符, 然后再创建实际的物理内存. 上图中的蓝色的 drm_mm_node 就是 user 使用 libdrm 分配显存时申请到的内存空间描述符.之后再调用 dma_alloc_wc 分配实际的物理内存到。. 它表示的是内存的相对偏移, 这个 node 对应 drm_mm 中的内存偏移. 他的作用就是索引该

文章图片
#linux#运维#服务器 +3
windows11 terminal 和 shell 美化

windows11 terminal 和 shell 美化

rk3566-安卓11-千兆网卡 rtl8211f 移植

默认情况只亮一颗黄灯, 需要将另一颗绿灯点亮. 查看芯片手册, RTL8211F 的寄存器读写, 首先需要将要操作的 Address 对应的 page 写入 Page Select Register, 再对该寄存器进行读写.如果 dts 配置的不对会出现 dma 相关的报错, 出现这个报错, 按照前面的步骤确认硬件接法对应的name 然后查找对应的配置.如果原理图上的 mac 的 io 供电由 v

文章图片
#android#linux#驱动开发 +2
Windows11+wsl+ubuntu开发环境搭建

使用 win11 +wsl 构建 ubuntu 本地编译环境,

文章图片
#linux#驱动开发
rk3566-Android11 从驱动到 app 第二章添加 hall 层

就是 linux 驱动只提供硬件读写接口, 业务逻辑通过 hall 封装成 so 库. 这样就不用遵循 kernel 的 gpl 开源协议, 从而保护厂商的利益. 不过也因为这个原因安卓被 linux 踢出了内核主线程.中添加如下内容, 将我们的添加的 hall 库编译进系统.对应的位置为。添加库的位置让系统能够找到, 该正则表达式指定了库的位置为。需要修改的文件如下, 修改的内容和上面是一模一样

文章图片
#java#开发语言#android +4
到底了