红联Linux门户
Linux帮助

vivi学习笔记(命令及linux加载)

发布时间:2007-12-14 00:02:37来源:红联作者:distribut
vivi命令:
vivi每一个命令都是一个结构体变量:
typedef struct user_command {
const char *name;
void (*cmdfunc)(int argc, const char **);
struct user_command *next_cmd;
const char *helpstr;
} user_command_t
例如:boot命令
user_command_t boot_cmd = {
"boot",
command_boot,
NULL,
"boot [{cmds}] \t\t\t-- Booting linux kernel"
}
vivi的main函数通过调用misc()及init_buildin_cmds()将许多命令结构体形成一个链表,以全局变量head_cmd为头节点。执行命令时,首先通过函数parseargs()解析输入的命令,然后调用execcmd()查找相应的函数void (*cmdfunc)(int argc, const char **)调用。

linux加载:
调用exec_string("boot"),找到command_boot函数后执行,找到mtd_partition_t *kernel_part后,调用boot_kernel()完成kernel的拷贝和启动参数struct param_struct *params = (struct param_struct *)param_base的设置。再调用call_linux(),通过mov pc, r2完成跳转。
文章评论

共有 0 条评论