如何probe()调用电话?谁叫它?根据我的理解,__init()寄存器driver然后以某种方式probe()被调用到register设备数据irq等.它究竟发生了什么?
我正在研究触摸屏驱动程序及其__init注册本身i2c driver.然后探测期望i2c_client数据返回null.我想跟踪它被填满的地方.
在驱动程序中,我经常看到使用这三种类型的init函数.
module_init()
core_initcall()
early_initcall()
Run Code Online (Sandbox Code Playgroud)
我正在阅读围绕总线,设备和驱动程序构建的Linux设备模型.我能够理解设备和驱动程序如何匹配,但不清楚总线在这里的作用,总线如何与设备匹配.
我还有一个疑问,关于平台设备从哪里得到它的名字.
"平台总线只是将每个设备的名称与每个驱动程序的名称进行比较;如果它们相同,则设备与驱动程序匹配."
现在我无法真正理解上述观点.我相信设备名称首先在dts文件中定义,然后相应的驱动程序名称在平台驱动程序代码中定义.
如果这两个名称匹配,则从驱动程序代码调用probe,这将确认设备确实存在.
有没有人能从总线的角度让我知道整个过程.
我正在写一个UART驱动程序。我在第 14.Linux 设备模型一章中遇到了这两个函数。
int device_register(struct device *dev);
int driver_register(struct device_driver *drv);
Run Code Online (Sandbox Code Playgroud)
由于 UART 是一个字符驱动程序,我使用 ( 动态创建了主alloc_chrdev_region)设备号,并使用cdevadd().
我在 omap-serial.c 中遇到了uart_register_driver()和。platform_driver_register()
我可以映射driver_register与 ,platform_driver_register()但uart_register_driver映射与 tty 相关的函数。因为我是初学者,所以我不想使用 tty 相关的函数。
uart_register_driver与?有关device_driver()。
请解释。