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.

[参考译文] RTOS/F28M36P63C2:如何将 CfgGetEntry、mmZeroInit 添加到工程中

Guru**** 2614265 points
Other Parts Discussed in Thread: F28M36P63C2, SYSBIOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/580880/rtos-f28m36p63c2-how-to-add-cfggetentry-mmzeroinit-to-a-project

器件型号:F28M36P63C2
Thread 中讨论的其他器件: SYSBIOS

工具/软件:TI-RTOS

我有一个具有多种构建配置的 TI-RTOS 项目。  其中一个未维护的编译配置因缺少符号而失败:

 mmZeroInit (void *、unsigned int)
 CfgAddEntry (void *、unsigned int、unsigned int、unsigned int、int、 unsigned char *、void **)
 CfgGetEntry (void *、unsigned int、unsigned int、unsigned int、void **)
 CfgRemoveEntry (void *、void *)

如何将这些符号添加到 TI-RTOS 工程中?

谢谢!  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Steve、
    您能告诉我您使用的 TI-RTOS 版本吗? 是否还可以为未构建的配置附加配置文件?
    谢谢、
    Janet
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Janet、您好!

    我不知道在哪里可以找到 RTOS 的版本号;它是最近的版本(我认为是在过去几个月内更新的)。  如果您能告诉我版本号的位置、我很乐意为您提供。

    我无法在公共论坛中提供*。cfg 文件。  但是、*。cfg 文件用于失败的编译和成功的编译。  您能告诉我如何添加我提到的功能吗?  需要哪些库?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Steve、
    要在 CCS 中查找 TI-RTOS 版本、请转到项目属性。 在 General -> RTSC 下、您应该会在"Products and Repositories"下看到 TI-RTOS 版本。
    此致、
    Janet
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它显示了版本2.16.1.14
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、这是您的设备的最新版本。 我向您发送了一个朋友请求、以便您能够向我发送.cfg 文件。
    此致、
    Janet
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Steve、
    当我使用.cfg 文件中的 NDK 配置构建 NDK 应用时、我未看到链接错误。 您可以尝试清理项目并重建吗?
    谢谢、
    Janet
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已经做过很多次了;我刚刚重新造了新的、我得到了以下结果:

    未定义 第一个参考
    符号 文件中
    ------ --------
    mmZeroInit (void *、unsigned int) 商业
    CfgAddEntry (void *、unsigned int、unsigned int、unsigned int、int、 unsigned char *、void **)./comm.obj
    CfgGetEntry (void *、unsigned int、unsigned int、unsigned int、void **) 商业
    CfgRemoveEntry (void *、void *) 商业

    错误#10234-D:未解析的符号仍然存在
    错误#10010:链接期间遇到错误;未生成"MyProject.out"
    gmake:***[MyProject.out]错误1.
    gmake:目标"全部"不会由于错误而重新生成。

    我不知道它是否相关、但我还收到大约12条消息、例如:
    错误#10264:默认存储器范围与现有存储器范围 SMEM_translation_M3_TX 重叠
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Steve、
    comm.c 是应用程序中的文件之一、还是来自库? 是否在链接器命令文件中定义了 SMEM_transport M3 TX? 您构建的平台是什么? 我当时假设它是 ti.platforms.concertoM3:F28M36P63C2。 您能否在 CCS -> Project -> Properties -> General -> RTSC 下进行检查?
    谢谢、
    Janet
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    comm.c 是我的项目中的文件之一。
    是的、在链接器命令文件中定义了 SMEM_transport M3 _TX。
    这是为 F28M36x 上的 ARM Cortex M3 CPU 内核构建的(目标:TI.target.arm.elf.M3、平台:ti.platforms.concertoM3:F28M36P63C2)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Steve、

    我们认为您的项目中可能会有一些旧产品。  我能够以 tcpEcho 示例为例、将 NDK cfg 代码添加到 tcpEcho.cfg 中、并添加一个调用 CfgAddEntry()的虚拟函数、并且在构建时没有错误。  看起来.cmd 文件也已被修改、因为我在示例链接器命令文件中没有定义 SMEM_transport M3 _TX。  您能否附加一个屏幕截图来显示项目产品(CCS -> Project -> Properties -> General -> RTSC)以及项目顺序。  以下是我的示例:

    对于订购、请确保展开选择:

    谢谢、

    Janet

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

    Janet、

    以下是 RTSC >产品和存储库页面:

    这里是 RTSC >订购页面:

    这是否有帮助?

    谢谢!
       Steve G.

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

    Janet、

    我已解决缺少的符号(mmZeroInit、CfgAddEntry 等):有人将文件名从*。c 更改为*。cpp、但未将"extern "语句更新为"extern "C""。  

    我仍然有如下错误:

    错误#10264:默认存储器范围与现有存储器范围 SMEM_translation_M3_TX 重叠

    您能告诉我默认存储器范围的定义位置吗?

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

    也许更多信息会有所帮助。  相关的可执行文件可以构建为"独立"版本、在这种情况下、它将在 ARM Cortex M3的默认引导代码完成后执行。  在这种情况下、链接器脚本中的 flash_boot 和 flash 值如下:

      FLASH_boot (rwx):origin = 0x00200030、length = 0x00000004
       闪 存(rwx)  :origin = 0x00200034,length = 0x000FFF9C

    该可执行文件还可以构建为在 小型次级引导加载程序之后运行。  为此、链接器脚本中的 flash_boot 和 flash 值为:

       FLASH_boot (rwx):origin = 0x00220000、length = 0x00000004
       闪 存(rwx)   :origin = 0x00220030,length = 0x000DFF9C

    当我使用"bootloader"配置时、会收到"default memory range overlaps existing memory range"消息。  如何更改*。cfg 文件和链接器脚本文件以启用从其他闪存位置引导?  注意:我使用的*。cfg 文件是我之前通过私人邮件发送 Janet 的文件。

    谢谢!

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

    它似乎与"resetVecs"发生了某种冲突、但我看不到这个值被指定的位置。  如何/在何处配置此项?

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

    您好、Steve、

    您可以通过将以下内容添加到.cfg 文件中来移动 resetVecs:

    //导入特定于器件的 Hwi 模块
    var m3Hwi = xdc.useModule('ti.sysbios.family.arm.m3.Hwi');
    m3Hwi.resetVectorAddress = 0x00220040; //新地址

    我能够使用您的 FLASH_boot 和闪存地址重现"默认存储器"链接错误。  当我更改.cfg 文件中的复位矢量地址时、错误消失。

    此致、

    Janet