1. 程序由 段(SECTIONS)和堆栈(STACK)组成,而段(SECTIONS)包括四个部分,分别为:代码段(.text)、数据段(.data)以及bss段(.bss)
1.1 代码段(.text):存放要执行的程序指令
1.2 数据段(.data):存放已初始化的全局变量
1.3 bss段(.bss) :存放未初始化的全局变量
1.4 栈 :存放局部变量
1.5 堆 :存放malloc申请的空间
2. 设置起始地址 . = 0x30008000 /* 2440内存中的起始执行地址为0x30000000 */
/* 但有32k用来保存TTB,真实执行起始地址未0x30008000 */
3. 对齐设置 . = ALIGN(4) /* 2440为32bit,要对.text, .data, .bss设置四字节对齐 */
4. 使用变量 bss_start = . /* 用来设置当前地址存放在一个变量中 */
bss_end = .
/* 以下为链接器脚本范例代码,<tab>为table键 */
SECTIONS
{
<tab>. = 0x30008000
<tab>. = ALIGN(4);
<tab>.text :
<tab>{
<tab>start.o(.text)
<tab>*(.text)
<tab>}
<tab>. = ALIGN(4);
<tab>.data :
<tab>{
<tab>*(.data)
<tab>}
<tab>. = ALIGN(4);
<tab>.bss_start = .;
<tab>.bss :
<tab>{
<tab>*(.bss)
<tab>}
<tab>bss_end = .;
}