2020-06-10:
uboot移植空余时间再搞,先搞定需要用的驱动
语法笔记:
1.Kconfig:
imply
1.u-boot.cfg
依赖关系: u-boot.cfg <- include/config.h/
rk3399uboot移植过程中,查看.config中CONFIG_SYS_SOC/BOARD/VENDOR的值和原sdk中并不相同,则在此之前步骤有误。
寻找关于这几个宏定义的位置,在u-boot.cfg中有对应的#define,对比新旧uboot文件夹中两个文件中的值可以确认.config文件中的相关变量差异与此有关,使用make -n 参数并将输出写入log,查找到有关的操作为:
make -f ./scripts/Makefile.autoconf u-boot.cfg
查看Makefile.autoconf文件,找到生成依赖为:
u-boot.cfg: include/config.h FORCE
$(call cmd,u_boot_cfg)
查找config.h,追溯到根目录makefile,根据主Makefile进行梳理:
all: $(ALL-y) cfg
cfg: u-boot.cfg
u-boot.cfg spl/u-boot.cfg tpl/u-boot.cfg: include/config.h #多个u-boot.cfg目标均依赖于这个config.h
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.autoconf $(@) #这里知道u-boot.cfg的生成方法
...
2.firefly-linux_sdk配置过程
firefly的linux sdk封装了各类操作的执行脚本,其中uboot编译过程的对应关系为:
${LINUX_SDK_DIR}/u-boot/make.sh:
prepare #完成make ${RK_UBOOT_DEFCONFIG}_defconfig的配置,其中宏定义在device/rockchip/rk3399/${BOARD}.mk中定义
...
make CROSS_COMPILE=${TOOLCHAIN_GCC} all --jobs=${JOB} ${OUTOPT} #完成make编译
...
make xxx_defconfig的生成规则:
%config: scripts_basic outputmakefile FORCE
$(Q)$(MAKE) $(build)=scripts/kconfig $@
# Basic helpers built in scripts/
scripts_basic:
$(Q)$(MAKE) $(build)=scripts/basic
$(Q)rm -f .tmp_quiet_recordmcount
# outputmakefile generates a Makefile in the output directory, if using a
# separate output directory. This allows convenient use of make in the
# output directory.
outputmakefile:
ifneq ($(KBUILD_SRC),)
$(Q)ln -fsn $(srctree) source
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/mkmakefile \
$(srctree) $(objtree) $(VERSION) $(PATCHLEVEL)
endif
3.移植关注的主要位置
arch/arm/mach-rockchip/rk3399/Kconfig: #SOC相关
board/rockchip/evb_rk3399/Kconfig #开发板相关
configs/firefly-rk3399_defconfig #定制化配置
4.u-boot-2020-04增加2017-09的相关指令:
|CMD_LOAD_ANDROID: defconfig, cmd/Kconfig,
|_依赖-ANDROID_BOOT_IMG: common/Kconfig, ./Kconfig
|_依赖-FASTBOOT:cmd/Kconfig:source "cmd/fastboot/Kconfig"
5.uboot-2020-04使用uboot-2017-09env参数启动,提示错误信息为:
无法识别boot_android和bootrkp命令,在uboot mainline代码中没有这个两个关键字,firefly的sdk中有,因此需要移植这两个命令.
boot_android->
do_boot_android->
android_bootloader_boot_flow->
android_bootloader_boot_kernel
以此看来移植的重点便是将boot_andoird的一系列驱动移植到新版本中;
6.