原帖 | 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的,因为后面退出低功耗的时候还会用到控制块中的信息。
相关笔记