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.

[参考译文] TMS320F28388D:将函数从内部闪存复制到 RAM 并在运行时运行的示例代码

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

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1101803/tms320f28388d-example-code-to-copy-a-function-from-internal-flash-to-ram-and-run-at-runtime

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

大家好!

由于我的器件具有内部闪存、我的应用代码将存储在闪存中。  但我希望从 RAM 运行一些函数。 那么、我应该将它们从闪存复制到 RAM、对吧?

主要的概念是什么? 我应该编辑链接器文件吗? 有示例吗?

提前感谢。

谢谢、

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

    您好、Erhan、

    是的、您可以将代码复制到 RAM 中。 您将需要使用#pragma 语句。

    请参阅 C2000Ware 示例"flashapi_ex1_programming.c"。 如果在函数上方搜索函数 Example_CallFlashApi(),则会看到带有#pragma 的注释。

    此致、

    Nirav

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

    您好、Erhan、

    请查看以下常见问题解答:

    [常见问题解答]闪存-如何将应用程序从 RAM 配置修改为闪存配置?:  

    https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/878674 

    这说明了如何使用.TI.ramfunc 段将代码映射到闪存以进行加载、并将 RAM 映射到执行。

    谢谢、此致、

    Vamsi

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

    你好,Nirav!

    感谢您的回答。 我将查看此示例。

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

    你好,Nirav!

    感谢您的回答。 我将查看此示例。

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

    你好,Vamsi!

    感谢您的回答。 我已检查链接。 它看起来是平铺的。 我要读取它。

    除此之外、我还想从零创建一个项目。 因此、我想知道我的 CPU 的所有启动行为。 我想从 IDE 控制一切。  

    例如。 我看到的是、当我进行调试时。 IDE 首先从  RTS 库中的 boot_asm 运行初始化代码、类似于_c_int00。  我不知道该代码到底做什么。

    我想从一开始就知道我的 CPU 在做什么。 如何学习? 是否有要从头开始创建的文档? 还适用于多 CPU 应用?

    谢谢、

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

    你好,Vamsi!

    我阅读了您的帖子。 感谢您的经济实惠。 我开始欠运转。  我应该将函数放在   TI.ramfunc 部分。

    但是、我已经没有多个应用程序了。 对于固件更新等、假设我有2个应用(应用)、它们都位于闪存中的不同插槽中。 启动时、我的启动代码将决定启动哪个应用程序。 假设它已决定、则为附则1。 然后、它会将 app1的 RAM 函数从闪存复制到 RAM。

    我在 assmestler 文档(TMS320C28x 汇编语言工具 v21.6.0.LTS 用户指南)中找到了类似的内容(修订版 w)(TI.com)

    .TI.ramfunc : {} load=FLASH, run=RAM, table(BINIT)
    

    我认为这是将 func 从闪存加载到 RAM 并运行、但用于一个应用。 如何在一个项目中为2个应用程序组织它?

    非常感谢。

    谢谢、

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

    您好、Erhan、

    c_init 例程在控件到达 main 之前初始化全局变量。

    我将审核您的问题、并在本周结束前回复您。

    谢谢、此致、

    Vamsi

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

    你好,Vamsi!

    感谢您的留言。 一切都好、我等了。

    谢谢、

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

    我想补充  的是、我正在阅读 TMS320C28x 汇编语言工具文档、并得到了使用复制表和使用联合体可能实现的效果。 但是我还没有尝试任何东西。 供参考。

    谢谢、

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

    您好、Erhan、  

    对于这两种应用场景、您可以参考 C2000Ware 中 F28004x 的实时固件更新示例作为参考。 此示例使用两个闪存组、而 F2838x 每个 CPU 只有一个闪存组、但您可以检查逻辑以查看选择了哪个应用并将其应用于您的用例。  

    谢谢

    Anu

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

    您好、Erhan、

    我建议您为与此帖子标题无关的问题打开单独的帖子。  

    这有助于 E2E 团队将帖子分配给相应的专家、并帮助您轻松提问。

    谢谢、此致、

    Vamsi

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

    您好、Erhan、

    希望您为其他问题打开了单独的帖子。

    我要关闭此帖子。   

    谢谢、此致、

    Vamsi