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:驻留在闪存中的引导加载程序

Guru**** 2609465 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/681956/tms320f28377d-bootloader-resident-in-flash

器件型号:TMS320F28377D

尊敬的所有人:

我们要将 F2837xD_sci_flash_kernels_cpu01项目移到永久闪存中而不是运行到 RAM 中(从 SCI 引导)、是否有任何指导原则或帮助来执行类似的操作?

谢谢

David

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

    David、

    本文档将为您提供帮助。

    从 TMS320F28xxx DSP 上的内部闪存运行应用程序- www.ti.com/.../spra958j.pdf

    资料来源: processors.wiki.ti.com/.../FAQs

    运行独立代码

    问:如何更改代码以使其独立运行(未连接 CCS)?

    答:请参阅以下资源:

    代码不独立运行

    问:在 CCS 内调试时、我的程序运行正确、但当我尝试运行这个独立程序时、它不起作用。 为什么会发生这种情况?

    答:出现这种情况的原因有几个:

    1. 引导模式选择不是"跳转至闪存"。 查看特定器件的引导 ROM 指南和数据手册。
    2. 已分配初始化段以加载到 RAM 而不是闪存。 所有已初始化的段都应将其加载地址分配给闪存、以便对其进行编程。 需要检查.cmd 文件以确保所有已初始化的段被分配给闪存。 《在 TMS320F28xx DSP (SPRA958)应用上从内部闪存运行应用》的第3节 注释说明了编译器生成的每个段应分配的位置。
    3. 如果代码时间关键、需要从 RAM 中运行、则可以在运行时复制代码。
    4. 将关键段复制到 RAM 后、确保复制确实发生-检查存储器内容。
    5. 尝试首先运行闪存至 RAM 复制例程。 一些早期函数可能假定器件已复制到 RAM 中。 例如,在 InitSysCtrl()函数中使用 delay 函数。 默认情况下、此延迟函数分配给将 TI 示例复制到 RAM 的函数。 如果在复制到 RAM 之前调用 InitSysCtrl(),则会发生异常。 TI 正努力添加注释、以帮助避免这种陷阱。 InitAdc()也会出现这种情况。
    6. 没有在闪存入口点添加指令到应用程序代码开头的分支。 SPRA958的第6节对此进行了进一步讨论
    7. 281x 特定:除了实际的引导引脚之外、需要将 MP/MC 引脚拉至低电平以启用引导 ROM。

    若要调试此问题、请单步执行代码并尝试确定其错误位置。 以下是一些调试建议:

    1. 刷写器件
    2. 关闭电源
    3. 连接 CCS 并仅选择"load symbols"
    4. 在闪存的入口点放置一个断点
    5. 使用调试器重置器件并运行-您是否遇到了断点? 如果是、引导模式看起来正常
    6. 单步执行代码、直至发现问题。

    此致、

    曼诺伊

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已经有很长时间没有听到你们的反馈了。 我相信您能够解决这个问题。 如果您在未来2天内没有收到您的反馈、我计划关闭此主题。

    -Manoj