【问题标题】:Linux UART driver - debugging time taken for __init callLinux UART 驱动程序 - __init 调用所花费的调试时间
【发布时间】:2012-09-25 07:12:11
【问题描述】:

我对 Linux 内核有点陌生,我们的团队正在尝试优化设备的启动时间。观察到 8250 UART 驱动程序需要超过 1 秒才能完成 __init 调用。使用 printk 并通过生成的控制台时间戳记在每条日志消息前面,我能够缩小需要额外时间的函数调用:

ret = platform_driver_register(&serial8250_isa_driver);

作为一个新手,我不确定从调试的角度我还能做些什么来追踪问题?我正在寻找一些经验丰富的内核开发人员的指针/建议。只是好奇内核开发人员会从他们的“调试工具箱”中使用什么其他方法?

谢谢, 维杰

【问题讨论】:

    标签: linux-kernel linux-device-driver kernel-module kernel


    【解决方案1】:

    如果我理解正确,则寄存器函数正在使用该结构做一些事情(可能是轮询地址或其他东西)。您需要查看其中定义的任何函数是否被寄存器调用。

    为了进一步回答您的问题,您运行的平台是否有 8250 ISA UART?如果不是,这可以很好地解释为什么它需要这么长时间才能初始化(它正在超时)。

    【讨论】:

    • 8250 在当时是标准的 UART。我们在这里最有可能看到的是集成到更大设备中的 8250 寄存器兼容设备。这很常见。
    猜你喜欢
    • 2012-06-22
    • 1970-01-01
    • 2015-10-12
    • 2012-06-24
    • 1970-01-01
    • 2018-11-03
    • 1970-01-01
    • 2014-05-18
    • 1970-01-01
    相关资源
    最近更新 更多