class="markdown_views prism-github-gist">
为了在exynos 4412平台上运行系统,选择了linux来测试,因为只是用来测试的,所以并没有完整功能的移植,只要能启动就可以了。兼顾方便和先进性,选择了4.1这个长期支持版本。从清华的源上下载速度比较快。
因为选择的是uboot启动,执行
$ make exynos_defconfig
$ make uImage
注:如果找不到mkimage工具,在uboot根目录tools目录下有,放到/usr/local/bin
即可。
编译的时候竟然报错了
multiple (or no) load addresses:
This is incompatible with uImages
Specify LOADADDR on the commandline to build an uImage
这个log是在
arch/arm/boot/Makefile
中打印的。相关代码如下
check_for_multiple_loadaddr =
if [ $(words $(UIMAGE_LOADADDR)) -ne 1 ]; then
echo 'multiple (or no) load addresses: $(UIMAGE_LOADADDR)';
echo 'This is incompatible with uImages';
echo 'Specify LOADADDR on the commandline to build an uImage';
false;
fi
而UIMAGE_LOADADDR的定义则为
ifneq ($(LOADADDR),)
UIMAGE_LOADADDR=$(LOADADDR)
else
ifeq ($(CONFIG_ZBOOT_ROM),y)
UIMAGE_LOADADDR=$(CONFIG_ZBOOT_ROM_TEXT)
else
UIMAGE_LOADADDR=$(ZRELADDR)
endif
endif
经过一系列的检查,发现LOADADDR为空,而ZRELADDR又是和MACHINE变量有关,在exynos_defconfig后会选择MULTIPLATFORM,使得MACHINE为空。现在直接在这个Makefile中添加了
LOADADDR := 0x40007000