相关疑难解决方法(0)

谁调用了驱动程序的probe()

如何probe()调用电话?谁叫它?根据我的理解,__init()寄存器driver然后以某种方式probe()被调用到register设备数据irq等.它究竟发生了什么?

我正在研究触摸屏驱动程序及其__init注册本身i2c driver.然后探测期望i2c_client数据返回null.我想跟踪它被填满的地方.

linux-device-driver linux-kernel

35
推荐指数
3
解决办法
3万
查看次数

module_init()与core_initcall()与early_initcall()的关系

在驱动程序中,我经常看到使用这三种类型的init函数.

module_init()
core_initcall()
early_initcall()
Run Code Online (Sandbox Code Playgroud)
  1. 我应该在什么情况下使用它们?
  2. 另外,有没有其他的init方式?

init linux-device-driver linux-kernel

29
推荐指数
2
解决办法
2万
查看次数

从平台设备获取它的名称

我正在阅读围绕总线,设备和驱动程序构建的Linux设备模型.我能够理解设备和驱动程序如何匹配,但不清楚总线在这里的作用,总线如何与设备匹配.

我还有一个疑问,关于平台设备从哪里得到它的名字.

"平台总线只是将每个设备的名称与每个驱动程序的名称进行比较;如果它们相同,则设备与驱动程序匹配."

现在我无法真正理解上述观点.我相信设备名称首先在dts文件中定义,然后相应的驱动程序名称在平台驱动程序代码中定义.

如果这两个名称匹配,则从驱动程序代码调用probe,这将确认设备确实存在.

有没有人能从总线的角度让我知道整个过程.

device-driver linux-device-driver linux-kernel

5
推荐指数
1
解决办法
8151
查看次数

device_register 和 driver_register 的区别

我正在写一个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()

请解释。

c serial-port linux-device-driver embedded-linux uart

2
推荐指数
1
解决办法
3753
查看次数