ld:从main.text部分中排除库,然后将其移到另一个部分



我正试图将库移动到闪存中的指定部分。

我这样做如下:

.text.freertos : ALIGN(0x1000) 
{
FILL(0xdead)
*libfreertos_lib.a:*(.text*)
} >PROGRAM_FLASH 

当我把这个放在我的主要部分之后时,它什么都没有得到。该部分仍然是空的,我认为这是因为链接器足够聪明,可以意识到它已经将这个库作为主部分的一部分,并且没有浪费内存的意义。

不过,我真的更希望在main.text部分之后有一堆库。是否还有一种方法可以在main.text部分排除库?我正在寻找类似的东西

EXCLUDE_<something>(*libfreertos_lib.a:*(.text*))

我知道EXCLUDE_FILE存在,但我不想列出属于某个库的所有.o文件

最终在flash中将该部分推到一个单独的部分。

MEMORY
{
/* Define each memory region */
PROGRAM_FLASH (rx) : ORIGIN = 0x60000000, LENGTH = 0xC0000 
LIBRARY_FLASH (rx) : ORIGIN = 0x600C0000, LENGTH = 0x10000
SRAM_DTC (rwx) : ORIGIN = 0x20000000, LENGTH = 0x10000 
SRAM_ITC (rwx) : ORIGIN = 0x0, LENGTH = 0x10000
}
.freertos : ALIGN(4) 
{
FILL(0xdd)
*libfreertos_lib.a:*(.text*)
} >LIBRARY_FLASH

相关内容

最新更新