uboot 参数对应着内核模块的参数 module_param

本文来自:http://3y.uu456.com/bp-b399108ed0d233d4b14e6911-1.html

很多时候我们内核驱动的模块需要模块参数来运行,这;如下面例子setenvbootargsmem=8;Uboot启动参数中的红色部分表示模块,蓝色部分;我们举例dm365_imp.oper_mode=;驱动文件dm365_ipipe.c被编译到dm3;staticu32oper_mode=IMP_M;如果uboot参数中没有dm365_imp.op;davin

很多时候我们内核驱动的模块需要模块参数来运行,这个模块参数在基本的驱动概念中有介绍,我们很多时候把他写在uboot的启动参数中,在内核启动时内核会读取uboot的启动参数,这样我们设置在uboot里面的启动参数就可以被对应的驱动模块获取到。

如下面例子 setenv bootargs mem=80M console=ttyS0,115200n8 root=/dev/nfs nfsroot=192.168.1.222:/home/mydemo/test/yaffs/rootfs noinitrd rw ip=192.168.1.175:192.168.1.1:255.255.255.0 video=davincifb:osd0=1440x240x16 4050K davinci_enc_mngr.ch0_output=LCD dm365_imp.oper_mode=0 davinci_capture.device_type=4

Uboot启动参数中的红色部分表示模块,蓝色部分表示模块里面的参数,黑色部分表示参数的值。

我们举例dm365_imp.oper_mode = 0说明

驱动文件dm365_ipipe.c被编译到dm365_imp.o模块 在dm365_ipipe.c文件中有如下参数对应。

①:

static u32 oper_mode = IMP_MODE_SINGLE_SHOT;

module_param(oper_mode, uint, S_IRUGO);

如果uboot参数中没有dm365_imp.oper_mode=0 那么参数的值就会被赋值为IMP_MODE_SINGLE_SHOT(1)。

②:

davinci_enc_mngr.ch0_output=LCD参数在 Davinci_enc_mngr.c中

static char *ch0_output = "";

static char *ch1_output = "";

static char *ch0_mode = "";

static char *ch1_mode = "";

module_param(ch0_output, charp, S_IRUGO);

module_param(ch1_output, charp, S_IRUGO);

module_param(ch0_mode, charp, S_IRUGO);

module_param(ch1_mode, charp, S_IRUGO);

③:

davinci_capture.device_type=

This defines which driver to use. Use the following settings:

davinci_capture.device_type=0 for MT9T001

davinci_capture.device_type=1 for TVP5146

davinci_capture.device_type=2 for MT9T031

davinci_capture.device_type=3 for MT9P031

davinci_capture.device_type=4 for TVP7002

这里我们可以去掉。

此外:

通过命令“modinfo -p ${modulename}”可以得知一个模块有哪些参数可以使用。同时,对于已经加载到内核里的模块,它们的模块参数会列举在/sys/module/${modulename}/parameters/目录下面,可以使用“echo -n ${value} > /sys/module/${modulename}/parameters/${parm}”这样的命令去修改。

但是这个操作是需要有权限问题的。

module_param(node_name, charp, S_IRUGO | S_IWUSR);

这个用户写权限S_IWUSR必须增加。

你可能感兴趣的:(uboot 参数对应着内核模块的参数 module_param)