UBOOT之main.c分析

本文详细分析了U-Boot的main.c文件,包括设置环境变量ver、初始化uboot_hush、安装命令自动补全功能、设置bootdelay值以及处理启动延迟的流程。通过main.c的代码解析,揭示了U-Boot启动过程中的关键步骤和功能实现。
摘要由CSDN通过智能技术生成
main.c这个文件在common/main.c中定义

/*******设置环境变量ver**************/
#ifdef CONFIG_VERSION_VARIABLE
{
extern char version_string[ ];

setenv ("ver", version_string);       //设置环境变量ver的值
}
#endif 

version_string在lib_arm/board.c中定义:
const char version_string[ ] =
U_BOOT_VERSION" (" U_BOOT_DATE " - " U_BOOT_TIME ")"CONFIG_IDENT_STRING;
数组中的那些都是一些已经定义好的宏

/* ***************初始化uboot_hush******************************/

u_boot_hush_start ();
#if defined(CONFIG_HUSH_INIT_VAR)
hush_init_var ();                                         //初始化hush
#endif

u_boot_hush_start 函数在common/hush.c中定义:
int u_boot_hush_start(void)                         //这个函数其实就是进行一系列的赋值操作
{
if (top_vars == NULL) {
top_vars = malloc(sizeof(struct variables));
top_vars->name = "HUSH_VERSION";
top_vars->value = "0.01";
top_vars->next = 0;
top_vars->flg_export = 0;
top_vars->flg_read_only = 1;
#ifndef CONFIG_RELOC_FIXUP_WORKS        
u_boot_hush_reloc();                     //定义上面那个宏,这个函数不执行
#endif
}
return 0;
}


/*********************命令安装自动补全功能*******************************************************/

#ifdef CONFIG_AUTO_COMPLETE
install_auto_complete();
#endif

install_auto_complete这个函数在common/command.c中定义:
void install_auto_complete(void)
{
install_auto_complete_handler("printenv", var_complete);     //安装自动补全功能,var_complete就是实现自动补全功能的函数
install_auto_complete_handler("setenv", var_complete);        
#if defined(CONFIG_CMD_RUN)
install_auto_complete_handler("run", var_complete);
#endif
}
install_auto_complete_handler这个函数在common/command.c中定义:
static void install_auto_complete_handler(const char *cmd,
int (*complete)(int argc, char *argv[], char last_char, int maxv, char *cmdv[]))
{
cmd_tbl_t *cmdtp;

cm
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值