嵌入式linux内核启动地址有些疑问?
我的开发板是ixp425芯片,flash 16MB,sdram 128MB
kernel/arch/arm/Makefile中的TEXTADDR定义为:
ifeq ($(CONFIG_CPU_32),y)
PROCESSOR = armv
TEXTADDR = 0xc0000000
LDSCRIPT = arch/arm/vmlinux-armv.lds.in
endif
kernel/arch/arm/boot/Makefile中定义的内核地址为:
ifeq ($(CONFIG_ARCH_IXP425),y)
ZTEXTADDR = 0x1d600000
ZRELADDR = 0x00008000
PARAMS_PHYS = 0x00002000
endif
我每次启动时,内核zImage放在0x11600000处,ramdisk放在0x10800000处启动,但是一直没有明白,这两个地址是怎么算出来的,换一个别的地址可以正常运行吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
帮顶
求高人指点一二
自己再顶,高手告知一二
这个地址好像是在mtd\maps下的相应的flash驱动中指定的,这个地址可以改,但好像还要对blkmem.c中也要作些修改,比较麻烦.
我不知道我的理解对不对
对于你的ixp425,你的内核解压缩程序放在物理地址ZTEXTADDR = 0x1d600000 处,然后这个解压缩小程序把你放在物理地址0x11600000处的zImage解压缩到物理地址ZRELADDR = 0x00008000处,也就是虚拟地址TEXTADDR = 0xc0000000处,你的ramdisk放在物理地址0x10800000处,而param_struct结构或者tag list当然在物理地址PARAMS_PHYS= 0x00002000处