Keystone 架构 DSP 引导加载程序的第3.12.4节介绍了使用 RBL 在所有 CorePacs 上引导相同映像的方案、但未显示如何执行该操作。 那么、如何呢?
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.
Keystone 架构 DSP 引导加载程序的第3.12.4节介绍了使用 RBL 在所有 CorePacs 上引导相同映像的方案、但未显示如何执行该操作。 那么、如何呢?
我已经了解了几个示例。 对我来说似乎什么都不起作用。 我能告诉大家的是、唤醒从内核并让它们从写入魔法地址的地址运行的指令实际上并不会将它们唤醒。 在 IDLE 指令下、它们仍在引导 ROM 中休眠。 下面是我要做的事情(从示例中可以看到):
#define boot_magic_ADDR (内核)(0x1087FFFC +(内核<< 24))
#define IPCGR (CORE)(0x02620240 +(CORE * 4))
空 KickUnlock (空)
{
uint32_t * Kick0 =(uint32_t *) 0x02620038;
uint32_t * Kick1 =(uint32_t *) 0x0262003C;
*(Kick0)= 0x83e70b13;
*(Kick1)= 0x95a4f1e0;
}
空 KickLock (空)
{
uint32_t * Kick0 =(uint32_t *) 0x02620038;
uint32_t * Kick1 =(uint32_t *) 0x0262003C;
*(Kick0)= 0x11111111;
*(Kick1)= 0x11111111;
}
空 StartCore (uint8_t CoreID、uint32_t entry_addr)
{
KickUnlock();
DEVICE_REG32_W (BOOT_MAGICA_ADDR (CoreID)、entry_addr);
DEVICE_REG32_W (IPCGR (CoreID)、1);
KickLock();
UT_DELAY (10);
}
对于任何处理此问题的人来说、就像我过去2个月一样、事实证明、我要加载到内核1-7的 L2SRAM 中的.bin 文件需要每个字进行字节交换。 我的 IPC 中断显然唤醒了内核、但当内核尝试执行代码时、它们会快速复位(在我注意到之前)。 我还必须在加载映像时实施伪引导加载程序。 因此、我的 post-build 步骤是:
${CG_TOOL_ROOT}/bin/strip6x MyProject.out
${CG_TOOL_ROOT}/bin/hex6x.exe -订购 L MyProject.RMD
Bttbl2Hfile.exe myProject.btbl myproject.h myproject.bin
MyProject.RMD 文件如下所示:
MyProject.out
-A
-boot
-e _c_int00
ROM
{
ROM1:org=0x0800000、len=0x080000、romwidth=32、memwidth=32
文件={MyProject.btbl}
}