主题中讨论的其他部件:CC2640, CC2650
我想使用bootloader,并希望避免在flash的最后一页中放置任何内容,而不是.ccfg。 我尝试删除cc26xx_app.cmd中的映射,但.cinit继续放置在那里,尽管只将闪存的其余部分指定为目标(.cinit:> flash)
在何处覆盖此信息,我可以在哪里更正它?
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.
我想使用bootloader,并希望避免在flash的最后一页中放置任何内容,而不是.ccfg。 我尝试删除cc26xx_app.cmd中的映射,但.cinit继续放置在那里,尽管只将闪存的其余部分指定为目标(.cinit:> flash)
在何处覆盖此信息,我可以在哪里更正它?
您好,Jan,
我感谢及时的答复。 推荐的开发人员指南涉及更改我已经引用的.cmd文件,以及使用此项目配置中未使用的边界工具。 我本以为删除了上述.cmd文件中所有与FLASH_LASE_PAGE的连接,只剩下CCFG。
Original (原始):
SECTIONS { .intvecs : > FLASH_APP_BASE .text : >> FLASH | FLASH_LAST_PAGE .const : >> FLASH | FLASH_LAST_PAGE .constdata : >> FLASH | FLASH_LAST_PAGE .rodata : >> FLASH | FLASH_LAST_PAGE .cinit : > FLASH | FLASH_LAST_PAGE .pinit : >> FLASH | FLASH_LAST_PAGE .init_array : >> FLASH | FLASH_LAST_PAGE .emb_text : >> FLASH | FLASH_LAST_PAGE .ccfg : > FLASH_LAST_PAGE (HIGH) GROUP > SRAM { .data .bss .vtable .vtable_ram vtable_ram .sysmem .nonretenvar } LOAD_END(heapStart) .stack : > SRAM (HIGH) LOAD_START(heapEnd) }
已修改:
SECTIONS { .intvecs : > FLASH_APP_BASE .text : >> FLASH .const : >> FLASH .constdata : >> FLASH .rodata : >> FLASH .cinit : > FLASH .pinit : >> FLASH .init_array : >> FLASH .emb_text : >> FLASH .ccfg : > FLASH_LAST_PAGE (HIGH) GROUP > SRAM { .data .bss .vtable .vtable_ram vtable_ram .sysmem .nonretenvar } LOAD_END(heapStart) .stack : > SRAM (HIGH) LOAD_START(heapEnd) }
这就是我用多个引用来指示我要做的事情,但.cinit仍会映射到flash_last_page。
您好,James:
您是否在使用IAR或CCS进行发展? 我询问是因为cmd文件可能看起来有所不同,这取决于所使用的IDE。 这些差异的示例可在用户指南的3.10 4客户配置部分中找到。 如果您有兴趣禁用引导加载程序, 则CC2538/CC26x0/CC26x2串行引导加载程序接口应用报告 可能会有所帮助。
此致,
一月
您好,James:
明白了。 感谢您的澄清。 您应该能够将CCFG标记为受保护。 这是否会实现您所需的功能? 以下E2E线程提供了有关此问题的信息:
如果上述链接不起作用,请告诉我,我将继续与您合作解决此问题。
此致。
一月
您好,Jan,
这些都是指以不同的方式保护/锁定闪存,这些方式都有详细的记录,对我来说非常清楚。 我的问题是,编译器似乎坚持在闪存的最后一个扇区中放置.cinit,这在OTA更新中可能会发生变化。
按目前的情况,如果不擦除该扇区和CCFG数据,我就无法覆盖该数据。
我的问题,改写后的,是如何确保CCFG和*仅* CCFG ----绝对没有其他东西----进入该领域?
我已按上述说明修改了链接程序.cmd文件,但链接程序仍在该扇区中放置.cinit。 为什么?
好的,最后发现了擦除CCFG值将其设置为特定默认值的详细信息,而不是FFh,否则会出现这种情况。
擦除后,bootloader_enable设置为C5h (9.1 .1.13)
擦除后,image_valid_conf设置为FFFFFFh (9.1 .1.18)
这意味着,如果发生重置或电源中断等情况,在重写此扇区之前,将启用引导加载程序,并由于不是零image_valid_conf而加载。
我的理解是否正确?
您好,James:
我曾谘询过一些同事。 您能否验证对CMD文件的以下修改是否会导致预期行为(仅CCFG在最后一页中)?
.intvecs : > FLASH_APP_BASE .text : >> FLASH .const : >> FLASH .constdata : >> FLASH .rodata : >> FLASH .cinit : > FLASH .pinit : >> FLASH .init_array : >> FLASH .emb_text : >> FLASH GROUP > FLASH_LAST_PAGE { .ccfg }
您对image_valid_conf的理解正确。 以下信息可在TRM中找到
此致,
一月
您好,James:
感谢您验证解决方案是否有用。 您是否有机会参考以下资源?
ARM汇编语言工具v 20.2 .0.LTS -特别是链接程序部分。
我相信这些资源可以提供实施所需行为所需的信息。
此致,
一月