- 博客(11)
- 收藏
- 关注
原创 设备驱动模型-kobject
很显然,如果系统中设备非常多、依赖关系非常复杂的时候,无论是内核还是驱动的开发人员,都无力维护这种关系。启动某一个设备前,内核会检查该设备是否依赖其它设备或者总线,如果依赖,则检查所依赖的对象是否已经启动,如果没有,则会先启动它们,直到启动该设备的条件具备为止。bus_type,device,device_driver,class四个数据结构,他们更多的是把大量的不同功能的硬件设备和对应的驱动维护成一个树形结构,从而方便kernel的统一管理。等),因此这些大型的数据结构,也必须是动态分配、动态释放的。
2023-07-31 14:33:34
575
1
原创 驱动注册和设备注册分析-2
通过上面的驱动注册,猜想设备注册的大致思路就是注册device的时候把这个device挂到对应总线的设备链表里去;但是我们通常把设备信息写到设备树上,这里就得先弄明白内核怎么把设备树里的设备信息转换成设备结构体;需要研究的问题如下:(1)设备是怎么从设备树转换而来的;(2)设备又是怎么挂到对应总线的设备链表上去的;......
2022-08-06 09:22:14
706
1
原创 驱动注册和设备注册分析-1
1)给i2c_driver里的device_driver进行初始化,赋值了.owner和.bus,其中.bus就是device_driver里的bus_type,也即是i2c总线的bus_type,里面定义了设备与驱动的match函数,通过设备树来匹配的方法就写在这里;代码逻辑是从klist_iter里的设备链表去得到一个链表节点,然后通过这个设备节点去得到设备的私有数据,而设备的私有数据和驱动的私有数据是一样的,可以知其一而得到另外一个,这里主要还是得看看链表节点怎么得到的;...
2022-08-01 20:17:01
1190
原创 重新跑驱动的probe函数 : return -EPROBE_DEFER;
某个驱动在probe过程中,如果遇到依赖的资源还没有准备好,那么就返回-EPRBOE_DEFER,kernel检测到该驱动返回的是-EPRBOE_DEFER,就会在过一段时间后让该驱动再次probe。
2022-07-28 17:30:11
1416
原创 记录:GKI 学习
通用的内核映像-GKI通用内核映像 | Android 开源项目 | Android Open Source Project前提摘要:Android 通用内核(ACK) 是所有Android产品内核的基础,供应商内核和设备内核位于供应商内核和设备内核位于 ACK 的下游。供应商通过修改内核源代码并添加设备驱动程序,添加了对 SoC 和外围设备的支持。这些修改内容可能很多,以至于设备上运行的代码中有多达 50% 是树外代码(并非来自上游 Linux 和 AOSP 通用内核)。因此,设备...
2022-05-16 15:29:30
6291
原创 记录:闪烁灯的颜色问题
【问题背景】在手机来电通知等场景下,灯要设置为白色闪烁一、代码流程分析上层代码:1.frameworks/base/services/core/java/com/android/server/BatteryService.javaled类里的通过LIGHT_ID_BATTERY得到 mBatteryLight ,然后可通过 updateLightsLocked()方法去根据电池状态去设置led的颜色;颜色参数:qssi12/frameworks/base/co...
2022-05-07 10:27:17
1666
1
原创 VMware Ubuntu20网络设置和DNS设置
这里需要了解到从ubuntu18开始网络管理模式改变了,在/etc/network/interfaces里设置固定IP的配置,即使配置也不会生效,而是改成netplan方式,配置写在。设置虚拟机ip,子网掩码,网关,DNS除了在设置网络那里设置外还可以在网络配置文件里写,这样就能每次开机都用这个网络配置了。配置的01-network-manager-all.yml文件如下。2.在Ubuntu20里设置网络和DNS。设置虚拟机网络的方法取其一就可以了。对应的设置->网络界面如下。...
2022-02-12 22:40:42
2507
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人