X-013-UBOOT-使能autoboot功能
1. 前言
通过“X-012-KERNEL-serial early console的移植”,早期的串口控制台已经ready,kernel的printk可以正确输出,“X Project”由此进入“文明”时代。基于此,后续的开发工作将会focus在linux kernel上,而u-boot,可以蜕化为其原始目标:boot kernel。
在之前的测试和调试过程中,都是先进入u-boot的命令行,手动输入bootm命令,boot linux kernel。为了简化这个动作,有必要将u-boot的autoboot功能用起来。
所谓的autoboot,是指u-boot run起来之后,自动加载并执行linux kernel image的 过程。该功能非常简单,之所以写一篇文章,权当“X Project”开发过程的一个记录。
2. 使能autoboot
2.1 u-boot autoboot功能简介
u-boot autoboot功能的具体介绍可参考“README.autoboot[1]”,总结来说:
1)通过CONFIG_BOOTDELAY配置是否使用autoboot功能,是否在autoboot之前等待一段时间以便让用户输入从而进入命令行:
Delay before automatically booting the default image;
set to -1 to disable autoboot.
set to -2 to autoboot with no delay and not check for abort (even when CONFIG_ZERO_BOOTDELAY_CHECK is defined).
2)通过CONFIG_BOOTCOMMAND配置boot kernel所使用的命令。
3)通过CONFIG_BOOTARGS配置命令行参数。
4)其它等等。
2.2 基于bubblegum-96配置并使能autoboot
以“X Project”目前的情况来说,我们暂时只使用CONFIG_BOOTDELAY和CONFIG_BOOTCOMMAND两个即可,如下:
/* include/configs/bubblegum.h */
#define CONFIG_BOOTDELAY -2
#define CONFIG_BOOTCOMMAND “bootm 0x6400000”
其中CONFIG_BOOTDELAY为-2,表示不需要任何delay;CONFIG_BOOTCOMMAND即为我们在u-boot命令行敲入的用于boot kernel的指令。
注1:由于当前bubblegum-96的u-boot没有移植timer驱动,CONFIG_BOOTDELAY为正值的时候无法正确使用(没有计时,也就没有timeout了)。
2.3 简单的测试
为了方便测试,我在build makefile中添加了几个辅助命令,如下:
some help commands
spl-run:
sudo $(DFU_DIR)/dfu $(BOARD_NAME) $(SPL_BASE) $(TOOLS_DIR)/$(BOARD_VENDOR)/splboot.bin 1uimage-load:
sudo $(DFU_DIR)/dfu $(BOARD_NAME) $(FIT_UIMAGE_BASE) $(UIMAGE_ITB_FILE) 0uboot-run:
sudo $(DFU_DIR)/dfu $(BOARD_NAME) $(UBOOT_BASE) $(OUT_DIR)/u-boot/u-boot-dtb.bin 1kernel-run: uimage-load uboot-run
按住ADFU键开机,执行make spl-run初始化DDR,然后执行make kernel-run,就可以直接启东到linux kernel了。具体可参考”README.bubblegum96[2]”。
以上改动可参考如下patch:
https://github.com/wowotechX/u-boot/commit/59553f4c7583c002e9eb5e2ac7402a25699d51c6
3. 参考文档
[1] README.autoboot
原创文章,转发请注明出处。蜗窝科技,www.wowotech.net。
继续讨论
新讨论请用 GitHub 账号在下方发言——评论会保存在本仓库的 Discussions 里,与站点同寿; 再下方的「历史评论」是原站的只读存档。
评论(6 条,只读存档)
以下为原站的历史评论(只读存档);继续讨论请用上方的评论区。

kipade
wowo
kipade
wowo
kipade
wowo