假设例子:mini2440测试nand使用用例 (可以参考韦东山《嵌入式linux应用开发完全手册》
进入main函数之前,将存放在nand中的4K以后的内容拷贝到SDRAM->0x30000000中运行。从需求上看需要将执行段分为两段。
在linux下的LDS文件很容易编写:如下所示
SECTIONS {
firtst 0x00000000 : { head.o init.o nand.o}
second 0x30000000 : AT(4096) { main.o }
}
但是对于不熟悉linux开发环境的同志们,如果想去软件仿真,特别对于GDB调试有点感冒的来说,还是想在XP下进行调试。
为此在Keil中进行链接脚本的编写如下
LR_ROM1 0x00000000 0x10000000 { ; load region size_region
ER_ROM1 0x00000000 0x10000000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
}
RW_RAM1 0x30001000 UNINIT 0x04000000 { ; RW data
.ANY (+RW +ZI)
}
RW_IRAM1 0x40000000 UNINIT 0x00001000 {
.ANY (+RW +ZI)
}
}
LR_ROM2 4096 4096{
SDRAM 0x30000000 {
main.o (*)
}
}
在user选项里面填入
fromelf --bin --output outfile.bin infile.axf
通过Keil编译之后发现生成了两个文件,这样的话,在烧写的时候需要操作两次,
殊不知Keil可以将这两个文件合并为一个文件
将user选项里面的更改为
fromelf --bin --output outfile.bin infile.axf
fromelf --bin --bincombined --bincombined_padding=1,0xff --output outfile.bin infile.axf
这样即可链接成一个文件。其中的padding代表的是填充格式,用什么字节填充未使用的区域。