位置无关和位置相关
SECTIONS {
}
对应启动源码:
ldr
mov
mov
bl
2、
SECTIONS {
}
ldr
mov
mov
bl
总结:S3C2440启动时硬件会强制的把nand flash中前4K的内容复制到2440片内的RAM中执行,这4K的代码的任务是初始化nand flash、SDRAM,然后把全部的代码从nand flash中拷贝到SDRAM中,再跳到SDRAM中执行。
1、1中head.o init.o nand.o三个文件的链接地址是:0x00000000 即片内内存(RAM),当硬件把前4K内容拷贝到2440片内的RAM中时head.o init.o nand.o三文件就在片内执行,实际运行的地址和运行时应该在的地址相同,故这三段代码中可以使用位置相关码,即可以使用全局变量,当初始化nand flash、SDRAM完成后只是拷贝了源地址=4096的main.o段;
2、中head.o init.o nand.o三个文件的链接地址是:0x30000000,即片外SDRAM,说明head.o(.text) 、init.o(.text) 、nand.o *(.text)这三段代码运行时应该在0x30000000地址,但是S3C2440启动时硬件会强制的把nand flash中前4K的内容复制到2440片内的RAM中执行时它们处于0x00000000 的地址,故只能使用位置无关码,即不可以使用全局变量,当初始化nand flash、SDRAM完成后程序拷贝了全部的代码,拷贝过去以后head.o(.text) 、init.o(.text) 、nand.o *(.text)三文件才位于该在的地址:0x30000000。
位置无关位置相 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)