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.

[参考译文] TMS320F28388D:Matlab 应用跳转问题的 Multivore 引导加载程序。

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1490079/tms320f28388d-multivore-bootloader-to-matlab-application-jump-problem

器件型号:TMS320F28388D

工具与软件:

尊敬的 Fellas:

我为 F28388D 实现了多核引导加载程序。

每个内核都有自己的引导加载程序。 CPU1是主引导加载程序。 它通过使用 Device_Boot U2()和 Device_Boot (452)激活其他核心引导加载程序、使其与 IP_Sync()同步
IPC 机制交换数据。

我修改了 Matlab C2000 Blockset 使用的链接器脚本、然后通过引导加载程序写入该程序的特定闪存内核。

我尝试测试一些可能的 scneario。

-> CPU1、CPU2和 CM 有引导加载程序。CPU1、CPU2和 CM Matlab 应用程序扇区为空。 我成功地将 Matlab 生成的程序写入 CPU1扇区、然后 CPU1引导加载程序跳过
CPU1 Matlab 程序入口点。 它运行没有任何问题。 假设用户无意中删除 CPU2引导加载程序、在上电/下电周期后。
CPU1 Matlab 程序无法正常运行。 我还删除了 CPU1上的 IPC_SYNC (IPC_CPU1_L_CPU2_R、IPC_FLAG31)、但此设置不起作用。

1) CPU1 Matlab 程序无法正常运行的问题是什么?

2)如何从 CPU1端确定 CPU2特定扇区是否有程序?

此致。

CPU1引导加载程序:扇区0-1.
CPU1 Matlab Application : Sector 2-13.

CPU2引导加载程序:扇区12-13.
CPU2 Matlab 应用程序:扇区0-11.

CPU1引导加载程序端 ı 使用。

// Boot CPU2和 INITIALIZE
DEVICE_BOOTCPU2 (BOOTMODE_BOOT_TO_FLASH_SECTOR13);
IPC_clearFlagLtoR (IPC_CPU1_L_CPU2_R、IPC_FLAG_ALL);
IPC_SYNC (IPC_CPU1_L_CPU2_R、IPC_FLAG31);

//在跳过 CPU1 Matlab 入口点之前。 复位内核、然后跳转。
SYSCTL_controlCPU2Reset (SYSCTL_CORE_ACTIVE);
while (sysctl_isCPU2Reset ()!= 0x1U);
(* Jump_Entry_Point)();

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

    您好!

    您能否提供有关 CPU1应用程序如何正常运行(卡在哪里等)的更多详细信息? 您能否共享您要用于 CPU1和 CPU2的链接器命令文件?

    Unknown 说:
    2)如何从 CPU1端判断 CPU2特定扇区是否有程序?

    很遗憾、您无法从 CPU1读取 CPU2和 CM 闪存。 您可以使 CPU2退出复位并使用 VCRC 来验证 CPU2闪存、但不能通过 CPU1进行验证。

    此致!

    Matt