关于armlinux或者uclinux的启动地址的问题?
以下来自“源码开放的嵌入式系统软件分析与实践”原文,对此不甚理解:
内核链接脚本文件vmlinux.lds定义各个模块的装载地址。内核的下载一般通过板子上的bootloader来完成,默认下载地址在0xc0008000处,下载地址可以通过修改arch/arm/Makefile文件的TEXTADDR来设置。TEXTADDR的值在make时传递给arch/arm/vmlinux.lds。在链接时,arm-linux ld将使用vmlinux.lds来定位内核的起始地址。
我们知道,任何二进制文件的装载都是通过装载工具来设置的啊?其装载地址也是自己设定的啊?比如ADS将系统的SDRAM映射到起始地址为0x0处,并将image.ram载入从0x8000开始的SDRAM中,加载后修改pc指针寄存器的值为0x8000并执行(出自“arm应用系统开发详解”)。
再说,假如我的开发板并没有映射那个地址(我映射到其他的地址上去了),vmlinux.lds又如何能确定内核的起始地址呢?怎么能通过这个文件来设置内核的起始地址呢?
一头雾水,望同仁们指定,不甚感激!!