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.

[参考译文] TMS320F280037C:如何将闪存函数移动到 RAM

Guru**** 2927160 points

Other Parts Discussed in Thread: C2000WARE, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1650778/tms320f280037c-how-to-move-flash-function-to-ram

器件型号: TMS320F280037C
Thread 中讨论的其他器件: C2000WARESysConfig

您好、

我正在处理一个基于 F280037C 器件的工程、在该器件上、我需要使用闪存 API 进行擦除/编程操作。 闪存 API 函数必须从 RAM 执行、因此我尝试将闪存 API 库函数和闪存相关函数都移动到 RAM 中。

我了解如何在 C2000Ware 中提供的闪存 API 示例中完成此操作。 这些示例使用手动编辑的链接器命令文件并定义类似于以下内容的段:

GROUP
{
    .TI.ramfunc
    { -l FAPI_F28003x_EABI_v1.58.10.lib }
}
LOAD = FLASH_BANK0_SEC1,
RUN = RAMLS03,
LOAD_START(RamfuncsLoadStart),
LOAD_SIZE(RamfuncsLoadSize),
LOAD_END(RamfuncsLoadEnd),
RUN_START(RamfuncsRunStart),
RUN_SIZE(RamfuncsRunSize),
RUN_END(RamfuncsRunEnd),
ALIGN(8)

但是、我的工程使用 SysConfig、它会自动生成链接器命令文件。 正因如此:

  1. 我无法直接编辑生成的 .cmd 文件、因为 SysConfig 会在重新生成期间将其覆盖。

  2. 我不确定如何使用 SysConfig 创建等效的 RAM 函数部分。

  3. FAPI_F28003x_EABI_v1.58.10.lib使用 SysConfig 时、我不确定如何将闪存 API 库 () 正确放入 RAM 执行的部分。

我的问题是:

  1. 在基于 SysConfig 的工程中将闪存 API 函数移至 RAM 的建议方法是什么?

  2. 这可以完全通过 SysConfig 来实现吗?

  3. 是否有任何示例工程或文档介绍如何使用 SysConfig 配置 RAM 函数和闪存 API 库放置?

  4. 如果需要自定义链接器命令文件、建议使用什么方法来避免与 SysConfig 生成的链接器文件发生冲突?

请提供任何指导或举个例子。

谢谢你。

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

    尊敬的 Harisha:

    感谢您的提问、并对延迟的回复深表歉意。 您能尝试以下方式吗?

    1. 创建一个单独的 .cmd 文件(例如) flash_api_ram.cmd,用于定义您的 Flash API RAM 部分

    很重要

    业务线经理

    .TI.ramfunc
    {-l FAPI_F28003x_EABI_v1.58.10.lib}
    }
    LOAD = FLASH_BANK0_SEC1、
    RUN = RAMLS03、
    LOAD_START (RamfuncsLoadStart)、
    load_size (RamfuncsLoadSize)、
    LOAD_END (RamfuncsLoadEnd)、
    RUN_START (RamfuncsRunStart)、
    RUN_SIZE (RamfuncsRunSize)、
    RUN_END (RamfuncsRunEnd)、
    对齐 (8)
    }

    注意 — 链接器将其与 SysConfig 生成的 .cmd 文件合并而不会发生冲突、因为链接器会 .cmd 一起处理所有文件

    2.将闪存库添加到链接器搜索路径。  在 CCS: Project Properties→C2000 Linker→File Search Path 中、添加路径 FAPI_F28003x_EABI_v1.58.10.lib 、以便链接器可以将其解析。

    将所有闪存相关函数分配给.TI.ramfunc

    在 C 源文件中、使用 __attribute__((ramfunc))#pragma CODE_SECTION 将包装程序函数放入 .TI.ramfunc 以下部分:

    #pragma CODE_SECTION (myFlashErase、“.TI.ramfunc“)
    void myFlashErase (void){
    //此处调用闪存 API
    }

    4. 在调用任何闪存 API 函数之前,使用将段复制到 RAM memcpy()

    memcpy (&RamfuncsRunStart、&RamfuncsLoadStart、(size_t)&RamfuncsLoadSize);

    您能尝试一下它并告诉我它是否有效吗?

    谢谢、

    IRA

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

    在此之前,我只得到了像我创建了相同的东西,你在重播解释感谢你的重播