我没有使用 TI 处理器上的内核之一。 如何禁用该内核、以便为其他内核释放更多内存、外设等?
。
本常见问题解答以 AM64x 为例、但相同的概念适用于 AM62x。
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.
我没有使用 TI 处理器上的内核之一。 如何禁用该内核、以便为其他内核释放更多内存、外设等?
。
本常见问题解答以 AM64x 为例、但相同的概念适用于 AM62x。
如何禁用远程内核
您可以使用 Linux devicetree 来禁用 R5、M4和 PRU 等远程内核。 如果禁用远程内核的器件节点、则 Linux 内核永远不会使用 RemoteProc 来初始化内核。 请注意,默认情况下启用设备树节点。 这意味着、如果要禁用特定内核、则需要在器件树节点中设置 status = disabled。 应在板 dts 文件中禁用内核、而不是禁用其中一个 dtsi 文件。
AM64x 示例
例如、要禁用 AM64x 入门套件 EVM 上的所有远程内核、我们更改了 K3-am642-SK.dts、如以下补丁中所示。
arch/arm64/boot/dts/ti/k3-am642-evm.dts | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/arch/arm64/boot/dts/ti/k3-am642-evm.dts b/arch/arm64/boot/dts/ti/k3-am642-evm.dts index 2bd50d4bb226..610f375dedee 100644 --- a/arch/arm64/boot/dts/ti/k3-am642-evm.dts +++ b/arch/arm64/boot/dts/ti/k3-am642-evm.dts @@ -282,33 +282,23 @@ }; &main_r5fss0_core0 { - mboxes = <&mailbox0_cluster2 &mbox_main_r5fss0_core0>; - memory-region = <&main_r5fss0_core0_dma_memory_region>, - <&main_r5fss0_core0_memory_region>; + status = "disabled"; }; &main_r5fss0_core1 { - mboxes = <&mailbox0_cluster2 &mbox_main_r5fss0_core1>; - memory-region = <&main_r5fss0_core1_dma_memory_region>, - <&main_r5fss0_core1_memory_region>; + status = "disabled"; }; &main_r5fss1_core0 { - mboxes = <&mailbox0_cluster4 &mbox_main_r5fss1_core0>; - memory-region = <&main_r5fss1_core0_dma_memory_region>, - <&main_r5fss1_core0_memory_region>; + status = "disabled"; }; &main_r5fss1_core1 { - mboxes = <&mailbox0_cluster4 &mbox_main_r5fss1_core1>; - memory-region = <&main_r5fss1_core1_dma_memory_region>, - <&main_r5fss1_core1_memory_region>; + status = "disabled"; }; &mcu_m4fss { - mboxes = <&mailbox0_cluster6 &mbox_m4_0>; - memory-region = <&mcu_m4fss_dma_memory_region>, - <&mcu_m4fss_memory_region>; + status = "disabled"; }; &main_pmx0 { -- 2.17.1
如果将 DDR"存储器区域"留在 Linux devicetree 中、则仍会分配它们、但在 Linux 分配它们之后将不使用它们。 由于 DDR"存储器区域"现在未使用、因此可以从保留存储器节点中删除它们。
arch/arm64/boot/dts/ti/k3-am642-evm.dts | 66 ------------------------- 1 file changed, 66 deletions(-) diff --git a/arch/arm64/boot/dts/ti/k3-am642-evm.dts b/arch/arm64/boot/dts/ti/k3-am642-evm.dts index 610f375dedee..c6222dad7d19 100644 --- a/arch/arm64/boot/dts/ti/k3-am642-evm.dts +++ b/arch/arm64/boot/dts/ti/k3-am642-evm.dts @@ -43,72 +43,6 @@ alignment = <0x1000>; no-map; }; - - main_r5fss0_core0_dma_memory_region: r5f-dma-memory@a0000000 { - compatible = "shared-dma-pool"; - reg = <0x00 0xa0000000 0x00 0x100000>; - no-map; - }; - - main_r5fss0_core0_memory_region: r5f-memory@a0100000 { - compatible = "shared-dma-pool"; - reg = <0x00 0xa0100000 0x00 0xf00000>; - no-map; - }; - - main_r5fss0_core1_dma_memory_region: r5f-dma-memory@a1000000 { - compatible = "shared-dma-pool"; - reg = <0x00 0xa1000000 0x00 0x100000>; - no-map; - }; - - main_r5fss0_core1_memory_region: r5f-memory@a1100000 { - compatible = "shared-dma-pool"; - reg = <0x00 0xa1100000 0x00 0xf00000>; - no-map; - }; - - main_r5fss1_core0_dma_memory_region: r5f-dma-memory@a2000000 { - compatible = "shared-dma-pool"; - reg = <0x00 0xa2000000 0x00 0x100000>; - no-map; - }; - - main_r5fss1_core0_memory_region: r5f-memory@a2100000 { - compatible = "shared-dma-pool"; - reg = <0x00 0xa2100000 0x00 0xf00000>; - no-map; - }; - - main_r5fss1_core1_dma_memory_region: r5f-dma-memory@a3000000 { - compatible = "shared-dma-pool"; - reg = <0x00 0xa3000000 0x00 0x100000>; - no-map; - }; - - main_r5fss1_core1_memory_region: r5f-memory@a3100000 { - compatible = "shared-dma-pool"; - reg = <0x00 0xa3100000 0x00 0xf00000>; - no-map; - }; - - mcu_m4fss_dma_memory_region: m4f-dma-memory@a4000000 { - compatible = "shared-dma-pool"; - reg = <0x00 0xa4000000 0x00 0x100000>; - no-map; - }; - - mcu_m4fss_memory_region: m4f-memory@a4100000 { - compatible = "shared-dma-pool"; - reg = <0x00 0xa4100000 0x00 0xf00000>; - no-map; - }; - - rtos_ipc_memory_region: ipc-memories@a5000000 { - reg = <0x00 0xa5000000 0x00 0x00800000>; - alignment = <0x1000>; - no-map; - }; }; evm_12v0: fixedregulator-evm12v0 { -- 2.17.1
其他信息
AM62x 的重要说明:请勿禁用 wkup_r5fs0
在 AM62x 上、R5F 内核为所有其他内核运行资源管理器。 如果 R5F 被禁用、处理器将不工作。
AM62x 器件型号
此处列出了不同的 AM62x 器件: https://dev.ti.com/tirex/explore/node?node=A__AFSX4RJYQ2lqtHXtiKUeww__linux_academy_am62x__XaWts8R__LATEST
"正常" Linux 引导(SPL 引导)与 SBL 引导
本常见问题解答假定电路板通过 Linux SDK 文档"基础组件> U-Boot >用户指南>常规信息>引导流程"中介绍的正常 Linux 引导流程进行引导。 此引导流程也称为 SPL 引导。
AM62x 和 AM64x 也可以通过 SBL 引导流程引导。 运行 SBL 的内核可以在初始化 A53内核上的 U-boot 的同时初始化远程内核。 如果使用 SBL 引导、则仍需要对 Linux 器件树进行所有更改。 此外、应告知 SBL 不要初始化禁用的内核。
有关 SBL 的更多信息、请参阅 MCU+ SDK 文档"示例和演示>次级引导加载程序(SBL)> SBL [类型] Linux"。 请注意、标题中不包含 Linux 的 SBL 不会将 Linux 加载到 A53内核上。