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-RTOS
我使用的是定制板。
我使用的是 code composer 5.5.5.5...
我使用的是 RTSC/XDCtools (目标运行时支持) 3.25.3.72
我正在使用 SYSBIOS 6.35.4.50
我使用的是 AISGen 1.13版
我在创建 NOR 闪存可引导映像时遇到了困难、该映像包含一个裸机 ARM 负载、该负载只需设置 DSP 入口点并释放 DSP 以解除复位状态、而 DSP 负载仅包含一个直接 进入 while (1)循环 的主程序 包括一个实数下调用的 SYSBIOS。 当此系统引导时、通过仿真连接到 DSP 目标、而不会干扰 DSP 的状态(未加载 GEL 文件、未复位处理器、仅加载符号)、DSP 正在退出。 当我从共享存储器中运行 ARM 并且从共享存储器或 DDR 存储器中运行 DSP 代码时、会出现此问题。 当 DDR 耗尽时、当我连接到 DSP 而不干扰其当前状态时、DDR 会按预期包含 DSP 代码。 这让我相信、处理器时钟与 DDR 时钟一起已正确设置。
如果我将 DSP 编译更改为裸机编译以及上述 ARM 工程、则在通过仿真 器连接到 DSP 时、同样不会扰乱 DSP 的当前状态、DSP 是其主要功能 while (1)循环。 引导成功。
如果我创建一个包含裸机 DSP 和 ARM 构建的可引导映像、其主循环包含一个 while (1)循环以及一个缩小的 SYSBIOS、则该映像的引导过程就很顺利。 当连接到 ARM 而不干扰其当前状态时、ARM 在 其主 while (1)循环中旋转。 同样、引导成功。
为了查看 c_int00是否被正确调用、我添加了自己的可引导入口点。 在此代码中、我将存储器位置设置为特定值、然后调用 c_int00。 在我感兴趣的主处理器内、我用唯一的值设置了另一个内存位置。 这是在 while (1)循环之前完成的。 这让我相信处理器是从 NOR 闪存启动的。 在检查存储器时、我可以看到预期的唯一值。 即使对于在退出时结束旋转的引导映像也会发生这种情况。
我不明白处理器是如何退出的。 调用 main 后、c_int00会调用 exit。 如果 main 未返回、则处理器不应在退出时旋转、而应在 main 内旋转。
在引导退出时的映像时、我会连接到目标、而不会干扰目标的当前状态。 如果我将 PC 设置为启动条目的开始并运行处理器、则当处理器暂停时、主 while (1)循环正在执行。 这是我在启动时预期的结果。
我所有用于创建不同引导映像、AISgen cfg 文件、平台定义等的工程都包含在随附的 zip 文件中。 有三种不同的可引导映像:用于 ARM 和 DSP 的裸机;用于 DSP 的 ARM 和 SYSBIOS 的裸机;以及用于 ARM 的 SYSBIOS 和用于 DSP 的裸机。
如果您想了解裸机 ARM 和 SYSBIOS DSP 组合在最初从 NOR 闪存引导时最终退出的原因、我们将不胜感激!e2e.ti.com/.../5428.BootableOMAP.zip