X-013-UBOOT-使能autoboot功能

作者:wowo 发布于:2016-10-5 21:51 分类:X Project

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 1

uimage-load:
    sudo $(DFU_DIR)/dfu $(BOARD_NAME) $(FIT_UIMAGE_BASE) $(UIMAGE_ITB_FILE) 0

uboot-run:
    sudo $(DFU_DIR)/dfu $(BOARD_NAME) $(UBOOT_BASE) $(OUT_DIR)/u-boot/u-boot-dtb.bin 1

kernel-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

[2] README.bubblegum96

 

原创文章,转发请注明出处。蜗窝科技,www.wowotech.net

标签: boot u-boot bootm autoboot

评论:

kipade
2016-11-22 21:53
我用2010版的很老的uboot,它的boot_delay无非就是自启动之前,给时间通过按键进入命令行,否则,就开始执行定义好的命令组合或者是解析并执行脚本。你这用的哪个版本的哦?
wowo
2016-11-23 08:56
@kipade:我用的版本是从uboot主分支拉过来的一个版本,可参考:https://github.com/wowotechX/u-boot
kipade
2016-11-23 09:07
@wowo:没去了解过现在的版本,我的老版本感觉挺顺手了(2010.06),大概是你没选好分支吧
wowo
2016-11-23 09:36
@kipade:不明白你的意思,我没有说不顺手啊,哈哈~~
kipade
2016-11-23 11:27
@wowo:哦,我只是说,我用的这个版本,没有这么麻烦^_^
如此而已
wowo
2016-11-23 11:29
@kipade:我明白了,呵呵:-)

发表评论:

Copyright @ 2013-2015 蜗窝科技 All rights reserved. Powered by emlog