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.

[参考译文] TMS320F28386D:"ReleaseFlashPump'and ##39;SeizeFlashPump'Build for EEPROM 仿真(通过闪存)测试中不包含函数

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

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1470925/tms320f28386d-releaseflashpump-and-seizeflashpump-functions-not-being-included-in-build-for-eeprom-emulation-via-flash-tests

器件型号:TMS320F28386D
Thread 中讨论的其他器件:C2000WARE

工具与软件:

我正在尝试根据"eeprom_emulation_sprab69a.pdf"-为 C2838x 处理器的构建添加 EEPROM 仿真功能、在链接步骤中出现此错误、失败:

首次引用了未定义的
符号
--- -------
ReleaseFlashPump f2838x_EEPROM_emulation.obj
SeizeFlashPump f2838x_eeprom_emulation.obj

在 f2837x 版本的处理器(示例程序使用的处理器)中、这些函数在一个文件中定义

F2837xD_sysctrl.obj

中不存在这些函数

f2838x_sysctrl.c 文件。

我刚刚将这两个缺少的函数转移到了 C 文件中、但是现在我不清楚如何将它们包含在构建中。 当我运行我的构建时、这两个函数仍然缺失、这告诉我它们所在的文件不会被重新编译。 我猜这个功能可能是我所使用的闪存 API 库的一部分:

F2838x_C28x_FlashAPI.lib

它不会被重建。

下面试举几个问题:

1) 1) f2838x_sysctrl.c 文件是否是库构建的一部分?
2)如果是,如何重新构建库?
3) 3)如果不是、如何构建和链接该功能?

如果需要帮助的话、我将包含我使用的链接器说明文件。 如果您需要检查任何其他文件、请告知我。

此致、

Tom Miller

DIMAAG-AI

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

    您好、Tom、

    1) 1) f2838x_sysctrl.c 文件是否是库构建的一部分?

    • 否、它是一个独立的 driverlib 文件(位于${C2000WARE_ROOT}\device_support\f2838x\common\source\f2838x_sysctrl.c)

    2) 2)如果是、如何重新构建库?

    • 无需重新构建库

    3) 3)如果不是、如何构建和链接该功能?

    • 在此设备上,SeizeFlashPump ()和 ReleaseFlashPump ()函数被称为 Flash_ClaimPumpSemaphore ()和 Flash_releasePumpSemaphore ()。
      • 请参阅 flashapi_ex1_programming 工程(位于${C2000WARE_ROOT}\driverlib\f2838x\examples\c28x\flash)、了解用法/调用
    • 要解决该错误、请将 f2837x 调用替换为 f2838x 调用

    此致!

    Alex

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

    你好 Alex ,感谢快速的答复。 我认为"seizeFlashPump"和"releaseFlashPump"调用是由图书馆做的!  这是否意味着我使用了错误的库? 如果是、我应该使用哪一个?  

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

    Tom、

    闪存 API 库不要求或者独自释放闪存泵信标。 您使用的库版本正确(F2838x_C28x_FlashAPI.lib)。

    哪个 C 文件是 从创建的 f2838x_eeprom_emulation.obj? 对这些功能是否有任何挥之不去的调用?

    此外、您当前参考的应用手册(sprab69a)适用于第2代 C2000 MCU。  适用于第3代 C2000实时 MCU (sprade8)的 EEPROM 仿真是适用于第3代 F2837x 和 F2838x 器件上 EEPROM 仿真的正确应用手册。

    此致!

    Alex

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

    大家好、Alex、我使用的是 Simulink 演示模型、该模型最初是在 f28379处理器中实现 EEPROM 功能。 当我深入研究模型中的自定义代码块时、我可以找到这两个调用。 我将替换它们并返回到您的结果-感谢您的帮助!  我会让你知道它是怎么做的!

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

    Alex、您好!是否有适用于 Gen3器件的闪存 API?  现在出现以下错误:  

     "C:/Mathworks_examples/EEPROM_Emulation /f2838x_EEPROM_emulation_ERT_RTW/f2838x_EEPROM_emulation.c"、第418行:错误:函数调用中的参数太少

    -噢,等等。。。。 我想我发现了它:  spnu632-是版本1.6的文档的最新版本吗?  

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

    Tom、

    可以、您当前正在使用的是第3代器件的闪存 API。 每个器件都有自己版本的闪存 API 库(可在 ${C2000WARE_ROOT}\libraries\flash_api\${your_device}找到。

    SPNU632是针对此器件的闪存 API 指南的最新版本。

    至于缺失的参数、我的第一个猜测是在声明信标时需要指定 CPU。 函数调用(如果使用 CPU1)应如下所示: FLASH_ClaimPumpSemaphore (FLASH_CPU1_WRAPPER);

    有关这些函数的示例用法、请参阅 flashapi_ex1_programming 示例。

    此致!

    Alex