在 linux I2C 驱动之----i2c_client 的注册中介绍了i2c_client的注册,现在再来说说i2c_driver的注册过程。
每一个驱动程序都有 module_init(xxxx_init) 这个语句,它代表系统启动的时候会自动执行 xxxx 这个函数,也就是说驱动的人口函数是由module_init来定义的。当然还有module_exit(XXXX),它代表系统卸载驱动时调用(linux系统允许动态加载卸载驱动),这一部分这不细说了。
上文提到的 xxxx_init 是驱动的入口函数,在此函数中,我们一般注册驱动的driver,比如我今天说的 i2c_driver:
static int __init xxxx_init(void)

本文详细介绍了Linux I2C驱动中i2c_driver的注册过程,包括module_init和module_exit在驱动加载和卸载中的作用,i2c_driver结构体的关键字段,以及i2c_add_driver函数的工作原理。重点解析了driver_register、bus_add_driver等函数调用链,以及如何通过i2c_match_id实现i2c_driver与i2c_client的匹配和probe函数的调用。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



