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.

[参考译文] AM62A7-Q1:无法从 opt3001驱动器对 IN_LIGHTNASE_INPUT 进行分类

Guru**** 2479435 points
Other Parts Discussed in Thread: OPT3001, AM62A7-Q1, AM62A7, SYSCONFIG

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1398530/am62a7-q1-fail-to-cat-in_illuminance_input-from-opt3001-driver

器件型号:AM62A7-Q1
主题中讨论的其他器件:OPT3001AM62A7SysConfig

工具与软件:

尊敬的 TI 专家:

从 opt3001驱动程序获取结果时出现问题。

当尝试对 in_looperance_input 进行 cat 时、无论积分时间如何、cat 都会导致超时:

使用 i2ctransfer、我们可以从 opt3001读取寄存器、初始值如下:

通过 i2ctransfer、寄存器0x00的初始结果为0x00 0x00、 访问 IN_LIONAS_INPUT 后、寄存器0x00的结果将刷新:

我们想知道本例中的问题是什么。 我们没有修改 opt3001驱动器中的任何内容、保留了以前的相关硬件设计(设计工作正常)、并且可以通过 i2c 访问芯片。

此致、

黄靖杰

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

    您好、黄

    我将把您的线程发送给 opt3001团队、讨论他们期望他们参与 Linux 处理器交互的方式。 如果您在几个工作日内未收到回复、请 ping 该主题。

    此致、

    Nick

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

    您好、Nick。

    一个好消息是、通过在器件树中禁用中断、opt3001驱动器可以完美地工作。

    根据我们之前的设置、驱动程序将等待此事件并最终报告超时错误。

    通过阅读数据表、我不明白这里的想法、因为当测量值超过限制时会调用中断、它与每个读取事件有什么关系?

    此致、

    黄靖杰

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

    尊敬的 Jingjie:

    出现此错误似乎是因为传感器产生的中断被主机系统忽视、导致内核最终超时。 您能否共享 DTS (设备树源)?

    谢谢!

    Daniel Balmaceda

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

    Daniel、您好!

    故障案例使用以下 DTS:

    SOC 引脚 B19连接到 opt3001的 INT 引脚。 根据我们的测试、如果在 opt3001中设置了 INT 的低电平有效、则该引脚始终为低电平。

    我们还尝试将中断类型更改为 IRQ_TYPE_LEVEL_LOW、但仍然未正确处理中断。

    目前我们在没有中断的情况下使用它、运行正常。 此问题可能是由某些硬件缺陷引起的。 但我要再次问:

    1.为什么传感器一开始就一直产生中断? 默认范围是全范围、因此极不可能发生超出范围事件。   

    2.为什么读取事件必须依赖于指示超出范围的中断?

    我希望这些信息有用,并期待您的分析。

    此致、

    黄靖杰  

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

    尊敬的 Jingjie:

    我们目前正在努力通过 OPT3001重新创建您的设置。

    1、如果没有超过上限和下限寄存器、那么器件不应该产生中断。 您是否定义了这些寄存器中的任何内容?

    2.每次读取后,该器件会将此数值与上限和下限寄存器进行比较,如果超过这些寄存器,则会产生中断。 这只是器件的一个特性。 在本例中、每当您进行设备读取时、设备读取的值似乎超出某个阈值、因此会生成中断。 但是、您的主机系统似乎没有注意到该中断、并且正在超时。

    请留出一些时间来调试此设置。

    谢谢!

    Daniel Balmaceda

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

    Daniel、您好!

    感谢您的解释。  

    我们使用 i2ctransfer 检查了0x01寄存器、所用值为0xc810、即数据表中的默认值。 该范围应自动达到满量程、因此理论上不应产生中断。

    此问题仅出现在我们的第二个设计中、其中 opt3001集成在独立 PCB 中并通过 FPC 连接到主 PCB。 我认为我们最好检查硬件是否存在缺陷。

    此致、

    黄靖杰

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

    尊敬的 Jingjie:

    我只是想告诉您有关此文件的状态。

    初始测试后、中断引脚上似乎存在硬件问题。 我们将在接下来的两天内完成验证。

    谢谢!

    Daniel Balmaceda

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

    Daniel、您好!

    很抱歉、我们在过去几天没有时间进一步调查该问题。

    我仔细检查了硬件设计和器件树设置、故障的设计几乎与正常设计相同、不同之处在于 opt3001现在位于我上次提到的单独 PCB 上。

    以下是详细信息:

    opt3001电路板:

    主板:

    设备树:

    需要注意的一点是、如果我们未在器件树中提供中断设置、则 INT 引脚将始终为高电平、指示未调用中断、但如果提供了设置、则 INT 引脚将始终为低电平、从而导致超时问题。

    在我看来、pinctrl 是造成这个问题的、但这种设置在之前的设计中是可行的。 我们是否需要改为将 PIN_INPUT 更改为 PIN_INPUT_PULLUP?

    此致、

    黄靖杰

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

    尊敬的 Jingjie:

    我们似乎能够使用您提供的 DTS 来协助该器件工作。 引脚未上拉可能是中断线始终为低电平的一个可能原因。 尝试将 PIN_INPUT 更改为 PIN_INPUT_PULLUP。

    谢谢!

    Daniel Balmaceda

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

    Daniel、您好!

    感谢您的建议。 实际上在我上一篇文章发布后、我们立即尝试了"PIN_INPUT_PULLUP"选项、但引脚仍被拖至低电平。

    但是、由于您可以使其使用"PIN_INPUT"、因此建议引脚在使用此设置时正常工作。

    无论如何、我会让我们的硬件工程师进一步进行研究。

    此致、

    黄靖杰

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

    尊敬的 Jingjie:

    您能否在不连接到中断引脚的情况下执行以下测试并分享您的观察结果?

    1.在正常情况下获取勒克斯值(例如读数为200lux)
    2.放一些灯(例如:手机闪光灯)并读取(假设读数为400lux)
    3.现在从当前文件夹移动到"事件"文件夹:cd /sys/bus/iio/devices/iio:device0/events
    4.现在将阈值高更改为300lux (根据您的设置、应选择值、这样可以轻松创建阈值高跳跃:echo 300 | sudo tee in_looperance_thresh_rising_value
    5.请检查阈值是否正确:Cat IN_LIGHTNASE_THRESH_RISING_VALUE (应返回300)
    6.现在启用连续模式:echo 1 | sudo tee in_looterance_thresh_rising_en
    7.再次检查是否启用了连续模式:Cat in_looterance_thresh_rising_en (应返回1)
    8.在示波器中检查 INT 引脚线是否像您之前提到的一样高
    9.现在让闪光灯和检查示波器您的中断线路应该低,因为光传感器读数超过阈值高(阈值高300 lux< 400lux 电流读数)
    10.如否 9正在观察、那么这肯定是 dts 中断配置或 h/w 问题
    11.与在连续模式下一样,您无法读取值,因此将其禁用: echo 0 | sudo tee in_looterance_thresh_rising_en

    谢谢!

    Daniel Balmaceda

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

    Daniel、您好!

    我们移除其中一个电阻器、然后运行测试。 结果为:

    1.在步骤9中、opt3001上的中断引脚按预期触发、表明其按设计工作。

    2、另一方面,水平很低。 在我看来、一旦我们在 DTS 中设置引脚、无论发生什么情况、都将被拉低。

    正如你刚才的答复所说、你可以使 opt3001与我提供的 DTS 详细信息正常工作、对吗? 如果是这种情况、我将把故障检查全部交给硬件团队。

    此致、

    黄靖杰

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

    Daniel、您好!

    BTW 在测试中、您是否控制了 DTS 中所写相同的引脚 B19 GPIO1_8? 这个问题是否可能来自这个特定的引脚、但通过阅读数据表、我认为这不太可能是问题的原因? 我们的硬件团队有疑问、因此我需要在这里提问。

    此致、

    黄靖杰

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

    尊敬的 Jingjie:

    很高兴看到器件按预期工作。 另外还有几件事:

    1. INT 引脚将处于低电平、直到禁用连续模式:echo 0 | sudo tee in_looterance_thresh_rising_en
    2.请在执行此命令后检查 opt3001的 INT 引脚电平是否再次上升
    3.您能否确认 opt3001 INT 引脚是否设置为输出、以便 AM62A7-Q1的 INT 引脚设置为输入?


    如前所述、opt3001的 INT 引脚未连接到硬件、因此我们可以使用中断执行测试(请在 DTS 文件中启用中断)


    1.请确保连续模式已禁用
    2.用示波器连接 opt3001的 INT 引脚
    3.现在请尝试读取勒克斯值: Cat IN_LIGHTANCE_INPUT
    4.等待电流积分时间(100ms 或800ms)后、您应该会变为低电平有效

    谢谢!

    Daniel Balmaceda

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

    Daniel、您好!

    感谢您的答复。 在我们昨天的测试中、INT 引脚未连接到 SOC、行为与您描述的完全相同。

    至于第二个测试、我们可以做到、但我认为当前的主要问题是 AM62A 中的 GPIO 行为不符合预期。  

    除了用作 opt3001的 INT 输入的 B19之外、我们还尝试了其他一些引脚、将它们设置为 GPIO 并提供 PIN_INPUT_PULLUP 选项。 奇怪的是、它们中的任何一个都不能真正拉高。

    虽然数据表没有明确写入、但我想 IO 类型意味着引脚处于推挽模式?

    现在的情况有点混乱、因为我不知道是 GPIO 驱动程序还是硬件制造造成的问题。 但显然 opt3001和它的 Linux 驱动程序都按预期工作。

    此致、

    黄靖杰

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

    尊敬的 Jingjie:  

    我们一直在使用我们手头的另一个 Linux 处理器进行测试。 从您发送的 DTS 中、我没有看到您的设置有任何错误、但我对 AM62A7不熟悉。 如果我有任何进一步的建议、请允许我与您联系。 如果没有、您可能需要咨询处理器团队。

    谢谢!

    Daniel Balmaceda

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

    Daniel、您好!

    感谢您的支持、并期待更多信息。

    此致、

    黄靖杰

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

    尊敬的 Jingjie:

    我不完全确定这是问题所在;但是、我注意到您将0x0198用作引脚地址:

    但是、在您发送给我的最近映像中、引脚地址似乎为0x00F4198:

    除此之外、中断的配置方式没有看到任何不同。 尝试将其配置为:

    AM62AX_IOPAD (0x000F4198、PIN_INPUT_PULLUP、7)

    谢谢!

    Daniel Balmaceda

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

    Daniel、您好!

    该配置源自 SysConfig 工具。

    实际上、AM62a 中的所有 GPIO 引脚都是通过寄存器0x000F4XXX 进行配置的。 我想他们必须在引脚控制驱动器中编写地址计算、以便 pinctrl 语句中只需要最后几位。

    此致、

    黄靖杰

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

    尊敬的 Jingjie:

    由于器件中断按预期工作、我会将这篇文章转到处理器论坛、以便他们可以进行进一步调试。

    谢谢!
    Daniel Balmaceda

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

    尊敬的 Jingjie:

    似乎一切都在正常运行? 请针对 AM62Ax 团队重申当前问题、我在之前的回复中很难找到该问题。

    此致、

    Nick

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

    您好、Nick。

    感谢您的答复。 我与 Daniel 讨论了很多、并确信 OPT3001的工作正常。

    现在出现该问题的根本原因是 AM62A 中的 GPIO 设置行为错误。 在我们尝试将引脚 B19设置为 GPI 时、无论使用  PIN_INPUT 还是 PIN_INPUT_PULLUP、该引脚都被拉低、而且 opt3001的 INT 引脚实际上不会产生任何中断。 (opt3001的默认中断为低电平有效)

    器件树设置如下:

    BTW Linux SDK 的版本是9.2。 我们尝试配置另一个引脚、结果以完全相同的方式出现故障。  

    此致、

    黄靖杰

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

    您好、黄

    明白了、感谢您的确认。 我将向一位团队成员发送您的主题、以讨论 GPIO 设置-如果您在几个工作日内没有收到回复、可以随意对该主题执行 ping 操作。

    此致、

    Nick

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

    您好、黄

    您能帮助我了解中断的预期行为吗?

    您能否分享"cat /proc/interrupts "的输出? 我想看看 Linux 是否枚举了该中断。  

    为"#include "已添加到设备树中? 该包含文件允许使用中断。  


    谢谢!

    Anshu

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

    尊敬的 Anshu:

    很抱歉我的回复太晚了、我对其他一些问题也很感兴趣。

    opt3001上中断的预期行为是、一旦检测到的环境光超过当前限制、它就会默认将中断引脚拉至低电平、以便可以触发其 Linux 驱动程序中的某些函数来处理该情况。

    我们测试过、使用默认设置时、即使将闪光灯直接投射到传感器上、我们也无法手动触发此事件、因为默认限制是其整个范围。

    但问题是、如果我们设置 pinctrl 并注册该中断、该引脚会以某种方式被拉低。

    枚举 intterrupt:

    "#include "以 k3-am62a.dtsi 编写、此文件包含在 k3-am62a7-sk.dts 中、并在其中写入 opt3001相关配置。 我想这是可以的吗?

    此致、

    黄靖杰

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

    您好、黄

    您能否在 Kernel config 中确认已启用并加载该模块? 以下是 menuconfig 中的路径。 配置内核后、您将必须重新构建内核: https://software-dl.ti.com/processor-sdk-linux/esd/AM62AX/09_02_00/exports/docs/linux/Foundational_Components_Kernel_Users_Guide.html#configuring-the-kernel

    将您的器件树与文档(https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/Documentation/devicetree/bindings/iio/light/ti,opt3001.yaml?h=ti-linux-6.1.y)进行比较时、我看不到明显的问题。

    在设备树中定义&MAIN_GPIO1节点的位置? 您可以尝试将 pinctrl-names & pinctrl-0移至 MAIN_GPIO1。

    谢谢!

    Anshu

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

    尊敬的 Anshu:

    很抱歉,因为我们有假期,所以很晚才回复。  

    已启用并加载 opt3001的 Linux 驱动程序。 事实上、我们通过这个驱动程序创建的"cat in_lighting_input"找到了这个问题。

    默认情况下、中定义了"MAIN_GPIO1"节点 k3-am62a-main.dtsi . 我选中的包含关系如下所示:

    k3-am62a-main.dtsi 包括  文件夹 包括  文件夹 包括 k3-am62a7-sk.dts。 最后一个文件包含 opt3001的节点定义、我在上一个回复中发布了该定义。 我想这个设置是正确的吗?

    至于您的最后一个建议、我将尝试并尽快回复结果。

    此致、

    黄靖杰

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

    您好、黄

    [报价 userid="565128" url="~/support/processors-group/processors/f/processors-forum/1398530/am62a7-q1-fail-to-cat-in_illuminance_input-from-opt3001-driver/5449393 #5449393"] k3-am62a-main.dtsi 包括  文件夹 包括  文件夹 包括 k3-am62a7-sk.dts。 最后一个文件包含 opt3001的节点定义、我在上一个回复中发布了该定义。 我想此设置正确吗?

    这应该不是问题。 编译器件树时、它会将所有其他器件树包括(#include XYZ)组合到一个更大的编译器件树中、该树称为 k3-am62a7-sk.dtb。

    如有更新、请随时在该主题帖上发帖。 我一直在试图找到任何其他问题,但没有什么明显的。

    谢谢!

    Anshu

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Anshu:
    我试过你的想法,但有一个问题:
    将 pinctrl-0更改为 MAIN_GPIO1后、中断 未在系统中注册、因为在/proc/interrupts.中看不到任何相关信息
    此外、  /sys/bus/iio/devices/.下没有显示任何内容 在正常情况下、应该会有驱动程序创建的内容、例如"in_illumance_input"等 lsmod 的输出在某种程度上表明 opt3001驱动器被探测和列出。
    我认为这种方法可能不正确。 器件树中的其他节点使用独立的引脚控制节点配置 pinctrl、方式与使用"opt3001_1_pins_default"时相同。

    此致、

    黄靖杰

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

    您好、黄

    感谢您的更新。 我对"in_illumance_input"一无所知、但通过搜索、它似乎与 tsl2583相关。
    我找到了以下几个链接:

    此致、

    Anshu

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

    尊敬的 Anshu:

    "in_illumance_input"是由 opt3001驱动程序注册的接口、用于用户空间来访问 opt3001结果。

    事实上、在 pinctrl-0中使用 MAIN_GPIO1时、驱动程序未注册该接口、表明配置错误、驱动程序无法按设计运行。

    这个问题与 tsl2583无关。

    此致、

    黄靖杰

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

    您好、黄

    感谢您澄清这一点。 您在中使用的是什么目录?

    浏览后、我看不到任何明显的问题。 您还可以尝试解压缩 dtb、以查看是否正确发现了节点。

    如果/sys/bus/iio/devices 未填充、则驱动程序未加载或设备树中的其它内容。 即使中断存在问题、也应该能够填充。

    谢谢!

    Anshu

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

    尊敬的 Anshu:

    通常会在中注册"in_illumance_input"以及其他接口 /sys/bus/iio/devices/iio:device0。

    驱动程序已加载、因为我们可以在 lsmod 的输出中找到它。 不知何故、驱动程序有一些问题、但可以肯定的是在 i2c 传输中没有问题、因为驱动程序中的大多数 dev_err 都无法通过 I2A 读取/写入寄存器、并且 dmesg 中未显示任何寄存器。

    到目前为止、各种办法之间的差异可归纳如下:

    1.没有 pinctrl 和中断设置:opt3001驱动程序按预期工作。

    2. 设置如下:opt3001驱动程序注册正确,当尝试目录为 in_looperance_input 时,驱动程序报告"读取错误:连接超时"。 该引脚被拉至低电平、但未被 opt3001拉至低电平、从而导致问题。

    3.使用以下设置: opt3001驱动程序未正确注册,没有用户访问的接口,如前面的 replys 所述。

    现在的关键问题是、一旦注册了中断、该引脚将被拉低、但 opt3001不会拉低。 如前所述、我们试过"PIN_INPUT"以及"PIN_INPUT_PULLUP"、没想到。

    此致、

    黄靖杰

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

    尊敬的 Huang:

    我将在自己的终端尝试复制此示例、但如果无法访问 OPT3001器件、则会很难做到。 我将告知您我是否有任何更新。

    谢谢!

    Anshu

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

    尊敬的 Anshu:

    我认为这个问题与 opt3001无关。 无论目标器件是什么、只要 GPIO 设置按预期工作、就可以解决该问题。 对于 OPT3001、该 GPIO 必须是输入、且其默认电平应为高电平。

    此致、

    黄靖杰

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

    您好!

    关闭螺纹、因为很长时间没有响应。 如果您想继续讨论、请随时回过头来。

    此致

    Ashwani