作为您的帮助助手,我将为您翻译以下内容:
你问:“这个配置文件是否负责设置uImage的入口和加载地址?”
是的,make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage
这个命令负责加载入口点。
如何操作?
在内核源代码中打开vi scripts/mkuboot.sh
。
在这里检查MKIMAGE=$(type -path "${CROSS_COMPILE}mkimage")
。
脚本将负责调用scripts/Makefile.lib.
。
在此处的代码中:
MKIMAGE := $(srctree)/scripts/mkuboot.sh
UIMAGE_ARCH ?= $(SRCARCH)
UIMAGE_COMPRESSION ?= $(if $(2),$(2),none)
UIMAGE_OPTS-y ?=
UIMAGE_TYPE ?= kernel
UIMAGE_LOADADDR ?= arch_must_set_this
UIMAGE_ENTRYADDR ?= $(UIMAGE_LOADADDR)
UIMAGE_NAME ?= 'Linux-$(KERNELRELEASE)'
UIMAGE_IN ?= $<
UIMAGE_OUT ?= $@
如果用户在命令行中没有提到LOADADDR,地址将从以下位置获取
UIMAGE_LOADADDR ?= arch_must_set_this
ifneq ($(LOADADDR),)
UIMAGE_LOADADDR=$(LOADADDR)
else
ifeq ($(CONFIG_ZBOOT_ROM),y)
UIMAGE_LOADADDR=$(CONFIG_ZBOOT_ROM_TEXT)
else
UIMAGE_LOADADDR=$(ZRELADDR)
endif
endif
UIMAGE_LOADADDR=$(ZRELADDR)
--> 这个变量负责加载入口地址
值 $(ZRELADDR) 是从特定于板子的变量中获取的,在我们的情况下是 versatile。
arch/arm/mach-versatile/Makefile.boot
这里。
zreladdr-y += 0x00008000
params_phys-y := 0x00000100
initrd_phys-y := 0x00800000
这是在执行
make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage
命令时,内核脚本自动化的方式。