SECTIONS基本的命令语法
SECTIONS
{
...
secname start BLOCK(align) (NOLOAD) : AT ( ldadr )
{
contents
} >region :phdr =fill
...
}
- 这么多参数中,只有secname 和 contents 是必须的
- start :表示将某个段强制链接到的地址(放到哪里去运行)。
- AT(addr):实现存放地址和加载地址不一致的功能,AT表示在文件中存放的位置(下载时的存放位置),而在内存里呢,按照普通方式存储。
- region:这个region就是前面说的MEMORY命令定义的位置信息。
例如:
SECTIONS {
firtst 0x00000000 : { head.o init.o } //第一段为head.o init.o
second 0xB0004000 : AT(2048) { leds.o } //第二段leds.o放到2048位置处,链接到0xB0004000处运行
}
. = 0x00000000;/*;从0x0位置开始*/
. = ALIGN(4);/*代码以4字节对齐*/
.text :
{
cpu/arm920t/start.o (.text)
/*代码的第一个代码部分*/
*(.text)
/*下面依次为各个text段函数*/
}