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**** 2468610 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1458818/processor-sdk-am62x-missing-registers-and-or-wrong-addresses

器件型号:PROCESSOR-SDK-AM62X

工具与软件:

我看到的是 mcu_plus_sdk 的 source/kernel/nortos/dpl/a53/Hwip_ARMv8_GIC.c 中的 Hwip_init、其中有:

/*更新转寄器和 SGI_ppi 地址*/
gicrRegs =(CSL_gic500_gicrRegs_core_control *)(HWIP_GIC_BASE_ADDR + CSL_GIC500_GICR_CORE_CONTROL_CTLR (CoreID));
gicsRegs =(CSL_gic500_gicrRegs_core_SGI_ppi *)((uintptr_t) gicrRegs +(uintptr_t) 0x10000u)
其中
// source/kernel_nortos/dpl/a53/nortos HwiP_armv8_gic.h
#define HWIP_GIC_BASE_ADDR (0x1800000UL)  
// source/kernel_nortos/dpl/a53/nortos cslr_gic500.h
#define CSL_GIC500_GICR_CORE_CONTROL_CTLR (CORE )( CSL_GIC500_GICR_CORE_CONTROL_OFFSET +((CORE )*0x20000U )))  
// soc source/kernel_nortos/dpl/a53/nortos/gic_base_address_am62x.h
#define CSL_GIC500_GICR_CORE_CONTROL_OFFSET (0x80000U)
但是、在手册(和器件描述符文件)中、 它们似乎位于0x40000:
并且只有两个(在0x40000和0x60000处)、并且代码表示应该有4个(每个内核1)。
什么是正确的? SDK 或手动/器件描述符文件(我怀疑是前者 、因为后者也缺少两个内核的寄存器(?))
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Endre:

    感谢您的提问。

    我已获取您的意见并进行处理。 请等待一段时间再回来。

    此致、

    Tushar

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

    太棒了! 我还注意到使用 tixml2svd 工具时注意到一些错误的复位值(对于字段来说太大)、例如在 Modules/am62x/gpio0.xml 中:

    <register id="MEM_DIR01" acronym="MEM_DIR01" offset="0x10" width="32" description="Direction Register">
    <bitfield id="dir1" width="16" Beg="31" end-16" resetval="0x65535 " descript="GPIO 组1位的方向、0 =输出、1 =输入" range="31 - 16" rwaccess="R/W"/>
    <bitfield id="DIR0" width="16" Beg="15" end-resetval="0x65535 " descript="GPIO 组0位的方向、0 =输出、1 =输入" range="15 - 0" rwaccess="R/W"/>
    您输入了十进制值、但添加了0x (应为0xFFf)。 可以使用 tixml2svd (或者只编写一个小脚本检查复位值是否大于可以接受的宽度)。 如果您愿意、我也可以上传所有警告(有165个警告)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    添加到差异列表:

    SDK 设置的寄存器似乎比参考手册/器件说明中提到的要多得多。 例如  

    GICD_ICENABLERx  仅在 x = 1-8时列出、但 SDK 最多设置为30。  GICD_ISACTIVERx 和 GICD_ICACTIVERx 也是如此(可能更多)。  GICD_IROUTER287_LOWE/UPPER 是 TRM/器件描述符中的最后一个、但在 SDK 中设置为960。
     
    对所有这些寄存器的描述都很不足、较低的寄存器有 A0和 A1之类的描述、别的什么都没有。 是否有其他一些文档可以查看以了解所有这些寄存器的功能?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您是否有任何更新?

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

    我还在等待这个问题的答案、已经26天了...

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

    您好、Endre:

    我还在等待有关此问题的回答、已有26天...

    对于此处的延迟、我们深表歉意。 请在明天 EOD 之前回复。

    此致、

    Tushar

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

    您好、Endre:

    我在内部检查了此内容、TRM 中的数据似乎不正确。  

    TRM 中的数据取自 AM64x、分为双核。 此处是 AM62x、它是四核 A53、请参阅下面的 ARM 文档以进行偏移计算。

      有关详细信息、请参阅 developer.arm.com/.../the-gic-500-register-map。

    此致、

    Tushar