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