U-boot中的倒计时可中断操作

在启动u-boot后,启动内核前会有个倒计时,在倒计时到时后,u-boot就是自动加载内核到内存,进去启动内核;但是在倒计时到之前通过(键盘输入)串口终端输入可以终止记时操作,进入u-boot命令行状态。

今天在阅读TI OMAP平台 的在u-boot中的充电管理代码后再次发现使用了“倒计时可中断”操作,于是摘取了实现这种“倒计时可中断”的实现代码。方便日后移植使用。

void time_record(int time)
{
	int abort = 0;
	int chargedelay = time;

	printf("Hit any key to stop : %2d ", chargedelay);

	if (tstc()) {	/* we got a key press	*/
		(void) getc();  /* consume input	*/
	}

	while ((chargedelay > 0) && (!abort)) {
		int i;

		--chargedelay;
		/* delay 100 * 10ms */
		for (i=0; !abort && i<100; ++i) {
			if (tstc()) {	/* we got a key press	*/
				abort  = 1;	/* don't auto boot	*/
				chargedelay = 0;	/* no more delay	*/
				(void) getc();  /* consume input	*/
				break;
			}
			udelay (10000);
		}
		printf ("\b\b\b%2d ", chargedelay);
	}
	if (!abort)
	{
		/*倒计时被中断,在下面执行相应操作*/
	}
	else
	{
		/*倒计时到时,在下面执行相应操作*/
	}
}

参数time单位为秒。

tstc():是标准u-boot控制台函数,用于判断是否有输入。

getc():是标准u-boot控制台函数,用于读取输入。

printf("\b\b\b%2d ",chargedelay):是格式化控制台显示chargedelay,即删除chargedelay原显示,重新显示,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值