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.

[参考译文] 编译器/TMS320F28388D:将库放置在特定的存储器位置

Guru**** 2952510 points

Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/954375/compiler-tms320f28388d-placing-libraries-in-specific-memory-location

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

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

您好!

通过 TI 提供的源文件为我们的应用创建了三个实时库。

我们需要知道如何将这三个库放置在链接器命令文件中的特定存储器位置。

我们可以从何处获取相关信息?

(三个库是闪存、RAM 和闪存 API)。

谢谢、

Subha

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

    请参阅 从库分配单个输入段、这是较大文章 链接器命令文件入门的一部分。

    谢谢、此致、

    乔治

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

    您好!

    当我尝试放置库时、我遇到这样的错误、

    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第5行:错误#10264:开始存储器范围与现有存储器范围 FLASH0重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第5行:错误#10263:已指定开始内存范围
    "../Source/2838x_FLASH_lnk_cpu1.cmd、第6行:错误#10264:RESET_SOURCE 存储器范围与现有存储器范围 BOOT_RSVD 重叠
    "../Source/2838x_FLASH_lnk_cpu1.cmd、第7行:错误#10263:BOOT_RSVD 内存范围已指定
    "../Source/2838x_FLASH_lnk_cpu1.cmd、第7行:错误#10264:BOOT_RSVD 存储器范围与现有存储器范围 BOOT_RSVD 重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第8行:错误#10263:RAMM0内存范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第8行:错误#10264:RAMM0存储器范围与现有存储器范围 RAMM0重叠
    "../Source/2838x_FLASH_lnk_cpu1.cmd、第9行:错误#10263:RAMM1存储器范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第9行:错误#10264:RAMM1存储器范围与现有存储器范围 RAMM1重叠
    "../Source/2838x_FLASH_lnk_cpu1.cmd、第11行:错误#10263:RAMD0内存范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第11行:错误#10264:RAMD0存储器范围与现有存储器范围 RAMD0重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第12行:错误#10263:RAMD1内存范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第12行:错误#10264:RAMD1存储器范围与现有存储器范围 RAMD1重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第13行:错误#10264:RAMLS0_R 存储器范围与现有存储器范围 RAMLS0重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第14行:错误#10264:RAMLS0_INDEX 存储器范围与现有存储器范围 RAMLS0重叠
    "../Source/2838x_FLASH_lnk_cpu1.cmd、第15行:错误#10263:RAMLS0内存范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第15行:错误#10264:RAMLS0存储器范围与现有存储器范围 RAMLS0重叠
    "../Source/2838x_FLASH_lnk_cpu1.cmd、第16行:错误#10263:RAMLS1内存范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第16行:错误#10264:RAMLS1存储器范围与现有存储器范围 RAMLS1重叠
    "../Source/2838x_FLASH_lnk_cpu1.cmd、第17行:错误#10263:RAMLS2内存范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第17行:错误#10264:RAMLS2存储器范围与现有存储器范围 RAMLS2重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第18行:错误#10263:RAMLS3内存范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第18行:错误#10264:RAMLS3内存范围与现有内存范围 RAMLS3重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第21行:错误#10264:RAMLS5_6_7存储器范围与现有存储器范围 RAMLS4重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第21行:错误#10263:RAMLS5_6_7内存范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第21行:错误#10264:RAMLS5_6_7存储器范围与现有存储器范围 RAMLS5_6_7重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第24行:错误#10263:RAMGS0内存范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第24行:错误#10264:RAMGS0存储器范围与现有存储器范围 RAMGS0重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第25行:错误#10263:RAMGS1内存范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第25行:错误#10264:RAMGS1存储器范围与现有存储器范围 RAMGS1重叠
    "../Source/2838x_FLASH_lnk_cpu1.cmd、第26行:错误#10263:RAMGS2内存范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第26行:错误#10264:RAMGS2存储器范围与现有存储器范围 RAMGS2重叠
    "../Source/2838x_FLASH_lnk_cpu1.cmd、第27行:错误#10263:RAMGS3内存范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第27行:错误#10264:RAMGS3内存范围与现有内存范围 RAMGS3重叠
    "../Source/2838x_FLASH_lnk_cpu1.cmd、第28行:错误#10263:RAMGS4内存范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第28行:错误#10264:RAMGS4存储器范围与现有存储器范围 RAMGS4重叠
    "../Source/2838x_FLASH_lnk_cpu1.cmd、第29行:错误#10263:RAMGS5内存范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第29行:错误#10264:RAMGS5存储器范围与现有存储器范围 RAMGS5重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第30行:错误#10263:RAMGS6内存范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第30行:错误#10264:RAMGS6存储器范围与现有存储器范围 RAMGS6重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第31行:错误#10263:RAMGS7内存范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第31行:错误#10264:RAMGS7存储器范围与现有存储器范围 RAMGS7重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第32行:错误#10263:RAMGS8内存范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第32行:错误#10264:RAMGS8存储器范围与现有存储器范围 RAMGS8重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第33行:错误#10263:RAMGS9内存范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第33行:错误#10264:RAMGS9存储器范围与现有存储器范围 RAMGS9重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第34行:错误#10263:RAMGS10内存范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第34行:错误#10264:RAMGS10存储器范围与现有存储器范围 RAMGS10重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第35行:错误#10263:RAMGS11内存范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第35行:错误#10264:RAMGS11存储器范围与现有存储器范围 RAMGS11重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第36行:错误#10263:已指定 RAMGS12存储器范围
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第36行:错误#10264:RAMGS12存储器范围与现有存储器范围 RAMGS12重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第37行:错误#10263:RAMGS13内存范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第37行:错误#10264:RAMGS13存储器范围与现有存储器范围 RAMGS13重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第38行:错误#10263:已指定 RAMGS14存储器范围
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第38行:错误#10264:RAMGS14存储器范围与现有存储器范围 RAMGS14重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第39行:错误#10263:RAMGS15内存范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第39行:错误#10264:RAMGS15存储器范围与现有存储器范围 RAMGS15重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第43行:错误#10263:FLASH0内存范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第43行:错误#10264:FLASH0存储器范围与现有存储器范围 FLASH0重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第44行:错误#10263:FLASH1内存范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第44行:错误#10264:FLASH1内存范围与现有内存范围 FLASH1重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第45行:错误#10263:FLASH2存储器范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第45行:错误#10264:FLASH2存储器范围与现有存储器范围 FLASH2重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第46行:错误#10263:FLASH3内存范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第46行:错误#10264:FLASH3存储器范围与现有存储器范围 FLASH3重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第47行:错误#10263:FLASH4内存范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第47行:错误#10264:FLASH4存储器范围与现有存储器范围 FLASH4重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第48行:错误#10263:FLASH5内存范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第48行:错误#10264:FLASH5存储器范围与现有存储器范围 FLASH5重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第49行:错误#10263:Flash6内存范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第49行:错误#10264:Flash6存储器范围与现有存储器范围 Flash6重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第50行:错误#10263:FLASH7内存范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第50行:错误#10264:FLASH7内存范围与现有内存范围 FLASH7重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第51行:错误#10263:FLASH8内存范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第51行:错误#10264:FLASH8存储器范围与现有存储器范围 FLASH8重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第52行:错误#10263:FLASH9内存范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第52行:错误#10264:FLASH9存储器范围与现有存储器范围 FLASH9重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第53行:错误#10263:FLASH10内存范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第53行:错误#10264:FLASH10存储器范围与现有存储器范围 FLASH10重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第54行:错误#10263:FLASH11内存范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第54行:错误#10264:FLASH11存储器范围与现有存储器范围 FLASH11重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第55行:错误#10263:FLASH12内存范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第55行:错误#10264:FLASH12存储器范围与现有存储器范围 FLASH12重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第56行:错误#10263:FLASH13内存范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第56行:错误#10264:FLASH13存储器范围与现有存储器范围 FLASH13重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd、第59行:错误#10264:FLASH4_build_CRC 存储器范围与现有存储器范围开始重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd、第60行:错误#10264:FLASH4_build_info 存储器范围与现有存储器范围 FLASHE_build_info 重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第63行:错误#10264:FLASH10_CDF_CRC 存储器范围与现有存储器范围 FLASH10重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第65行:错误#10263:CPU1TOCPU2RAM 内存范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第65行:错误#10264:CPU1TOCPU2RAM 存储器范围与现有存储器范围 CPU1TOCPU2RAM 重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第66行:错误#10263:CPU2TOCPU1RAM 内存范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd、第66行:错误#10264:CPU2TOCPU1RAM 存储器范围与现有存储器范围 CPU2TOCPU1RAM 重叠
    "../Source/2838x_FLASH_lnk_cpu1.cmd、第67行:错误#10263:CPUTOCMRAM 内存范围已指定
    "../Source/2838x_FLASH_lnk_cpu1.cmd、第67行:错误#10264:CPUTOCMRAM 存储器范围与现有存储器范围 CPUTOCMRAM 重叠
    "../Source/2838x_FLASH_lnk_cpu1.cmd、第68行:错误#10263:CMTOCPURAM 存储器范围已指定
    "./Source/2838x_FLASH_lnk_cpu1.cmd、第68行:错误#10264:CMTOCPURAM 存储器范围与现有存储器范围 CMTOCPURAM 重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第70行:错误#10263:CANA_MSG_RAM 存储器范围已指定
    "../Source/2838x_FLASH_lnk_cpu1.cmd、第70行:错误#10264:CANA_MSG_RAM 存储器范围与现有存储器范围 CANA_MSG_RAM 重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第71行:错误#10263:CANB_MSG_RAM 存储器范围已指定
    "../Source/2838x_FLASH_lnk_cpu1.cmd、第71行:错误#10264:CANB_MSG_RAM 存储器范围与现有存储器范围 CANB_MSG_RAM 重叠
    致命错误#99900:已达到错误限制;检测到100个错误

    为什么会发生这种情况? 如何解决?

    谢谢、

    Subha

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

    您好!

    在 TI 提供的闪存 API 库(F2838x_C28x_FlashAPI.lib)中、f2838x_flash_api_lnk.cmd 文件中的以下部分意味着什么?


    组
    {
    .TI.ramfunc
    {-l F2838x_C28x_FlashAPI.lib}

    }负载= FLASH3,
    运行= RAMLS03、
    Load_start (RamfuncsLoadStart)、
    load_size (RamfuncsLoadSize)、
    Load_End (RamfuncsLoadEnd)、
    RUN_START (RamfuncsRunStart)、
    run_size (RamfuncsRunSize)、
    RUN_END (RamfuncsRunEnd)、
    对齐(8)

    谢谢、

    Subha

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

    像这样的诊断...

    [引用 USER="Subha R"]。/Source/2838x_FLASH_lnk_cpu1.cmd,第5行:错误#10264:开始内存范围与现有内存范围 FLASH0重叠
    "./Source/2838x_FLASH_lnk_cpu1.cmd "、第5行:错误#10263:已指定开始内存范围

    (笑声) 通常是由于提供两个链接器命令文件作为链接器的输入而导致的。  请仔细检查链接器的调用、看看是否发生了这种情况。  如果是、则删除其中一个链接器命令文件。

    谢谢、此致、

    乔治

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

    [引用 USER="Subha R"]在 TI 提供的闪存 API 库(F2838x_C28x_FlashAPI.lib)中,f2838x_flash_api_lnk.cmd 文件中的以下部分是什么意思?

    我在 C2000Ware 中看不到该链接器命令文件、因此我不知道它来自哪里。

    此代码...

    [引用 user="subha R"]

    组
    {
    .TI.ramfunc
    {-l F2838x_C28x_FlashAPI.lib}

    }负载= FLASH3,
    运行= RAMLS03、
    Load_start (RamfuncsLoadStart)、
    load_size (RamfuncsLoadSize)、
    Load_End (RamfuncsLoadEnd)、
    RUN_START (RamfuncsRunStart)、
    run_size (RamfuncsRunSize)、
    RUN_END (RamfuncsRunEnd)、
    对齐(8)

    [/报价]

    (笑声) 在几个方面都不常见。  这就是我怀疑它已被修改的原因。  话虽如此、这就是该代码的作用。

    它构成一个组、其中包含一个输出段。  虽然这是合法语法、但它没有任何有用的东西。  可以删除组。

    它会形成一个名为.TI.ramfunc 的输出段。  它由库 F2838x_C28x_FlashAPI.lib 中的所有输入段组成。  这个库只包含代码段(名为.text)、而不包含数据段、这是一个很好的猜测。  此组/段在 FLASH3存储器范围中分配了一个加载地址、在 RAMLS03存储器范围中分配了一个运行地址。  它在8字边界上对齐。  load_start、load_size 等运算符会创建符号、用于实现将组/段从闪存复制到 RAM 的代码。

    谢谢、此致、

    乔治

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

    您好!

    当我尝试放置我们自己创建的 RTL 文件时、为什么某些.obj 文件丢失放置在存储器范围中。

    为什么会发生这种情况? 是否还有任何方法可以放置这些目标文件?

    我们使用以下提到的文件创建了 RTL 闪存库

    _lock.c、

     args_main.c、  

    sqrT_f32.asm、   

    LOG_F32.asm、

    Logtable_F32.asm、  

    errno.c、

    exit.c、  

    s_frexpf.c、  

    Atol.c、 ctype.c、  

    U_div28.asm、  

    DIV_F32.asm、  

    Boot28.asm、  

    LL_aox28.asm、

    LL_cmp28.asm、  

    LL_div28.asm、  

    LL_mpy28.asm、

    autoinit.c、   

    startup.c、

    pre_init.c、

    cpy_tbl.c、

    fs_div28.asm。

    在 RAM 中放置库时、仅放置以下提到的.obj 文件、

    fs_div28.obj (.text)

     cpy_tbl.obj (.text:copy_in)

    autoinit.obj (.text:run_cinit)

    exit.obj (.text:exit)

    autoinit.obj (.text:run_Pinit)

    autoinit.obj (.text:_TI_auto_init_template)

    sqrt_F32.obj (.text)

    args_main.obj (.text:_args_main)

    boot28.obj (.text)

    autoinit.obj (.text:run_binit)

    lock.obj (.data:_lock)

    exit.obj (.data)

    autoinit.obj (.text:_TI_auto_init:_TI_auto_init)

    pre_init.obj (.text:_system_pre_init)

    exit.obj (.text:abort)

     _lock.obj (.text:_nop)

    startup.obj (.text:_system_post_cinit)

    为什么会错过其他人、以及如何将所有内容放在一个瞬间?

    谢谢、

    Subha

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

    链接器仅在库中包含程序所需的函数(或数据)时才会引入该文件。  例如考虑...

    [引用 user="subha R"] s_frexpf.c

    该 RTS 源文件定义了函数 frexpf。  您的程序绝不能调用此函数。   

    谢谢、此致、

    乔治