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.
我目前正在构建一个自定义引导加载程序,它需要完全驻留在扇区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