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.

[参考译文] AM62D-Q1:从 R5-MCU 引导内核

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1519215/am62d-q1-boot-cores-from-r5-mcu

器件型号:AM62D-Q1
主题:SysConfig 中讨论的其他器件

工具/软件:

你(们)好

我们正在开发一个系统、让 R5-MCU 引导其他内核:A53、C7和 R5-WKUP。
SysConfig 工具为 R5-WKUP 内核提供引导加载程序驱动程序、但不为 R5-MCU 提供这些驱动程序。
我尝试编辑 r5-MCU 内核的.syscfg 文件、希望这些功能得到支持、但在 GUI 中尚不可用。

这是我们的 syscfg 文件(手动编辑以添加引导加载程序实例):

/**
 * These arguments were used when this file was generated. They will be automatically applied on subsequent loads
 * via the GUI or CLI. Run CLI with '--help' for additional information on how to override these arguments.
 * @cliArgs --device "AM62Dx" --part "AM62D24-G" --package "ANF" --context "mcu-r5fss0-0" --product "MCU_PLUS_SDK_AM62Dx@11.00.00"
 * @v2CliArgs --device "AM62D-Q1" --package "FCBGA (ANF)" --variant "AM62D24-G" --context "mcu-r5fss0-0" --product "MCU_PLUS_SDK_AM62Dx@11.00.00"
 * @versions {"tool":"1.23.1+4034"}
 */

/**
 * Import the modules used in this configuration.
 */
const ipc        = scripting.addModule("/drivers/ipc/ipc");
const debug_log  = scripting.addModule("/kernel/dpl/debug_log");
const mpu_armv7  = scripting.addModule("/kernel/dpl/mpu_armv7", {}, false);
const bootloader  = scripting.addModule("/drivers/bootloader/bootloader", {}, false);
const bootloader1 = bootloader.addInstance();
const bootloader2 = bootloader.addInstance();
const bootloader3 = bootloader.addInstance();
const mpu_armv71 = mpu_armv7.addInstance();
const mpu_armv72 = mpu_armv7.addInstance();
const mpu_armv73 = mpu_armv7.addInstance();
const mpu_armv74 = mpu_armv7.addInstance();
const mpu_armv75 = mpu_armv7.addInstance();
const mpu_armv76 = mpu_armv7.addInstance();
const mpu_armv77 = mpu_armv7.addInstance();
const mpu_armv78 = mpu_armv7.addInstance();
const mpu_armv79 = mpu_armv7.addInstance();


const mmcsd             = scripting.addModule("/drivers/mmcsd/mmcsd", {}, false);
const mmcsd1            = mmcsd.addInstance({}, false);
mmcsd1.$name            = "CONFIG_MMCSD0";


/**
 * Write custom configuration values to the imported modules.
 */
bootloader1.bootMedia          = "EMMC";
bootloader1.EMMCAppImageOffset = "0x00080000";
bootloader1.$name              = "CONFIG_BOOTLOADER_EMMC_R5WKUP";

bootloader2.$name              = "CONFIG_BOOTLOADER_EMMC_A53";
bootloader2.appImageOffset     = "0x00480000";
bootloader2.bootMedia          = "EMMC";
bootloader2.EMMCAppImageOffset = "0x00480000";

bootloader3.bootMedia          = "EMMC";
bootloader3.$name              = "CONFIG_BOOTLOADER_EMMC_C7";
bootloader3.EMMCAppImageOffset = "0x00680000";

bootloader1.MMCSDDriver = mmcsd1;
bootloader2.MMCSDDriver = mmcsd1;
bootloader3.MMCSDDriver = mmcsd1;

ipc.a53ss0_0       = "notify";
ipc.r5fss0_0       = "notify";
ipc.c75ss0_0       = "notify";
ipc.enableLinuxIpc = false;

mpu_armv71.size              = 31;
mpu_armv71.attributes        = "Device";
mpu_armv71.accessPermissions = "Supervisor RD+WR, User RD";
mpu_armv71.allowExecute      = false;
mpu_armv71.$name             = "REGISTERS";

