当前位置: 代码迷 >> 综合 >> 通过 uboot 的 bootargs添加一个新参数传送给 kernel
  详细解决方案

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

热度:107   发布时间:2023-11-27 13:25:07.0

 

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

 

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

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

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

 

四、添加一个自定义的参数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);

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

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

 

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接收该值即可。

 

 

  相关解决方案