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.

[参考译文] TMS320F28377D:查找 CCS7.2的基本 C2000 F28377D 示例、其中包括从闪存引导、将闪存复制到 RAM、然后从 RAM 运行

Guru**** 2529560 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/683573/tms320f28377d-looking-for-basic-c2000-f28377d-example-for-ccs7-2-of-booting-from-flash-copying-flash-to-ram-then-running-from-ram

器件型号:TMS320F28377D
主题中讨论的其他器件:C2000WARE

我最近在很长时间之后回到了 C2000世界、我正在努力从在 RAM 中运行的正常编译转到 将在闪存中启动、复制到 RAM 并从闪存中运行的编译。  我一直在查看我的控制卡的 C2000示例、这些示例对于使外设以较短的顺序工作非常有用。  但是、我找不到 SPRA958L 中提供的示例2013年1月。  是否有适用于 CCS7.2和更高版本 C2000器件的 SPRA958L 更新?  谢谢!

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

    Susan、

    随附的是用于 F28377D 的 CPU1的 SPRA958样式代码示例。  这是一个 CCSv7示例。  不过、我建议下载并使用最新的 CCS、即 CCSv8。  此项目中有两个项目配置:闪存和 RAM。  当您将项目加载到 CCS 中时、闪存配置将默认启动、因为 F 在字母表中位于 R 之前。  您可能还会在工程加载时收到有关未安装工程所创建的编译器版本的警告。  只需将项目更改为使用已安装/最新的编译器、警告就会消失。

    e2e.ti.com/.../F28377D_5F00_example_5F00_CPU1_5F00_nonBIOS_5F00_2017Mar16.zip

    此致、

    David

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

    谢谢 David。  (以及从 spra958L 作者获得响应的酷之处!!) 当我尝试在控制卡上运行此代码时、我的行为与尝试制作自己代码的闪存版本时的行为相同。  我将 CPU 复位为 PC=0x3ff16A、单步进入代码、在 main()、InitSysCtrl()的第一个函数调用处的 Main_nonBIOS.c 中放置一个断点; 但我从未遇到过。  相反、处理器在0x003fee00的无限循环中、我只能看到反汇编。  

    如果我说"Go main"、那么 PC 从0x082e5d 开始、我似乎执行 main()中的代码并进入无限循环、但0x082e5d 的地址在闪存中、 这使我认为 我没有成功复制到 RAM、并跳转至从 RAM 执行。  

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

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

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

    Susan、

    检查控制卡上的引导模式开关。  对于 GetMode、它们都应为"on"(默认情况下会跳转到闪存)。

    戴维

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    另请注意、可以在 C2000Ware 中的以下位置找到 bootROM 代码:

    C:\TI\c2000\C2000Ware_1_00_04_00\libraries\boot_rom\f2837xd

    您可以将符号加载到 CCS 中、然后单步执行引导加载程序过程以查看其所在位置。

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

    嗯、我已经仔细检查了开关。  它们处于等待模式(10)、我已将它们更改为闪存模式(11)、但代码正在以某种方式检测 SCI 引导模式(01)?

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

    连接 JTAG 时、Get Mode 通过检查 PIE RAM 开头的几个位置来确定要使用的模式。 在 CCS 中、在"Scripts"菜单上查找引导模式选择选项。 尝试引导至闪存模式。

    或者、用我发送的代码刷写器件、然后断开 JTAG。 重启电源、控制卡上的 LED 应闪烁。

    戴维
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    将 EMU 引导模式选择从 CCS 中的脚本更改为 EMU_BOOT_FLASH 允许我使用 EMUKey 0xB5A 和引导模式0x000B 通过引导加载程序、这确实导致我进入所提供项目的 main()、就像我告诉调试器转到 Main()一样。

    因此、从应用手册中有关如何从闪存运行图像的角度来看、这种方法现在可以按预期工作。 如果我断开调试器的连接并重启控制卡、LED 将继续闪烁、以便正确加载映像并且启动过程正在运行。

    我最终仍在寻找一个示例、说明如何将用户代码从闪存复制到 RAM 并在从闪存引导后从 RAM 运行。 有一个简单的例子吗? 感谢您迄今提供的帮助!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Susan、

    我不知道这种情况会将整个应用程序复制到 RAM 并从 RAM 运行。 我发送给您的代码复制了一些选择函数。 您可能可以按照 SPRA958应用手册中使用的方法将整个.text 段复制到 RAM 中。

    此致、
    David
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢! 我可能是以一种令人深思的心态设计的、即从闪存运行的代码"太慢"、而不是真正考虑太多。 我确信、随着我对处理器进行更多的讨论、我将弄清哪些部分需要从 RAM 而不是从闪存运行。