我正在使用GNU GCC链接器。我的目标是填充未使用的闪存空间,这样我将始终获得相同大小的二进制输出以进行CRC计算。在链接器脚本中,我创建了附加部分
.fill_flash :
{
flashUsed = .;
FILL(0xDEADC0DE);
. = flashUsed + LENGTH(BOOTLOADER) - SIZEOF(.isr_vector) - SIZEOF(.text) - SIZEOF(.ARM.extab) - SIZEOF(.ARM) - SIZEOF(.preinit_array) - SIZEOF(.init_array) - SIZEOF(.fini_array) - SIZEOF(.data) - SIZEOF(.ccmram);
KEEP(*(.fill_flash))
} AT >BOOTLOADER
我可以在转储文件中看到它并且它具有适当的大小,因此将其添加到使用过的Flash中会填充MCU内存的整个空间。但是,在二进制输出中没有我的部分。如何强制链接器保留并加载到BOOTLOADER区域?
答案 0 :(得分:1)
解决方案很简单,需要添加额外的BYTE()命令,因此链接器的输出中将包含该部分的任何内容:
BYTE(0x00)