Linux内核移植 part3:Exynos4412内核编译

2019-07-13 07:45发布

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