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.

[参考译文] AM6548:双核 Arm Cortex -R5F 内核的 CPU ID

Guru**** 2540720 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/989705/am6548-cpu-ids-of-dual-core-arm-cortex--r5f-cores

器件型号:AM6548
主题中讨论的其他器件:DRA829

您好!

我有一个 AM65x/DRA80xM 工业开发套件。 在此平台上、我使用的是仪表组0的 Cortex-A53内核和 MCU 域的 Cortex-R5F 内核。

A53的第一个内核(cluster0内核0)的 CPU ID 为0x0、由器件树节点以及 MPIDR 值指示。

R5F 内核的 CPU ID 是多少? 对于 R5F core0和 R5F core1、MPIDR 将分别返回0x0和0x1。

在本例中、如何区分 A53和 R5F 内核? 对于 Xilinx ZynqMPSoC 等目标、A53集群对于存在的四个内核具有 CPU ID 0、1、2和3、而双 R5内核具有 CPU ID 0x100和0x101。

在此平台上、我无法获取两个不同处理器内核的唯一 CPU ID。 我正在开发 AMP 系统、我需要制定一个标准来区分内核。

Regads、
Iqra

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

    连接到相干计算机群集(直接连接到 MSMC)的 ARMv8 CPU 的 MPIDR 值使用群集#填充 MPIDR AFF1、使用群集中的 CPU #填充 AFF0。  在 AM65xx 上、这意味着 A53:0.0=(0x0000)、A530.1=(0x0001)和 A53:1.0 (0x0100)、A53:1.1=(0x0101)。  其他 ARMv8 AFF2和 AFF3域为0x0。

    ARMv7 MCU R5系统不是相干集群的一部分、而是填充其 MPIDR AFF1 =组 ID、AFF0=CPU#。  AM65x 有1个 dualR5实例、其中:R5:0.0=(0x0000)和 R5:0.1=(0x0001)。  另一个 ARMv7 AFF2域为0x0。   DRA829/AM75xx 等其他芯 片在计算集群之外具有3个 DUALR5集群实例、它们的 AFF1域会随组 ID (MCU=0、MAIN0=1、MAIN1=2)递增。

    ARMv7和 ARMv8 ARCH 规范都注意到、AFFx 编码未知。  v7架构提供了2个在某种程度上相互冲突的示例、说明如何在 v8仅给出一般说明的情况下使用。   两者都说要研究实现 ARM TRMS (如 v8-A53和 v7-R5)。  这些 TRMS 确实定义了 CPU、因为它们已在上面绑定。  

    在 A53集群(2x2 = 4个 CPU)上、操作系统(或代码)可以使用 MPIDR 来跨相似内核调度代码。  它们都具有与所有64位 ARMv8相同的指令集和 MMU 支持级别。 例如、HLOS Linux-SMP 将使用此功能。  MCU 中的32位 R5 (v7) CPU 在很大程度上不会运行与 A53相同的代码、A53是不同的 ISA、并且具有不同的系统单元(如 MPU 而不是 MMU)。  R5 (通常是 RTOS)上的代码可以利用其本地唯一的 MPIDR 值在2个 R5 CPU 之间进行调度。

    如果您在群集之间传递一些结构并希望嵌入一些唯一 ID,则可以在 SW 中定义一个,也可以利用 MIDR 和 MPIDR 寄存器的某种组合。   对于裸机代码、您会发现 MPIDR 用于对本地相关群集上的引导进行排序。  一旦代码转换到更高级别(RTOS 或 HLOS)、这些调度程序就可能针对与其"对称"资源相关的操作进行 MPIDR。  非对称内核之间的通信将在其他抽象上进行、并可以使用适当的任何方法来区分任何共享对象。

    AM65xx 中使用的约定遵循 ARM 在本地推荐的约定以及 SW 在全球使用的约定。  如果所有群集类型都连接到相同的互连(MSMC)、则根据方案、它们本来是唯一的、但由于它们是拆分的并以扩展集/子集的方式使用、因此它们仅在本地是唯一的。

    此致、

    Richard W.