通过 uboot 的 bootargs添加一个新参数传送给 kernel

 

              通过 uboot 的 bootargs添加一个新参数传送给 kernel

 

一、bootargs是环境变量中的重中之重,甚至可以说整个环境变量都是围绕着bootargs来设置的。bootargs的种类非常非常的多,我们平常只是使用了几种而已。

二、在uboot中设置bootargs环境变量,在kernel启动后cat /proc/cmdline可以看到bootargs的值。

通过 uboot 的 bootargs添加一个新参数传送给 kernel_第1张图片

三、在打印信息也会看到Kernel command line

通过 uboot 的 bootargs添加一个新参数传送给 kernel_第2张图片

 

四、添加一个自定义的参数argument方法

1、u-boot\common\cmd_bootrk.c 里面的函数static void rk_commandline_setenv(const char *boot_name, rk_boot_img_hdr *hdr, bool charge)添加以下内容:

snprintf(command_line, sizeof(command_line),
                 "%s addnewaargument=%d", command_line, 52011);

通过 uboot 的 bootargs添加一个新参数传送给 kernel_第3张图片

2、kernel解析command_line的代码在kernel\init\main.c的asmlinkage void __init start_kernel(void)

通过 uboot 的 bootargs添加一个新参数传送给 kernel_第4张图片

3、编译boot然后烧录,然后读cmdline,看log是已经成功添加。

通过 uboot 的 bootargs添加一个新参数传送给 kernel_第5张图片

 

4、kernel读取uboot传入的参数addnewaargument的值,在想要取得uboot传入参数的文件中添加:

static char *m_addnewaargument;
static int __init addnewaargument_setup(char *s)
{
	m_addnewaargument = s;
	return 1;
}
__setup("addnewaargument=", addnewaargument_setup);

宏__setup("addnewaargument=", addnewaargument_setup)会在bootargs中取得"addnewaargument="后的值作为函数addnewaargument_setup的参数char,因此只要在addnewaargument_setup函数中用全局变量m_addnewaargument接收该值即可。

通过 uboot 的 bootargs添加一个新参数传送给 kernel_第6张图片

通过 uboot 的 bootargs添加一个新参数传送给 kernel_第7张图片

 

 

你可能感兴趣的:(Linux学习)