1. 启动脚本的入口:
根据Bootloader的printenv输出分析下来,最终运行的命令是环境变量boot_a_script的内容,如下:
load ${devtype} ${devnum}:${distro_bootpart} ${scriptaddr} ${prefix}${script};
source ${scriptaddr}
根据分析,展开之后是:
load mmc 0:1 0x4FC00000 /boot/boot.scr #表示从mmc0的第1个分区读取启动脚本boot.scr。
source 0x4FC00000
这样,就相当于在uboot内执行/boot/boot.scr这个脚本了。这个脚本根据用户需求采用mkimage工具生成。
2. overlays参数的分析
以overlays=i2c3为例。
在/boot/boot.scr内会读取这个配置,然后依次应用这里面涉及到的dtbo文件,以达到动态开关设备树中的设备的功能,比如这里就会应用sun50i-h616-i2c3.dtbo,文件目录为/boot/dtb/allwinner/overlay。