mpu_armv72.size              = 15;
mpu_armv72.accessPermissions = "Supervisor RD+WR, User RD";
mpu_armv72.$name             = "ATCM";
mpu_armv72.attributes        = "NonCached";

mpu_armv73.baseAddr          = 0x41010000;
mpu_armv73.size              = 15;
mpu_armv73.accessPermissions = "Supervisor RD+WR, User RD";
mpu_armv73.$name             = "BTCM";
mpu_armv73.attributes        = "NonCached";

mpu_armv74.accessPermissions = "Supervisor RD+WR, User RD";
mpu_armv74.baseAddr          = 0x79100000;
mpu_armv74.size              = 19;
mpu_armv74.$name             = "MSRAM";

mpu_armv75.baseAddr          = 0x60000000;
mpu_armv75.size              = 28;
mpu_armv75.accessPermissions = "Supervisor RD, User RD";
mpu_armv75.$name             = "FLASH_SUBSYSTEM";

mpu_armv76.$name    = "DDR_R5MCU";
mpu_armv76.baseAddr = 0x80000000;
mpu_armv76.size     = 31;

mpu_armv77.allowExecute = false;
mpu_armv77.attributes   = "Cached+Sharable";
mpu_armv77.size         = 21;
mpu_armv77.baseAddr     = 0x88000000;
mpu_armv77.$name        = "DDR_IPC";

mpu_armv78.size         = 21;
mpu_armv78.attributes   = "NonCached";
mpu_armv78.allowExecute = false;
mpu_armv78.$name        = "DDR_LOG_MEM";
mpu_armv78.baseAddr     = 0x88200000;

mpu_armv79.allowExecute = false;
mpu_armv79.$name        = "DDR_IPC_DESC_MEM";
mpu_armv79.attributes   = "NonCached";
mpu_armv79.size         = 19;
mpu_armv79.baseAddr     = 0x88180000;

/**
 * Pinmux solution for unlocked pins/peripherals. This ensures that minor changes to the automatic solver in a future
 * version of the tool will not impact the pinmux you originally saw.  These lines can be completely deleted in order to
 * re-solve from scratch.
 */
mmcsd1.MMC0.$suggestSolution      = "MMC0";
mmcsd1.MMC0.CLK.$suggestSolution  = "MMC0_CLK";
mmcsd1.MMC0.CMD.$suggestSolution  = "MMC0_CMD";
mmcsd1.MMC0.DAT0.$suggestSolution = "MMC0_DAT0";
mmcsd1.MMC0.DAT1.$suggestSolution = "MMC0_DAT1";
mmcsd1.MMC0.DAT2.$suggestSolution = "MMC0_DAT2";
mmcsd1.MMC0.DAT3.$suggestSolution = "MMC0_DAT3";
mmcsd1.MMC0.DAT4.$suggestSolution = "MMC0_DAT4";
mmcsd1.MMC0.DAT5.$suggestSolution = "MMC0_DAT5";
mmcsd1.MMC0.DAT6.$suggestSolution = "MMC0_DAT6";
mmcsd1.MMC0.DAT7.$suggestSolution = "MMC0_DAT7";


遗憾的是、我收到未定义符号的链接器错误:
- Bootloader_Boot 图像信息初始化
- Bootloader_Params_初始化
- Bootloader_bootCpu
-等等...

是否完全可以从 R5-MCU 引导其他内核?
如果是、TI 是否会提供驱动程序来执行此操作?

谢谢!
Mateusz

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

    尊敬的 Mateusz:

    不支持通过 MCU-R5引导、只有 WKUP_R5内核支持引导功能。

    此致、

    会面。

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

    感谢您的答复。 它是否仅受 SDK 支持、而硬件仍应支持它? 还是硬件不支持?

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

    尊敬的 Mateusz:

    硬件可以引导其他内核、但 SDK 并不支持该功能、如果需要从 MCU R5实现任何此类功能、则必须自行实施。