This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] PROCESSOR-SDK-AM62X:实现的驱动程序偶尔消失

Guru**** 2330400 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1509017/processor-sdk-am62x-implemented-driver-occasionally-disappear

器件型号:PROCESSOR-SDK-AM62X

工具/软件:

您好:

我的客户遇到以下问题。

*他们偶尔会观察到实施的 Linux 摄像头驱动程序消失。

客户开发并实现了摄像头驱动程序、然后将用到 TI SDK 中。
客户使用 TI Linux SDK 版本09_02_01_10。

下面记录了成功实现摄像头驱动程序和未能实现摄像头驱动程序的情况。

请确认所附的日志吗? 你也可以告诉我我们需要检查的一点吗?

此致、
e2e.ti.com/.../2352.log.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    查看故障日志、似乎 没有加载 v4l2_fwnode。 当失败时、Linux 是否完成引导?

    这是定制板还是 AM62x EVM 板上的?

    您能否分享客户在添加传感器驱动程序时所做的更改?

    您能否共享失败案例的完整日志?

    谢谢你。

    建中

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    感谢您的答复。

    >当它失败时、Linux 是否完成引导?
    我现在正在检查它。

    >这是在定制电路板还是 AM62x EVM 电路板上?
    它位于定制电路板上。

    >您能否分享客户为添加传感器驱动程序所做的更改?
    我不确定具体的更改、因为此驱动程序是由第三方开发的。


    >是否可以共享失败案例的完整日志?
    我现在向客户询问这个问题。

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    我们检查了上述剩余商品、还有其他问题。

    >>当它失败时、Linux 是否完成了引导?
    >我现在正在检查它。
    是的、在这种情况下、他们还可以确认启动了内核。

    >>您是否可以共享失败案例的完整日志?
    >我现在向客户询问。
    我们还不能得到这一点,因为这种情况很少发生。

    下面是另一个问题。

    *客户在他们的电路板上使用 eMMC 引导。 当他们重新执行格式化并重新安装内核映像和文件系统时、这种情况似乎消失了。
    然后、客户询问了以下问题。(这包括他们的假设。)

    问:这是客户启动序列的一部分。

    SLEEP (10);//等待启动 TI I2C 驱动程序
    System ("insmod /local/bin/gpio-pca953x.ko.1.0);//启动外部摄像头模块的 IO 扩展器
    System ("insmod /local/bin/ar1335.ko.1.0 ");//启动摄像头模块本身

    客户假定在"失败"的情况下内核无法读取模块。 但是,你能给你的意见,有一个可能性内核很少无法读取模块?  

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    system("insmod /local/bin/gpio-pca953x.ko.1.0 ");//启动外部摄像头模块的 IO 扩展器
    System ("insmod /local/bin/ar1335.ko.1.0 ");//启动摄像头模块本身
    [/报价]

    为什么您的客户使用 insmod 手动加载模块? 它们是否不是使用设备树告知内核自动加载模块?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    >您的客户为什么使用 insmod 手动加载模块?  
    我不确定具体的原因。 但是,我认为提供作为内核模块或整合到内核本身都可以正常工作。
    我认为不同之处在于客户如何考虑他们的设计概念。
    使用自定义内核模块是否有任何问题?

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    有关以下内容的其他信息。
    >您的客户为什么使用 insmod 手动加载模块?  
    起初、客户尝试将其驱动程序实现为内核本身。 不过、客户发现在 SDK9.2上加载此"gpio-pca953x.ko"驱动程序的时间非常晚(最初、客户使用 SDK8.6开发了自己的应用)。 但他们没有看到这种现象。)。
    因此、最终加载的"ar1335.ko"早于"gpio-pca953x.ko"。 作为驱动程序的规格、"gpio-pca953x.ko"的加载时间应早于"ar1335.ko"。 因此、他们更改了驱动器加载方法。

    请继续确认上一个问题。

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    让我在内部进行检查、并在一天或两天内回复您。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    您对此有任何更新吗?

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    请说明您的身份吗?

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    通常、建议使用"modprobe"命令加载模块、因为 modprobe 会自动检查和处理模块相关性。 例如、如果您执行"modprobe  ar1335"、它应该找到 ar1335的所有相关模块并自动加载这些模块。

    相反、当您使用"insmod"加载模块时、只加载一个特定的模块。 可能有些模块可能会被遗漏。

    此致、

    建中

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    感谢您的答复。

    >相反、当您使用"insmod"加载模块时、只加载一个特定的模块。 可能有些模块可能会被遗漏。
    是的、了解 b/w modprobe 和 insmod 之间的区别。
    但是、我认为、如果代码没有实现 ar1335和 gpio-pca953x 的相关模块、我们在启动时肯定会看到实现失败。
    您想象的是什么情景?

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    下面是我可以想到的模块加载失败的原因:

    1.模块依赖项:

    • 缺少依赖关系:  许多模块依赖于其他模块才能正常工作。 如果未加载所需依赖项或找不到所需依赖项、则尝试加载所需依赖项的模块将失败。
    • 循环相关性:  虽然很少见、但理论上可能存在循环依赖关系、其中模块 A 需要 B、而 B 需要 A、从而导致死锁。

    2.  模块设计/编程错误

    • 模块代码中的错误:  模块可能包含编程错误(例如、取消引用空指针、越界访问、竞争条件、错误的内存管理)。 当内核检测到此类无效操作时、通常会导致"内核错误"甚至"内核错误"、从而阻止模块正确加载并可能破坏系统的稳定。
    • 初始化失败:    内核模块(在加载模块时运行)中的 init 函数可能会遇到错误并返回非零值、表示初始化失败。

    3.  内存不足:  这种情况不太可能发生、但 非常大或占用内存的模块可能无法分配必要的内核内存。

    此致、

    建中

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    感谢您发送考虑。
    我会与客户核实。

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    我想请您说出另外一件事。
    客户表示、当他们发现我发布的问题时、他们发现另一个模块的加载也失败。

    模块:"j721e-csi2rx"
    出现此问题时出现错误消息: "j721e-csi2rx:探头30102000.ticsi2rx 失败、错误为-22"

    与"ar1335"和"gpio-pca953x"不同、"j721e-csi2rx"是由 TI SDK 提供的内置模块和原始模块。
    这与上一个不同的情况,但你有没有看到过类似的问题在你身边?

    此致、



     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    此故障很可能是由设备树中的配置数据不正确或缺失引起的。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    感谢您的答复。

    >此故障很可能是由设备树中的配置数据不正确或缺失引起的。
    客户不会更改"j721e-csi2rx"模块的任何设置。 您的意思是您的 Linux SDK 可能有问题吗?

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    客户不更改"j721e-csi2rx"模块的任何设置。 [/报价]

    他们是否对设备树进行了任何更改?  

    他们是否可以将调试打印添加到此函数 https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c?h=ti-linux-6.1.y#n1606?中报告错误的每个位置 这可以帮助我们了解确切的故障是什么?

    谢谢、

    建中