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:向后兼容 GiCv2

Guru**** 2482225 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1446242/processor-sdk-am62x-backward-compatibility-to-gicv2

器件型号:PROCESSOR-SDK-AM62X

工具与软件:

您好!

在 AM6202 (在 tqma62xx SoC 上)上工作时、我看到 Linux 设备树 中有适用于 GiCv2 (GICC、GiCH、GiCV)的寄存器组。 但是我在技术手册中找不到这方面的信息、GICC 地址设置为0、转接器列出两次、这是奇数。

它是否与 GiCv2驱动程序向后兼容、如果是、GICC/H/V 使用的地址是什么?

感谢您的帮助。

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

    您好  Simon Plantier

    为查询键入您的答案。

    让我在内部与团队进行核实。

    此致、"

    Sreenivasa  

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

    您好、Simon:

    我在您链接的器件树(k3-am62-main.dtsi)中没有看到任何"v2"参考。 GIC 使用兼容 v3的版本。

       gic500:中断控制器@1800000{
           Compatible ="arm、gic-v3";
    ...
           GIC_ITS:微信控制器@1820000 {
               Compatible ="arm、gic-v3-its";

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

    您好、Bin、

    为了便于参考、我将使用 tq 在 Linux 内核6.1的 Yocto 构建中使用的 tqma62xx 的器件树(此处为 https://github.com/tq Linux-systems/linux-tqmaxx/blob/kirkstone.TQMa62xx.bsp.sw.0001/arch/arm64/boot/dts/ti/k3-am62-main.dtsi#L17)、尽管我看起来与6.13相同。

    我提到这样一个事实,即 gicv3只需要分发和再分发寄存器。 因此、当将其用作 gicv3时、仅使用 GICD 和 GICR。 GICC/H/V 是 GiCv2寄存器、gicv3驱动程序不需要这些寄存器。 我想知道这些 GiCv2寄存器是之前版本的剩余部分、还是在某种兼容模式下的剩余部分;在这种情况下、我想知道重复 GICR 线路是否是有意为之、以及为 gicv2寄存器指定的地址是否正确。

    由于我在文档中没有找到这些 GICC/H/V 寄存器的任何参考、因此我有点犹豫。

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

    您好、Simon:

    我不是回答您问题的 GIC 专家、但根据适用于 GIC-v3的内核 devicetree 绑定文档(见下方链接)、A53需要 GICC/H/V 寄存器区域、这正是 AM62x 器件所具有的。

    https://github.com/tq data-systems/linux-tqmaxx/blob/kirkstone.TQMa62xx.bsp.sw.0001/Documentation/devicetree/bindings/interrupt-tcontroller/arm%2Cgic-v3.yaml#L71

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

    您好、Liu、

    我不知道设备树中是否需要这些寄存器、您是否知道在哪里以及哪里可以找到文档中使用的值? 或者、如果它们是仅用于设备树兼容性且未反映硬件功能的填充物?

    再次感谢您的支持

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

    您好、Simon:

    我不是 GIC 专家、但我想这些值包含在 ARM GIC 手册中。

    GICC/H/V 区域主要用于在 KVM 中模拟 GICv2、这在 Processor SDK 中基本上是无用的。 因此、我们可以认为它们是 devicetree fillers。

    您可能还会注意到 k3-am62-main.dtsi 中 gic500节点的一个错误、即第二个和第三个"reg"区域与"GICR"重复。 这会导致内核 GIC 驱动程序获取错误的 GICC/H/V 区域数据、但不会导致任何问题、因为未使用 GICv2仿真。 我已将该错误报告给我们的软件开发团队、应该在将来的 SDK 中修复。

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

    您好、Bin、

    GIC 地址特定于 SoC、ARM 未对这些地址进行描述。 您是否知道是否有人可以确认这些寄存器(GICC/H/V)是否存在于硬件中? 如果是、在哪些地址?

    看看其他 SoC 的设备树、有些节点具有这些寄存器、有些节点没有、这使我认为它们没有文档中建议的那样具有强制性(正如您指出的、如果使用了重分配器、由于复制该重分配器会导致 Linux 错误)。 但是、当它们存在时、所用地址通过了32位的完整性检查、这与我在上面链接的 DTS 中的情况不同(我以为 CPU 是0x0、但我出错了、它是0x100000000)。

    实际上我只需要知道这些寄存器是否存在于 SoC 中、我需要在论坛上提问的原因是文档(它们所在的位置不存在)和器件树(它们所在的位置、但节点可疑)之间的差异。

    谢谢你

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

    您好、Simon:

    我只需要知道这些寄存器是否存在于 SoC 中

    无论寄存器是否存在、Linux 内核都不会使用它们。 DT 条目被传递到 GIC 驱动程序并分配给变量、但驱动程序不使用这些区域。

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

    您好、Bin、

    我不需要这些用于 Linux 的信息、而是用于 RTOS 开发。 我使用了 Linux 器件树、因为它是构造函数提供的 BSP、并且与文档的差异提出了问题。

    感谢您的支持。

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

    您好、Simon:

    在我们内部文件中的第一次研究试验中,我找不到 GICC/H/V 的内存映射信息

    您能否帮助我理解您为什么需要 RTOS 开发所需信息? 我认为您应该只需要 GICD/R、而不需要 GICC/H/V.

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

    你(们)好

    我们想知道是否可以在此 SoC 上使用仅与 gicv2兼容的应用、或者是否必须使用 gicv3版本。

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

    您好、Simon:

    请不要在 GICv2模式下实施、否则您将无法获得任何技术支持。

    即使内核 devicetree 中 GICC/H/V 的信息是正确的、也不会以任何方式验证该函数、也不受支持。

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

    您好、Bin、

    感谢您的回答。