挂载inst:register和init的关系

🔍 溯源 ✍️ Jack | 📅 2025-02-25 | 👍 0 | 原帖↗
#知识星球 #立芯嵌入式 #来源/立芯星球 #技术/C语言 #技术/软件架构 #质量/普通

原帖 | Jack | 2025-02-25 20:45 | 👍0 | 阅读约1

挂载inst/register和init的关系

把init抽离出来是为了和deinit对应,因为实例化和初始化的区别是,实例化它主要完成的是接口挂载,初始化涉及到内存申请(队列内存)和硬件使能(iic使能),这些资源是handler所需要的,当我们在某些场景有需求去失能temp&humi模块的时候(低功耗),就需要调用handler的deinit函数,在deinit函数中我们可以做和init对应的事情,例如释放队列内存,失能driver使用的硬件资源(如硬件iic)。
我们在handler的init函数中调用了driver的inst函数,一方面是完成了driver的接口挂载,另一方面是在driver的inst函数中调用了driver的init函数
当我们反初始化的时候,只需要释放内存、关闭硬件模块就行了,模块的控制块,也就是driver、handler各自的类的结构体是没必要free的,因为后面退出低功耗的时候还会用到控制块中的信息。


相关笔记