uboot 新添加一个 ubootargs, 并且 linux 一个模块,读取打印该参数
时间: 2024-05-25 21:16:59 浏览: 135
Linux启动bootargs参数分析
为了实现在uboot中添加一个ubootargs参数,并且在linux一个模块中读取并打印该参数,可以按照以下步骤进行:
1. 在uboot中添加ubootargs参数
可以通过修改uboot中的代码来添加ubootargs参数。具体来说,可以在uboot中的include/configs/目录下找到相应的配置文件(如imx6ull_evk.h),并在该文件中添加以下代码:
#define CONFIG_EXTRA_ENV_SETTINGS \
"ubootargs=hello world\0" \
这样就在uboot中添加了一个名为ubootargs的参数,并设置其值为"hello world"。
2. 在linux中添加一个模块
可以通过创建一个简单的linux模块来读取并打印ubootargs参数。具体来说,可以创建一个名为ubootargs_module.c的文件,并添加以下代码:
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/string.h>
static char *ubootargs;
module_param(ubootargs, charp, 0);
static int __init ubootargs_module_init(void) {
printk(KERN_INFO "ubootargs_module: ubootargs=%s\n", ubootargs);
return 0;
}
static void __exit ubootargs_module_exit(void) {
printk(KERN_INFO "ubootargs_module: exiting\n");
}
module_init(ubootargs_module_init);
module_exit(ubootargs_module_exit);
在该模块中,我们首先定义了一个名为ubootargs的变量,并使用module_param宏定义该变量,表示该变量可以从命令行中传入。然后,我们实现了模块的初始化和退出函数,在初始化函数中打印ubootargs参数的值。
3. 编译并运行模块
最后,我们需要编译并运行这个模块。可以使用以下命令来编译该模块:
make -C /path/to/kernel/source M=$PWD modules
其中,/path/to/kernel/source是指linux内核源代码的路径。编译成功后,可以使用insmod命令将该模块加载到内核中:
sudo insmod ubootargs_module.ko ubootargs="hello world"
这里的ubootargs参数需要和uboot中设置的参数保持一致。加载成功后,我们可以使用dmesg命令查看模块的输出:
dmesg | tail
可以看到类似如下输出:
[ 205.310564] ubootargs_module: ubootargs=hello world
这表明我们成功地从uboot中添加了一个ubootargs参数,并且在linux一个模块中读取并打印了该参数。
阅读全文