03 uboot命令的实现和内核启动

uboot命令的实现

先分一下,uboot如何解析我们输进去的命令,其中argv[x]就是用来保存每一条指令,uboot支持多条命令一起输入,用分号;隔开

/* Extract arguments */
		if ((argc = parse_line (finaltoken, argv)) == 0) {
   
			rc = -1;	/* no command at all */
			continue;
		}

然后是在表中查找是否有输入的命令,后续还要做一些命令合格性的检查

/* Look up command in command table */
		if ((cmdtp = find_cmd(argv[0])) == NULL) {
   
			printf ("Unknown command '%s' - try 'help'\n", argv[0]);
			rc = -1;	/* give up after bad command */
			continue;
		}

		/* found - check max args */
		if (argc > cmdtp->maxargs) {
   
			printf ("Usage:\n%s\n", cmdtp->usage);
			rc = -1;
			continue;
		}

其中有个结构体需要注意,每个命令,都有一个名字,还有对应的参数,以及执行命令的函数,这些都被打包放在一起结构体变量中

struct cmd_tbl_s {
   
	char		*name;		/* Command Name			*/
	int		maxargs;	/* maximum number of arguments	*/
	int		repeatable;	/* autorepeat allowed?		*/
					/* Implementation function	*/
	int		(*cmd)(struct cmd_tbl_s *, int, int, char *[]);
	char		*usage;		/* Usage message	(short)	*/
#ifdef	CFG_LONGHELP
	char		*help;		/* Help  message	
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值