|
本帖最后由 zyp000 于 2012-4-8 22:58 编辑
初学ARM,请教一下scatter文件。
先求教下加载时域和运行时域。
我的理解如下,不知道对否?
加载时域:就是代码段实际存储的物理位置。所以一个域只能有一个加载地址。
运行时域:代码段认为自己所运行的位置。 一个域内不同的段对应不同的运行地址,所以一个域可以有多个运行地址。
再请问下:
LR_ROM1 0x00000000 0x00100000 { ; load region size_region
ER_ROM1 0x00000000 0x00100000 { ; load address = execution address
*.o(RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
}
RW_RAM1 0x30000000 0x04000000 { ; RW data
main.o(+RO)
.ANY (+RW +ZI)
}
RW_IRAM 0x40000000 0x1000 {
.ANY (+RW +ZI)
}
}
1. *.o(RESET, +First) ;我的源代码只有S3C2440.s和main.c,当把这行改为S3C2440.o(RESET, +First),链接失败,请教下是为什么?
2. *(InRoot$$Sections) ;这行所代表的意思是什么呢?
3. main.o(+RO) ;main是个流水灯程序,加上这行后程序是在SDRAM里面跑的,但是我程序里并没有从Flash搬运代码到SDRAM中的操作,想请问下,是在连接时自动生成这些代码么?
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|