在操作系统启动后, 如何修改u-boot的参数区?

clickchen2003 2010-07-27 04:27:19
有没有什么数据结构记录了u-boot args的信息, 并提供回写的方式?
...全文
1232 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
happy1357 2012-06-13
  • 打赏
  • 举报
回复
請問请问内核怎么对flash做写入的动作,要怎么额外弄一块flash分区来保存内核需要的command_line?
glacierful 2010-07-28
  • 打赏
  • 举报
回复
学习。
jiura 2010-07-28
  • 打赏
  • 举报
回复
顺便请教下14楼朋友 :
command_line 具体是怎么样从 uboot config 读到 ram..或者说kenerl读取uboot env config 后是怎么样放到ram 中..具体又是放在哪个位置??
我看到 _prom_argv = (unsigned long *) (fw_arg1 | 0x80000000);
能帮忙解释下嘛 ??
deep_pro 2010-07-28
  • 打赏
  • 举报
回复
有种简单的方法,绕过uboot的编码压缩

直接在内核中 init/main.c 里的 setup_arch(&command_line);
之前,将command_line 修改掉
需要额外弄一块flash分区来保存内核需要的command_line
clickchen2003 2010-07-28
  • 打赏
  • 举报
回复
多谢各位, 搞定了给大家结贴。
Wenxy1 2010-07-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 clickchen2003 的回复:]

有多个rootfs,需要根据不同的情况进行加载,怎么做比较合适些? 谢谢 。
[/Quote]

改bootcmd这个环境变量。
充电宝111 2010-07-27
  • 打赏
  • 举报
回复
顺着这个思路:
1.uboot引导linux的参数都是写在flash上的,具体哪个地址看uboot的CFG_ENV_ADDR,具体格式uboot下有个setup.h文件(linux下也有个一模一样的文件,限ARM平台)
2.在linux上写一个简单的驱动,去写这个地址的flash
jiura 2010-07-27
  • 打赏
  • 举报
回复
理论上说几句哈:
uboot config 文件是存放在flash中。。kernle 起来后会从ram中读取uboot env 。这个就是setup过程。。一般kernle起来后。。uboot env 的值在当前运行中是不会被改变了。。
如果需要在当前运行中更改uboot env config值。。那就需要直接写flash。 这个env config 在uboot放入flash前是有做过编码压缩的。。所以如果在操作系统读取。需要解压读取。这个可以看uboot code。做个相反的过程就可以了。
deep_pro 2010-07-27
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 clickchen2003 的回复:]

所以需要在linux启动后, 修改u-boot bootargs 启动不同的rootfs。
[/Quote]

你这么非主流的需求,自然linux是不会有支持的

只能自己写程序读写存放uboot env的flash吧
voice_shen 2010-07-27
  • 打赏
  • 举报
回复
可以用chroot来切换根文件系统!
clickchen2003 2010-07-27
  • 打赏
  • 举报
回复
补充一句, 是需要重启动的。
clickchen2003 2010-07-27
  • 打赏
  • 举报
回复
所以需要在linux启动后, 修改u-boot bootargs 启动不同的rootfs。
deep_pro 2010-07-27
  • 打赏
  • 举报
回复
http://hi.baidu.com/deep_pro/blog/item/220df2dddac6e3d28d1029dd.html
根文件系统重定向只在pc上见过,如非必要,还是不要这么弄了

deep_pro 2010-07-27
  • 打赏
  • 举报
回复
一般自然是在uboot里就决定了根文件系统

难道你要在Linux里进行判断啊,真得要那那样的话,可以使用根文件系统重定向
clickchen2003 2010-07-27
  • 打赏
  • 举报
回复
有多个rootfs,需要根据不同的情况进行加载,怎么做比较合适些? 谢谢 。
deep_pro 2010-07-27
  • 打赏
  • 举报
回复
这个,既然Linux都起来了,改uboot的bootargs也没有太大意义了,因为setup已经完成了
除非你的驱动做成了module,Linux启动一段时间后才加载的,可能需要用到这些参数

/proc/cmdline 记录了这些信息,我不知道修改这个是否会对linux造成影响,但是肯定不会修改uboot的bootargs的,那个只能由uboot的setenv、saveenv修改

有些模块参数可以在运行时更改
echo -n ${value} > /sys/module/${modulename}/parameters/${parm}
clickchen2003 2010-07-27
  • 打赏
  • 举报
回复
不是在u-boot里面, 而是linux启动后。
wwwunix 2010-07-27
  • 打赏
  • 举报
回复
用setenv bootargs设置
用writebdr回写

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