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.

[参考译文] TMS320F28075:闪存 API 必须在 RAM 中运行

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1011851/tms320f28075-flashapi-must-run-in-ram

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

您好专家、

我的客户正在为 F28075开发引导加载程序。

他们发现 TI 演示已将 FlashAPI 放入 RAM 中。

我不确定这是 F28075的必去之地吗? 他们没有这样做,但有时它可以工作。

BR

Emma

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

    Emma、

    在此器件上、闪存 API 应从 RAM 执行。  示例显示了在运行时加载到闪存、然后复制到 RAM 执行。

    如果您有其他问题、请告诉我。

    谢谢、此致、

    Vamsi

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

    Vamsi、

    感谢您的回复。 问题是、客户的引导加载程序代码未完成此操作、但仍可以正常工作。

    但是、他们发现代码将在加1指令时消失。 因此、他们正在检查根本原因。

    附加的客户命令文件。

    e2e.ti.com/.../2807x_5F00_FLASH_5F00_CLA_5F00_lnk_5F00_cpu1.cmd

    您是否发现任何问题?

    另一个问题是、他们发现汇编代码在运行函数后会发生变化。

    这是原始源代码和汇编代码:

    运行函数  fapi_setActiveFlashBank()后,汇编代码发生了很大变化。

    left:before run the function- right:after run the function

    我们可以在右侧看到许多指令:

    Fullscreen
    1
    2
    MOVB XAR0,#0x30
    ADDB XAR4,#67
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    我真的想知道这意味着什么?

    BR

    Emma

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

    Emma、

    在链接器 cmd 文件中、我不会看到闪存 API 库映射到闪存以进行加载、也不会看到映射到 RAM 以进行执行。   

    请查看 C2000Ware 中提供的闪存 API 使用示例。 在示例项目中、您将注意到闪存 API 函数是从 RAM 执行的。 从示例中观察以下内容:

    (a)示例中使用的链接器命令文件: 将闪存 API 库分配给.TI.ramfunc 段、该段具有闪存加载地址和 RAM 运行地址。

    (b)示例的 main 函数调用 memcpy()、在上述段的内容被执行之前将其从闪存复制到 RAM 中。

    以上内容在闪存 API 常见问题解答页面中进行了介绍: e2e.ti.com/.../faq-faq-on-flash-api-usage-for-c2000-devices

    谢谢、此致、
    Vamsi

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

    Vamsi、

    谢谢。 因此、必须将闪存 API 放入 RAM 中。 我是对的吗?

    另一件事是、为什么在运行函数后汇编代码发生更改?

    请帮您了解一下这个问题吗?

    BR

    Emma

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

    Emma、

    是的、从闪存复制到 RAM 并从 RAM 执行。

    在汇编代码更改时:如果您在从 RAM 执行 API 之后观察到这一点、我们可以进行调试。  我不认为会发生这种情况。  让我知道它是如何与 RAM 执行一同执行的。   

    谢谢、此致、

    Vamsi