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.

[参考译文] CCS/TMS320F280049C:使 rts2800_fpu32.lib 在 RAM 部分中运行

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/849500/ccs-tms320f280049c-make-rts2800_fpu32-lib-run-in-ram-section

器件型号:TMS320F280049C

工具/软件:Code Composer Studio

尊敬的 TI 团队:

我 在"释放"模式下遇到运行时问题。 当我的所有代码在闪存存储器空间中运行时、我的代码的运行速度太慢、无法正常工作。

因此、我在*。cmd 文件中插入了以下行:

  .TI.ramfunc     :load = flash_BANK0_SEC1_2,
                        运行= RAMLS3456、
                        load_start (_RamfuncsLoadStart)、
                        load_size (_RamfuncsLoadSize)、
                        load_end (_RamfuncsLoadEnd)、
                        run_start (_RamfuncsRunStart)、
                        run_size (_RamfuncsRunSize)、
                        run_end (_RamfuncsRunEnd)、
                        PAGE = 0、ALIGN (4)

  .TI.ramfunc2     :load = flash_BANK0_SEC3_4、
                        运行= RAMGS2、
                        load_start (_Ramfuncs2LoadStart)、
                        load_size (_Ramfuncs2LoadSize)、
                        load_end (_Ramfuncs2LoadEnd)、
                        run_start (_Ramfuncs2RunStart)、
                        run_size (_Ramfuncs2RunSize)、
                        run_end (_Ramfuncs2RunEnd)、
                        PAGE = 0、ALIGN (4)

".TI.ramfunc"和".TI.ramfunc2"用于时间关键型函数、而".TI.ramfunc2"用于某些用户函数。

在这一更改之后、我的应用程序大部分时间都能正常工作、但有时测量过程中的计算值 不正确。

如果我的应用程序在调试模式下运行(所有代码在 RAM 中执行)、计算值始终正确。 因此、我怀疑我也必须将 rts2800_fpu32.lib 代码复制到 RAM 部分。

我尝试使用*。cmd 文件中的以下代码行执行此操作:

RTS2800_FPU32:

  {

       rts2800_fpu32.lib (.econst)

       rts2800_fpu32.lib (.text)

  }                  LOAD = FLASH_BANK0_SEC7、

                        运行= RAMGS3、

                        load_start (_Ramfuncs3LoadStart)、

                        load_size (_Ramfuncs3LoadSize)、

                        load_end (_Ramfuncs3LoadEnd)、

                        run_start (_Ramfuncs3RunStart)、

                        run_size (_Ramfuncs3RunSize)、

                        run_end (_Ramfuncs3RunEnd)、

                        PAGE = 0、ALIGN (4)

 

但我收到以下错误消息:

"./28004x_general_flash_lnk.cmd"、行114:错误#10008-D:找不到文件"rts2800_fpu32.lib"

我认为库的路径是正确的。

 由于没有*。cmd 文件中的错误行、rts2800_fpu32.lib 代码被链接至以下闪存段:

text.1   0   00081f50   000010af     
                 00081f50   0000057c    measure.obj (.text)
                 000824cc   000004e8    host.obj (.text)
                 000829b4   00000495    f28004x_defaultisr.obj (.text:retain)
                 00082e49   00000107    global.obj (.text)
                 00082f50   0000009c    rts2800_fpu32.lib:fd_add28.asm.obj (.text)
                 00082fec   00000010    f28004x_pievect.obj (.text)
                 00082ffc   00000002    rts2800_fpu32.lib:pre_init.c.obj (.text)
                 00082ffe   00000001                      :startup.c.obj (.text)

text.2   0   00084cb4   0000034b     
                 00084cb4   000002f5    f28004x_sysctrl.obj (.text)
                 00084fa9   00000056    rts2800_fpu32.lib:boot28.asm.obj (.text)

text.3   0   00085298   00000d64     
                 00085298   00000487    test.obj (.text)
                 0008571f   0000036e    f28004x_dma.obj (.text)
                 00085a8d   000002df    test.obj (.text:retain)
                 00085d6c   00000251    rts2800_fpu32.lib:e_log10.c.obj (.text)
                 00085fbd   00000031                      :atoi.c.obj (.text)
                 00085FEE   0000000e                      :fd_sub28.asm.obj (.text)

text.4   0   00086660   00000999     
                 00086660   00000222    f28004x_gpio.obj (.text)
                 00086882   00000204    hv.obj (.text)
                 00086a86   000000f5    main.obj (.text)
                 00086b7b   000000ef    adc.obj (.text)
                 00086c6a   000000d1    temperure.obj (.text)
                 00086d3b   000000c5    f28004x_spi.obj (.text)
                 00086e00   000000b5    VCA.obj (.text)
                 00086eb5   0000008b    rts2800_fpu32.lib:fd_div28.asm.obj (.text)
                 00086f40   00000083                      :fd_mpy28.asm.obj (.text)
                 00086fc3   0000002d    SPI.obj (.text)
                 00086ff0   00000009    rts2800_fpu32.lib:_lock.c.obj (.text)

