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/MSP430F67691:未定义的引用

Guru**** 2686475 points

Other Parts Discussed in Thread: MSP430F67691

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/673198/ccs-msp430f67691-undefined-references

器件型号:MSP430F67691

工具/软件:Code Composer Studio

大家好、

我有一位客户正在使用 MSP430F67691并遇到构建问题。  它们目前正在使用 CCS 7.4.0.00015。 请参阅以下说明、并提前感谢您的帮助:

"涉及多个 CCS 项目、但问题的本质出现在一个项目中。  它构建可重定位的输出模块。  此项目中没有 main()。  当我查看由链接器生成的.map 文件时、存在未定义的引用。  当.lib 文件在“final”项目中链接时,大多数问题都会得到解决,但有些问题(MPUCTL0、MPUSAM、MPUSEG 等)没有解决。  未解析的引用是对 MSP430FR 器件中的寄存器的引用。  当然,我使用的部件没有这些寄存器。  我不知道构建过程为什么会引用这些不存在的寄存器。”

再次感谢您的帮助和努力。

最棒的

Jerry

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Jerry、
    一些更详细的信息会有所帮助、例如构建控制台中的完整构建输出。 此外、可重现的测试案例将非常有用

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

    您好 Ki、

    感谢您的回答。  客户跟进:

    我在两个项目构建中都包含 rts430x_lc_rd_eabi.lib。  我希望运行时数学函数位于两者创建的库中。  在“失败”的项目中,.map 文件具有

    0000c000   0000001a    rts430x_lc_rd_eabi.lib:boot.c.obj (.text:_isr:_c_int00)

    相比之下,“Good”项目的.map 文件具有

    0000001c    rts430x_lc_rd_eabi.lib:boot.c.obj (.text:_isr:_c_int00_noargs)

    我不确定这种机制,但“noargs”部分至关重要,因为 boot.c 生成的代码不包括对 MPU 的引用。  如果没有“noargs”,boot.c 中的代码包括__mpu_init(),它会创建对不存在的寄存器的引用。  

    构建过程如何知道如何使用_c_int00_noargs 条目?  “Good”项目有一个函数 main(),而“bad”项目没有 main()。  

    希望这对您有所帮助、如果需要其他信息、请告知我。

    谢谢、祝您一切顺利、

    Jerry

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢。
    我将提请编译器专家注意此主题以进行更多分析。

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

    [引用用户="Jerry%20Lean)]问题的本质出现在一个项目中。  它构建可重定位的输出模块。  此项目中没有 main()。[/quot]

    此项目解决了什么问题?  为什么不构建静态库而不是可重定位的模块?

    谢谢、此致、

    乔治

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

    尊敬的乔治:

    感谢您的反馈。 我将信息转发给了我们的客户。 同时、我们的客户还使用编译器 TI 16.9.6.LTS 提供了映射文件的尾端

     

    00003176 _system_post_cinit                         

    开发计划署                                        

    联合国开发计划署                                       

    UNDEFED  OP2_32X                                    

    资源管理  16.                                      

    资源管理  64                                      

    UNDEFED  SD24BMEM0_8                                

    undefED_SAFETY_DATA_END                             

    undefED_SAFETY_DATA_START                           

    UNDEFED  __STACK_END                                

    UNDEFED  __STACK_START                              

    UNDEFED  __TI_BINIT_Base                            

    UNDEFED  __TI_BINIT_LIMIT                           

    UNDEFED  __TI_CINIT_Base                            

    UNDEFED  __TI_CINIT_LIMIT                           

    UNDEFED  __TI_Handler_Table_Base                    

    UNDEFED  __TI_Handler_Table_Limit                   

    UNDEFED  __TI_INITAMRAY_Base                        

    UNDEFED  __TI_INITAMRAY_LIMIT                       

    UNDEFED  __TI_pprof_out_hndl                        

    undefed  __c_args__                                 

    UNDEFED  信息 D_DATA                                 

    UNDEF  主代码                                       

    UNDEFED  MDU_CRC_TABLE                              

    UNDEFED  Scaled_cable_阻力_U16                

     

    使用 TI 18.1.0.LTS 时、会突出显示有问题的符号。

     

    00003188 _system_post_cinit                         

    UNDEFED  MPUCTL0                                    

    UNDEFED  MPUCTL0_H                                  

    开发计划署                                       

    开发计划署                                       

    开发计划署                                        

    联合国开发计划署                                       

    UNDEFED  OP2_32X                                    

    资源管理  16.                                      

    资源管理  64                                      

    UNDEFED  SD24BMEM0_8                                

    undefED_SAFETY_DATA_END                             

    undefED_SAFETY_DATA_START                           

    UNDEFED  __STACK_END                                

    UNDEFED  __STACK_START                              

    UNDEFED  __TI_BINIT_Base                            

    UNDEFED  __TI_BINIT_LIMIT                           

    UNDEFED  __TI_CINIT_Base                            

    UNDEFED  __TI_CINIT_LIMIT                           

    UNDEFED  __TI_Handler_Table_Base                    

    UNDEFED  __TI_Handler_Table_Limit                   

    UNDEFED  __TI_INITAMRAY_Base                        

    UNDEFED  __TI_INITAMRAY_LIMIT                       

    UNDEFED  __TI_pprof_out_hndl                        

    undefed  __c_args__                                 

    undefed  __mpusam      

    感谢您的帮助和努力、

    Jerry

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

    以下是客户提供的进一步更新:

    有一些异常的要求导致我构建了一个可重定位的模块。 部分应用是安全关键型应用、并受 UL1998要求的约束。 其余的不是。 安全关键型器件具有一个单独的 CRC、UL 使用该 CRC 来审核该代码。 如果 CRC 发生变化、我们必须重新提交给 UL。 我们将安全代码与非安全代码分开、以便我们可以更改非安全代码、而不会导致安全代码的 CRC 发生变化。

    如果我创建安全代码的静态库、它将不包含安全代码中使用的运行时数学例程等内容。 这些最终会在最后的链接步骤中链接、但我无法控制它们将放置在何处(实际上我可以、但这需要在链接器脚本中显式枚举它们、这是不切实际的)。 对非安全代码的后续更改可能会导致数学例程链接到其他位置。 然后、这会导致安全代码的二进制文件发生变化;它对数学例程的引用会发生变化。

    为了解决这一问题、我创建了一个包含运行时库的可重定位模块、或者至少安全代码实际使用的这一部分。 最后一个链接步骤将安全代码作为单元放置在固定位置。

    如果您可能知道更好的方法、请告知我们。

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

    [引用 USER="Jerry%20Lean"]我们将安全代码与非安全代码分开,这样我们就可以更改非安全代码而不会导致安全代码的 CRC 发生更改。

    这是我第一次听说有人为此使用可重定位模块。  对我来说、这就提出了一个问题:其他人如何处理系统的一部分获得 UL1998认证? 无论这是什么、或许值得考虑。

    [引用 user="Jerry%20Lean"]为解决此问题、我创建了一个可重定位的模块、其中包括运行时库、或者至少是安全代码实际使用的部分库。 [/报价]

    请显示您用于创建此可重定位模块的确切命令。  根据我目前所了解的情况、我不明白为什么该模块 中会有任何启动代码(_c_int00、栈等)。  但确实如此。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    编译器希望这些符号由链接器命令文件或由链接器命令文件包含的命令文件定义。 如果您在打开工程时未使用 CCS 提供的默认链接器命令文件、则需要确保在您自己的链接器命令文件中定义了这些符号。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、

    请参阅下面的命令:

    命令16.9.6

    -vmspx --data_model=restricted --use_hw_mpy=F5 --include_path="C:/ti/ccsv7/ccs_base/msp430/include --include_path="C:/ti/ccsv7/ccs_base/msp430/include /Users/carl/Documents/Designs/AC48/firmware/emeter-toolkit --include_path="C:/ti/ccsv7/tools/compiler/ti-cgt-msp430_16.9.6.LTS/include /Users/carl/Documents/Designs/AC48/firmware/mdu/inc --include_path="C:/Users/carl/Documents/Designs/AC48/firmware/common/inc /Users/carl/Documents/Designs/AC48/firmware/IEC60730/include --include_path="c:atures= 10、4_diagi_offing=12、4_dries=inese-suppension_suppage=10、4_mispruature-dag=12、4_dates=cature-cines=12、4_daturese-cines=14、4_daturese-supers-suppage=cinese-supuatursi-f_off-mag=12、inese-cinese-cinese-dag=14、inese-excines=14、inese-supuatursi-supuatursi-f_ature-cines=10、ines=14、inese-suppage=uatursi-f_atursi-f_atursi-f_at

    -vmspx --data_model=restricted --use_hw_mpy=F5 --advice:power="1、2、3、4、5.3、6、7、8、9、10、11、12、14"--define =MSP430F67691__--define=no_wdt --define =isr_time_sensors-g ---f_off-"---intrabout_exit_isor_exm=-cn=-cn_isor_exit_isor_exit_-cn=-cn=-cn-simplexit_ature=-ine-ine-cn=-cn=-cn_exit_isor_exit_ature=-cn_ature=-cn-cn=-cn=-cn-cn_exit_ature=-cn-cn_isore_display-cn-cn-cn-cn=-cn-silot-cn_off-cn-cn-cn-cn-cn-cn_off-cn-cn-cn-cn-cn-cn-cn-cn_off-cn /ti/ccsv7/ccs_base/msp430/lib/5xx_6xx_FRxx /Users/carl/Documents/Designs/AC48/firmware/emeter-toolkit/Debug /ti/ccsv7/tools/compiler/ti-cgt-msp430_16.9.6.LTS/include /ti/ccsv7/tools/compiler/ti-cgt-msp430_16.9.6.LTS/lib /ti/ccsv7/ccs_base/msp430/include /ti/ccsv7/ccs_base/msp430/include


    命令18.1.0

    -vmspx --data_model=restricted --use_hw_mpy=F5 --include_path="C:/ti/ccsv7/ccs_base/msp430/include --include_path="C:/ti/ccsv7/ccs_base/msp430/include /Users/carl/Documents/Designs/AC48/firmware/emeter-toolkit --include_path="C:/ti/ccsv7/tools/compiler/ti-cgt-msp430_18.1.0.LTS/include /Users/carl/Documents/Designs/AC48/firmware/mdu/inc --include_path="C:/Users/carl/Documents/Designs/AC48/firmware/common/inc /Users/carl/Documents/Designs/AC48/firmware/IEC60730/include --include_path="c:atures= 10、4_diagi_offing=12、4_dries=inese-suppension_suppage=10、4_mispruature-dag=12、4_dates=cature-cines=12、4_daturese-cines=14、4_daturese-supers-suppage=cinese-supuatursi-f_off-mag=12、inese-cinese-cinese-dag=14、inese-excines=14、inese-supuatursi-supuatursi-f_ature-cines=10、ines=14、inese-suppage=uatursi-f_atursi-f_atursi-f_at

    -vmspx --data_model=restricted --use_hw_mpy=F5 --advice:power="1、2、3、4、5.3、6、7、8、9、10、11、12、14"--define =MSP430F67691__--define=no_wdt --define =isr_time_sensors-g ---f_off-"---intrabout_exit_isor_exm=-cn=-cn_isor_exit_isor_exit_-cn=-cn=-cn-simplexit_ature=-ine-ine-cn=-cn=-cn_exit_isor_exit_ature=-cn_ature=-cn-cn=-cn=-cn-cn_exit_ature=-cn-cn_isore_display-cn-cn-cn-cn=-cn-silot-cn_off-cn-cn-cn-cn-cn-cn_off-cn-cn-cn-cn-cn-cn-cn-cn_off-cn /ti/ccsv7/ccs_base/msp430/lib/5xx_6xx_FRxx /Users/carl/Documents/Designs/AC48/firmware/emeter-toolkit/Debug /ti/ccsv7/tools/compiler/ti-cgt-msp430_18.1.0.LTS/include /ti/ccsv7/tools/compiler/ti-cgt-msp430_18.1.0.LTS/lib /ti/ccsv7/ccs_base/msp430/include /ti/ccsv7/ccs_base/msp430/include


    16.9.6工作,18.1.0不工作。 请参阅下面的.map 代码段。

    当我构建可重定位模块时、许多符号未定义。 16.9.6在最后的链接步骤中、所有这些问题都会得到解决。 在18.1.0中,与 FR 内存控制器相关的符号由于不存在而无法解析。

    再次感谢您的帮助和努力。
    最棒的
    Jerry
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Jerry%20Lean"]请参阅下面的.map 代码段。

    出现问题。  我看不到它们。   

    我更希望从可重定位模块的构建中看到整个映射文件。  请将其附加到下一个帖子。  因此论坛将接受它、并将文件扩展名.txt 添加到它。   

    我想查看映射文件、因为当我使用上面显示的选项执行测试构建时、可重定位构建中的任何内容都不会分配给实际存储器地址。  所有内容都位于地址0。   在最终链路上、它会重定位到实际地址。  这与之前关于模块安全认证的说法相反。  这种认证在一定程度上取决于可重定位模块和最终构建中位于同一地址的内容。

    正在切换主题... 我注意到您使用的是编译器版本18.1.0.LTS。  有一个更高版本18.1.0.LTS 可用。  对于我们在这里所做的工作、我认为这两个版本之间没有任何区别。  但是、为了安全起见、如果您升级到版本18.1.0.LTS、这将是理想之选。

    谢谢、此致、

    乔治

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

    请从可重定位模块的构建中提交映射文件。

    谢谢、此致、

    乔治