ZHDA186 June   2026 TMS320F28P650DK

 

  1.   1
  2.   摘要
  3.   商标
  4. 1简介
  5. 2C28x 系列中的双核架构
    1. 2.1 同构架构 (C28x + C28x)
    2. 2.2 异构架构 (C28x + C28X + ARM Cortex M4)
      1. 2.2.1 TMS320F2838x(F28388D、F28386D 等)
  6. 3双核应用的一般流程
  7. 4引导序列
  8. 5运行一个简单的双核示例
  9. 6关键陷阱
  10. 7适用于双核刷写的一键式解决方案
  11. 8处理器间通信
  12. 9有用链接

引导序列

当器件退出复位状态时,仅执行 CPU1 的引导 ROM。CPU2 由硬件保持在复位状态,并且在 CPU1 显式释放之前无法运行任何代码。这意味着:

  • 系统时钟及 PLL 专门由 CPU1 初始化。在 CPU1 配置 PLL 并等待其锁定之前,器件会以较低的速度在内部振荡器上运行。CPU2 继承 CPU1 已建立的任何时钟状态。
  • 外设所有权由 CPU1 分配。该器件具有一组可分配给任一内核的外设,但分配寄存器受到 CPU2 的写保护。只有 CPU1 可以决定哪个内核拥有哪个外设。
  • GPIO 初始化由 CPU1 完成。所有 GPIO 多路复用器、方向和上拉设置都必须通过 CPU1 进行配置,然后 CPU2 才能安全使用任何 GPIO。
  • 整个系统的看门狗由 CPU1 管理。CPU2 有自己的看门狗,但系统级保护从 CPU1 开始。

每次复位时,都会发生以下序列:

  1. CPU1 引导 ROM 执行。引导 ROM 读取引导模式引脚(GPIO84、GPIO72 等,具体取决于器件)并确定如何引导 — JTAG、SCI、SPI、CAN、I2C、并行,或者直接从闪存运行。这是引导加载程序阶段,完全在 CPU1 上运行。
  2. CPU1 应用程序启动。引导加载程序结束后,CPU1 开始执行应用。编写完善的 CPU1 应用程序的第一件事是:
      • 初始化器件(PLL,时钟,闪存等待状态)
      • 分配外设和内存所有权
      • 初始化 CPU2 将需要的任何共享存储器区域
  3. CPU1 将 CPU2 从复位之中释放。CPU2 无法自行启动。CPU1 必须调用 CPU2 的引导序列 — 在 driverlib 中,这是 Device_bootCPU2()。此函数写入 IPC 寄存器以向 CPU2 的引导 ROM 发出执行信号,并为 CPU2 指定引导模式(通常从闪存引导或由 CPU1 加载的特定 RAM 地址引导)。
  4. CPU2 引导 ROM 执行。CPU2 的引导 ROM 使用 CPU1 经由 IPC 指定的引导模式运行自己的引导序列。如果 CPU1 将 CPU2 引导至闪存引导,则 CPU2 会跳转到其闪存入口点。如果 CPU1 指示 CPU2 从 SARAM 引导(在 CPU1 已复制 CPU2 的映像的 RAM 调试构建中很有用),CPU2 会跳转到加载的代码。
  5. 两个内核均独立运行。此后,两个 CPU 同时执行各自的应用程序。两者之间的协调完全通过 IPC 标志和共享/消息 RAM 来处理 — 在正常执行期间它们之间不存在进一步的硬件依赖关系。