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.

[参考译文] TMS320F2.8069万:.cinit的来源:__lock和.cinit__unlock

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/618689/tms320f28069-source-of-cinit-__lock-and-cinit__unlock

部件号:TMS320F2.8069万

我目前正在构建一个自定义引导加载程序,它需要完全驻留在扇区A中。为此,我创建了一个只包含引导加载程序代码的CCS项目。 我的目标是集成我所做的任何代码更改,并将我的许多链接程序命令文件重复用于更大的项目。 这个更大 的CCS项目将包含我的自定义引导加载程序代码以及将来可以升级的代码。 与bootloader没有任何关系的代码可以位于B到H的扇区中

这是我的问题:我上面提到的第一个CCS项目(它只有bootloader)现在正在工作。 也就是说,如果我擦除扇区B-H,它仍然能够在关闭电源后再打开,尝试将代码加载到扇区B-H。 此外,我可以从内存映射和内存分配视图中看到,B到H区中没有任何内容 但是,在内存映射中,我确实注意到以下内容:

.cinit 0003f42af 0万c

003f42af 0.0005万 <whet-program>(.cinit:__lock)

003f42b400000005 <whet-program>(.cinit:__unlock)

003f42b900000002 --孔--[填充=0


这是有意义的,因为在链接程序命令文件中,我有以下行:

.cinit :> flash_a_boot,page =0

顾名思义,它将所有的.cinit存储在闪存扇区A中。但是,在我的较大项目中,这将需要引用B - H扇区。 这是因为随着全局变量的变化,将需要覆盖这些较旧的变量。 因此,在较大的项目中,我需要这样一条线:

.cinit :> FLASH_BCDEFGH,page =0

在这个较大的项目中,我需要指定一个将所有bootloader .cinit放入扇区A的部分(以便在bootloader执行时不会将其擦除)。 但是,我无法找到导致内存映射列出<整个程序>(.cinit:__lock)和<整个程序>(.cinit:__unlock)的全局变量。 我尝试了以下操作,但它不起作用:



如您所见,链接器找不到与以黄色突出显示的目标文件相关联的任何.cinits。 是否有人知道如何查找<整个程序>(.cinit:__lock)和<整个程序>(.cinit:__unlock)的来源? 很抱歉发布了很长的帖子。


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

    每个人

    我发现这可能与优化有关。

    在Properties (属性)-> Build (构建)-> C2000 Compiler (C2000编译器)-> Optimization (优化)下,我将Optimization level (优化级别)从"4- Whole Program Optimizations (4 -整个程序优化)"更改为"Off (关)"。 当我执行此操作并重建项目时, .cinit:__lock和.cinit:__unlock不再出现在我的内存映射中。

    不过,正如我刚才所说,我想把这作为一个更大的CCS项目的一部分。 因此,是否可能只对CCS项目的某些部分进行优化? 意思是,编译器是否有命令/设置,告诉它在执行优化时忽略某些文件? 在我的情况下,这些文件将是与bootloader对应的文件。

    欢迎提出任何建议。

    Syed

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这在回顾时是显而易见的,但如果您右键单击各个文件,则可以转到“属性”->“构建”->“C2000编译器”->“优化”,然后在那里更改优化级别。 然后,它将不会包含在优化级别中。

    如果任何人需要更多信息,请参见“TMS320C28x优化C/C++编译器”的第3章。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Syed,

    感谢您发布问题的解决方案。