返回信息流[现象描述]在打断uboot启动,烧写linux kernel的时候,会要求输入device IP(目标板IP)和server IP(宿主机IP)和kernel filename。因为我的宿主机IP一直是192.168.1.116(固定),而且make完生成的uImage名字也是yaol_uImage,所以我想烧写进行到这一步的时候,自动填入图片红色部分标出的部分,同时也可以手动修改。
比如:Input device IP(10.10.10.123) ==:(自动打印)192.168.1.10,并且停住,等待修改IP或者回车进入下一步
[问题]我看了一些uboot的代码,似乎要在源代码里改setenv()和input_vuale()相关,不知道是不是这样?是不是还要改脚本什么的?诸位能否给些建议,谢谢
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #6939同步于 2009/12/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖
[求助]uboot启动烧写内核时如何自动填写IP和内核名
michealyao
2009/12/15镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
uboot中setenv命令可以设置这些内容的,可选方式有二:
(1)uboot命令交互时使用setenv设定某些环境变量(还可以以此为基础构造你需要的特定的环境变量的组合,举个例子就像脚本编程的感觉),例如可以setenv bootdelay 30设置uboot启动内核前的延时为30s
(2)在uboot源码中适当位置(根据你的需求确定)加入设置相应环境变量的代码
此外,考虑到你现在遇到的问题,关于你的开发板使用的环境变量,有两个建议
(1)uboot中使用printenv命令打印现在所有的环境变量,查看比对你需要的内容(比如那几个addr)
(2)查看开发板配置文件(路径:uboot源码/include/configs/开发板名字.h),一般都会定义CONFIG_EXTRA_ENV_SETTINGS宏,里面包含了默认的环境变量。
多说一句,你拿到的uboot可能已经经过了厂商的比较深入的修改,所以有些地方比较难理解,可以通过阅读源代码和了解寻常使用方式去克服这个困难,加油哦~
PS:前两天有个同学问uboot的问题,我回复了很长一段内容,你可以看一下,应该有帮助
【 在 hobby 的大作中提到: 】
: uboot中setenv命令可以设置这些内容的,可选方式有二:
: (1)uboot命令交互时使用setenv设定某些环境变量(还可以以此为基础构造你需要的特定的环境变量的组合,举个例子就像脚本编程的感觉),例如可以setenv bootdelay 30设置uboot启动内核前的延时为30s
: (2)在uboot源码中适当位置(根据你的需求确定)加入设置相应环境变量的代码
: ...................
真详细啊
补充一点
系统默认的环境变量ms在env_common.c中
uchar default_environment[] = {
这个数组将所有的环境变量组织起来
标准的环境变量 比如gatewayip之类的 你只需要打开开关CONFIG_GATEWAYIP 并配置成自己的值就OK了
CONFIG_EXTRA_ENV_SETTINGS是 EXTRA的用户可自定义的环境变量
对于其他的U-boot不支持的环境变量 都可以定义在CONFIG_EXTRA_ENV_SETTINGS中
呵呵 补充的好
我回复时候还琢磨了一下:如果是extra,其他地方应该还有基本的,但是当时没太细看,刚才查了一下,结果如下
位置:uboot源码/common/env_common.c(line 65-137)PS:uboot版本1.1.1
—————————————分割线——————————————
uchar default_environment[] = {
#ifdef CONFIG_BOOTARGS
"bootargs=" CONFIG_BOOTARGS "\0"
#endif
#ifdef CONFIG_BOOTCOMMAND
"bootcmd=" CONFIG_BOOTCOMMAND "\0"
#endif
#ifdef CONFIG_RAMBOOTCOMMAND
"ramboot=" CONFIG_RAMBOOTCOMMAND "\0"
#endif
#ifdef CONFIG_NFSBOOTCOMMAND
"nfsboot=" CONFIG_NFSBOOTCOMMAND "\0"
#endif
#if defined(CONFIG_BOOTDELAY) && (CONFIG_BOOTDELAY >= 0)
"bootdelay=" MK_STR(CONFIG_BOOTDELAY) "\0"
#endif
#if defined(CONFIG_BAUDRATE) && (CONFIG_BAUDRATE >= 0)
"baudrate=" MK_STR(CONFIG_BAUDRATE) "\0"
#endif
#ifdef CONFIG_LOADS_ECHO
"loads_echo=" MK_STR(CONFIG_LOADS_ECHO) "\0"
#endif
#ifdef CONFIG_ETHADDR
"ethaddr=" MK_STR(CONFIG_ETHADDR) "\0"
#endif
#ifdef CONFIG_ETH1ADDR
"eth1addr=" MK_STR(CONFIG_ETH1ADDR) "\0"
#endif
#ifdef CONFIG_ETH2ADDR
"eth2addr=" MK_STR(CONFIG_ETH2ADDR) "\0"
#endif
#ifdef CONFIG_IPADDR
"ipaddr=" MK_STR(CONFIG_IPADDR) "\0"
#endif
#ifdef CONFIG_SERVERIP
"serverip=" MK_STR(CONFIG_SERVERIP) "\0"
#endif
#ifdef CFG_AUTOLOAD
"autoload=" CFG_AUTOLOAD "\0"
#endif
#ifdef CONFIG_PREBOOT
"preboot=" CONFIG_PREBOOT "\0"
#endif
#ifdef CONFIG_ROOTPATH
"rootpath=" MK_STR(CONFIG_ROOTPATH) "\0"
#endif
#ifdef CONFIG_GATEWAYIP
"gatewayip=" MK_STR(CONFIG_GATEWAYIP) "\0"
#endif
#ifdef CONFIG_NETMASK
"netmask=" MK_STR(CONFIG_NETMASK) "\0"
#endif
#ifdef CONFIG_HOSTNAME
"hostname=" MK_STR(CONFIG_HOSTNAME) "\0"
#endif
#ifdef CONFIG_BOOTFILE
"bootfile=" MK_STR(CONFIG_BOOTFILE) "\0"
#endif
#ifdef CONFIG_LOADADDR
"loadaddr=" MK_STR(CONFIG_LOADADDR) "\0"
#endif
#ifdef CONFIG_CLOCKS_IN_MHZ
"clocks_in_mhz=1\0"
#endif
#if defined(CONFIG_PCI_BOOTDELAY) && (CONFIG_PCI_BOOTDELAY > 0)
"pcidelay=" MK_STR(CONFIG_PCI_BOOTDELAY) "\0"
#endif
#ifdef CONFIG_EXTRA_ENV_SETTINGS
CONFIG_EXTRA_ENV_SETTINGS
#endif
"\0"
};
【 在 ssailing (sailing) 的大作中提到: 】
: 真详细啊
: 补充一点
: 系统默认的环境变量ms在env_common.c中
: ...................