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.

[参考译文] 编译器/TMS320F280049C:使用的 TMS320F280049C FlashApi

Guru**** 2538950 points
Other Parts Discussed in Thread: TMS320F280049C, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/805502/compiler-tms320f280049c-tms320f280049c-flashapi-using

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

工具/软件:TI C/C++编译器

您好!
      使用 TMS320F280049C 的 FlashApi 时遇到以下问题:

 警告28004x_general_flash_lnk.cmd"、第282行:警告#10068-D:无匹配段

2.链接时找不到 FlashApi 库文件:

 未定义文件中的第一个引用符号     

fapi_checkFsmForReady()  
Fapi_doBlankCheck (unsigned long *、unsigned long、Fapi_FlashStatusWordType *)  
Fapi_doVerify (unsigned long *、unsigned long、unsigned long *、Fapi_FlashStatusWordType *)  
fapi_getFsmStatus()  
Fapi_initializeAPI (volatile FMC_registers *、unsigned long)  
Fapi_issue19 CommandWithAddress (Fapi_FlashStateCommandType、unsigned long *)  
fapi_issueProgrammingCommand (unsigned long *、unsigned int *、unsigned int、unsigned int *、unsigned int、 Fapi_FlashProgrammingCommandsType)  
Fapi_setActiveFlashBank (Fapi_FlashBankType)

但实际上、我已经包含了相应的头文件和库。

cmd 文件中的相应配置如下:

第0页:
 …

RAMGS1:origin = 0x00E000、length = 0x002000

RAMGS2:origin = 0x010000、length = 0x002000

RAMGS3:origin = 0x012000,length = 0x002000

/*闪存扇区*/
FLASHA:origin = 0x080002,length = 0x001FFE /*片上闪存*/
FLASHB:origin = 0x082000、length = 0x002000 //片上闪存*

部分

Flash28_API:

//-l F021_ROM_API_F28004x_FPU32.lib
l F021_API_F28004x_FPU32.lib

负载= FLASHB、
运行= RAMGS3、
Load_start (_Flash28_API_LoadStart)、
load_size (_Flash28_API_LoadSize)、
Load_End (_Flash28_API_LoadEnd)、
RUN_START (_Flash28_API_RunStart)、
Run_Size (_Flash28_API_RunSize)、
Run_End (_Flash28_API_RunEnd)、
PAGE = 0

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

    您是否可以使用该项目

    从\C2000Ware_1_00_06_00\driverlib\f28004x\examples\flash\中删除了"flashapi_ex1_program_autocecc"
    或使用此项目作为修改项目的参考。

    包含选项和链接器选项可从此处获取。
    有关警告、请使用28004x_flash_api_lnk.cmd 链接器命令文件。

    如果您需要其他信息、请告诉我。

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

    与闪存 API 使用示例(flashapi_ex1_program_autoecc)一起使用的链接器命令文件(28004x_flash_api_lnk.cmd)可从 C:\ti\c2000Ware_x_xx_xx_xx\device_support\f28004x\common\cmd 获取。

    此外、闪存 API 库位于\C2000Ware_x_xx_xx_xx\libraries\flash_api\f28004x\lib 中。
    请检查您使用的路径。

    谢谢、此致、
    Vamsi
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    比较 flashapi_ex1_program_autocecc 并找到以下差异:
    我的命令是:
    .TI.ramfunc :load = FLASHCH,
    运行= RAMGS1、
    load_start (_RamfuncsLoadStart)、
    load_size (_RamfuncsLoadSize)、
    load_end (_RamfuncsLoadEnd)、
    run_start (_RamfuncsRunStart)、
    run_size (_RamfuncsRunSize)、
    run_end (_RamfuncsRunEnd)、
    PAGE = 0、ALIGN (4)
    Flash28_API:

    l F021_API_F28004x_FPU32.lib

    负载= FLASHB、
    运行= RAMGS3、
    Load_start (_Flash28_API_LoadStart)、
    load_size (_Flash28_API_LoadSize)、
    Load_End (_Flash28_API_LoadEnd)、
    RUN_START (_Flash28_API_RunStart)、
    Run_Size (_Flash28_API_RunSize)、
    Run_End (_Flash28_API_RunEnd)、
    PAGE = 0
    flashapi_ex1_program_autoecc‘s cmd 为:μ F


    .TI.ramfunc
    {-l F021_API_F28004x_FPU32.lib}

    }LOAD = FLASH_BANK0_SEC1、
    运行= RAMLS03、
    load_start (_RamfuncsLoadStart)、
    load_size (_RamfuncsLoadSize)、
    load_end (_RamfuncsLoadEnd)、
    run_start (_RamfuncsRunStart)、
    run_size (_RamfuncsRunSize)、
    run_end (_RamfuncsRunEnd)、
    PAGE = 0、ALIGN (4)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您能否在编译代码时不出现任何构建错误?

    看起来您在不同扇区中存储闪存 API ramfuncs 和.TI.ramfuncs。

    您是否在某个位置声明了 Flash28_API_LoadStart、Flash28_API_LoadEnd 等?

    您是否使用与类似的上述变量执行了 memcpy
    memcpy (&RamfuncsRunStart、&RamfuncsLoadStart、(size_t)&RamfuncsLoadSize);

    RAMGS3是否属于第0页?

    请告知我们您的当前问题。

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

    您能否在编译代码时不出现任何构建错误?
    否、编译阶段没有错误、链接器阶段有错误:未定义文件中的第一个引用符号 Fapi_checkFsmForReady()等

    看起来您在不同扇区中存储闪存 API ramfuncs 和.TI.ramfuncs。
    是的、我在不同的扇区中存储了闪存 API ramfuncs 和.TI.ramfuncs。

    您是否在某个位置声明了 Flash28_API_LoadStart、Flash28_API_LoadEnd 等?
    我尚未在某个位置声明 Flash28_API_LoadStart、Flash28_API_LoadEnd、仅在.cmd 中声明;
    在我的程序中、只需将它们 extern 即可。

    您是否使用与类似的上述变量执行了 memcpy
    是的、我在我的程序中执行 memcpy (&RamfuncsRunStart、&RamfuncsLoadStart、(size_t)&RamfuncsLoadSize)。

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

    您好!

      代码中是否使用了 memcpy (&Flash28_API_RunStart、&Flash28_API_LoadStart、(size_t)&Flash28_API_LoadSize)。

    请分享您的编译器设置吗?

    您是否将链接器文件搜索路径更新为 C2000Ware_x_xx_xx_xx\libraries\flash_api\f28004x\lib
    从 workspace_loc:/${ProjName}/Driver/common/lib?

    谢谢、
    Katta

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

    您是否有任何更新?

    如果您仍面临此问题、请将您的项目附加到此处吗? 共享前删除所有受版权保护的信息。

    谢谢、
    Katta
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常感谢您的回复!
    由于 C 和 C++的混合编译、该问题已得到解决。