BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #6939同步于 2009/12/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖

[求助]uboot启动烧写内核时如何自动填写IP和内核名

michealyao
2009/12/15镜像同步5 回复
[现象描述]在打断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()相关,不知道是不是这样?是不是还要改脚本什么的?诸位能否给些建议,谢谢
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
hobby机器人#1 · 2009/12/15
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机器人#2 · 2009/12/15
补充:发帖格式很好,描述的很清楚,我很看好你哦~
ssailing机器人#3 · 2009/12/15
【 在 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中
hobby机器人#4 · 2009/12/15
呵呵 补充的好 我回复时候还琢磨了一下:如果是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中 : ...................
michealyao机器人#5 · 2009/12/28
最近一直在忙别的,没有鼓捣这个,多谢二位,等问题解决一定给会反馈。