text.5   0   00087000   00000436     
                 00087000   0000007f    parameter.obj (.text)
                 0008707f   00000072    dma.obj (.text)
                 000870F1   00000061    f28004x_adc.obj (.text)
                 00087152   0000005c    f28004x_cputimers.obj (.text)
                 000871ae   00000055    激光.obj (.text)
                 00087203   00000046    hvPwm.obj (.text)
                 00087249   0000002a    rts2800_fpu32.lib:fd_cmp28.asm.obj (.text)
                 00087273   0000002a                      :l_div28.asm.obj (.text)
                 0008729d   00000029                      :exit.c.obj (.text)
                 000872c6   00000028    f28004x_PIECTRL.obj (.text)
                 000872ee   00000024    CPLD .obj (.text)
                 00087312   00000024    rts2800_fpu32.lib:cpy_tbl.c.obj (.text)
                 00087336   00000023                      :fd_tofsfpu32.asm.obj (.text)
                 00087359   0000001e                      :memcpy.c.obj (.text)
                 00087377   0000001d                      :I_tofd28.asm.obj (.text)
                 00087394   0000001c                      :fs_tofdfpu32.asm.obj (.text)
                 000873b0   0000001c                      :l_tofd28.asm.obj (.text)
                 000873cc   0000001a    error.obj (.text)
                 000873e6   00000019    rts2800_fpu32.lib:args_main.c.obj (.text)
                 000873ff   00000018                      :LL_aox28.asm.obj (.text)
                 00087417   00000016                      :ul_tofd28.asm.obj (.text)
                 0008742d   00000009                      :fd_否定28.asm.obj (.text)

你能告诉我我的错误吗?

此致、

霍斯特埃西格

 

 

您能告诉我该怎么办吗?

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

    您好!

    您能否尝试提供 rts2800_fpu32.lib 路径的完整路径、例如 c:\ti\ccs910\ccs\tools\compiler\ti-cgt-C2000-18.12.2.LTS \lib\rts2800_fpu32.lib?

    在"文件搜索路径"的项目属性中、您可以找到提供的库名称和路径。 如果库不在默认工程文件夹中、则需要在链接器命令文件中提及类似的路径。

    希望这对您有所帮助。

    谢谢、

    Katta

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

    您好!

    在定义库的段时、需要使用如下所示的--library 选项。 有关更多详细信息、请参阅 TI 连接器命令文件入门。

    http://software-dl.ti.com/ccs/esd/documents/sdto_cgt_Linker-Command-File-Primer.html

    RTS2800_FPU64:
    {
    
    --library=rts2800_fpu64_eabi.lib (.text)
    
    }load = FLASH3、
    
    run = RAMGS3、
    
    load_start (_Ramfuncs3LoadStart)、
    
    load_size (_Ramfuncs3LoadSize)、
    
    load_end (_Ramfuncs3LoadEnd)、
    
    run_start (_Ramfuncs3RunStart)、
    
    run_size (_Ramfuncs3RunSize)、
    
    run_end (_Ramfuncs3RunEnd)、
    
    align (4) 

    谢谢

    Vasudha

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

    您好!

    问题不是路径。 我在另一篇文章中发现一个提示、即我必须将一些代码保留在闪存中、并且只复制其余函数。

    我已通过插入到*。cmd 文件中的以下行来管理此操作:

      rts2800_fpu32_FLASH:> FLASH_BANK0_sec7、page = 0
      {
        rts2800_fpu32.lib (.text)
        rts2800_fpu32.lib (.text)
        rts2800_fpu32.lib (.text)
        rts2800_fpu32.lib (.text)
        rts2800_fpu32.lib (.text)
      }

     rts2800_fpu32_RAM:   load = flash_BANK0_sec7,
                            运行= RAMLS2、
                            load_start (_fpuLibLoadStart)、
                            load_size (_fpuLibLoadSize)、
                            Load_End (_FpuLibLoadEnd)、
                            RUN_START (_FpuLibRunStart)、
                            {
                             rts2800_fpu32.lib <*>(.text)
                            }
                            run_size (_fpuLibRunSize)、
                            RUN_END (_FpuLibRunEnd)、
                            PAGE = 0、ALIGN (4)

    但不幸的是、我的运行时问题已经存在。

    我现在尝试复制 RAM 部分中的所有其他函数。

    我希望我能找到负责运行时问题的函数。

    此致、

    霍斯特埃西格