欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

u-boot如何传入一个自定义参数给内核?然后内核又是怎样解析?

更新时间: 2014-01-05 03:19:03 责任编辑: Author_N1

 

u-boot怎么传入一个自定义参数给内核??然后内核又是怎样解析??
各位好,想请假下大家,我想在u-boot启动的时候自定义一个参数,然后传给内核,内核解析后,根据参数传入的不同而初始化不同的硬件。这个该怎么设计?求指教

--参考方法--
我向你介绍一种办法, 你作为参考。

uboot里面有一个命令叫linux_args,是一个字符串描述,uboot启动linux时将linux_args作为参数传给linux, linux把这个启动参数叫cmdline, 在linux启动过程中,相应的模块会捕获这个cmdline里的内容,一旦发现有自身模块的相关描述, 那么就会按照这些描述来实现初始化。

我的uboot里的linux_args里有有描述了flash相关有关的内容:
Dream 5220 # printenv 
linux_args=mtdparts=octeon_nor0:1m(BOOT),7m(LINUX),21m(CONFIG),3m(MD)

linux启动后, /mtd/cmdlinepart.c 会捕获到"mtdparts="部分的内容, 之后按照这些描述来初始化flash分区。

在linux启动阶段,start_kernel 也会把这个cmdline 打印出来:
Kernel command line:  bootoctlinux 0x1dd00000 coremask=0x1 mtdparts=octeon_nor0:1m(BOOT),7m(LINUX),21m(CONFIG),3m(MD)  console=t0

你在shell界面下可以查看到这个cmdline的内容:
root@(none):~# cat /proc/cmdline 
 bootoctlinux mtdparts=octeon_nor0:1m(BOOT),7m(LINUX),24m(CONFIG) console=ttyS0,115200

你只需要做三件事:
第一, 在uboot界面下使用linux_args命令添加你的描述. 
第二, __setup() 函数就是linux的模块里用来捕获cmdline里有关自身描述的。你查一下这个资料。
第三, 实现你的module.

另外, 你也可以将你的描述信息在uboot里面用现成的命令写到eeprom等设备里面,之后你在linux添加一个module去eeprom里面查找相关的信息,同样可以实现根据不同的参数来init 不同的hw。这个办法也是可行的。

接贴。
 
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:19:03
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/20681/
本文WWW.DOC100.NET DOC100.NET版权所有。