Chinaunix首页 | 论坛 | 博客
  • 博客访问: 53689
  • 博文数量: 24
  • 博客积分: 1480
  • 博客等级: 上尉
  • 技术积分: 250
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-12 16:20
文章分类

全部博文(24)

文章存档

2010年(24)

我的朋友

分类: 嵌入式

2010-06-26 04:21:13

u-boot的命令也是通过目标板的配置头文件来配置的,比如要添加ping命令,就必须添加CFG_CMD_NET和CFG_CMD_PING才行。不然common/cmd_net.c就不会被编译了。

tftp + nfs 启动
setenv bootargs root=/dev/nfs rw nfsroot=192.168.1.5:/opt/2410/rootfs ip=192.168.1.110:192.168.1.255:255.255.255.0 console=ttySAC0,115200

uImage
setenv bootcmd tftp 0x32000000 uImage\;bootm 0x32000000
zImage
setenv bootcmd tftp 0x32000000 zImage\;bootm 0x32000000
nand 启动

nand + cramfs启动
root=/dev/mtdblock2 init=/linuxrc load_ramdisk=0 console=ttySAC0,115200 mem=655
36K devfs=mount

uImage
setenv bootcmd nand read 0x30007fc0 0x40000 0x1c0000\;bootm 30007fc0
zImage
setenv bootcmd nand read 0x30008000 0x40000 0x1c0000\;bootm 30008000

参考网址
http://blog.csdn.net/dongliqiang2006/archive/2009/05/29/4224249.aspx

u-boot传递启动参数不成功的解决方法
设置:
setenv bootargs root=/dev/mtdblock2 init=/bin/bash console=ttySAC0,115200
内核仍然使用其默认参数,该启动参数并没有传递。
原因分析如下:
先看看lib_arm/Armlinux.c中:
 

.........
#if defined (CONFIG_SETUP_MEMORY_TAGS) || \
    defined (CONFIG_CMDLINE_TAG) || \
    defined (CONFIG_INITRD_TAG) || \
    defined (CONFIG_SERIAL_TAG) || \
    defined (CONFIG_REVISION_TAG) || \
    defined (CONFIG_LCD) || \
    defined (CONFIG_VFD)
static void setup_start_tag (bd_t *bd)
{
    params = (struct tag *) bd->bi_boot_params;
…………

 
该段程序先判断是否定义了CONFIG_CMDLINE_TAG等, 才决定是否给内核传递参数。而board/smdk2410/smdk2410.h中 并没有定义CONFIG_CMDLINE_TAG,问题就出现在这里。
因此,这里参照smdk2440.h的 配置,在smdk2410.h(开发板名字.h)中添加以下3条定义(蓝 色部分)
 

#define CONFIG_SYS_CLK_FREQ    12000000 /* SMDK2400 has 12 MHz input clock */
#undef CONFIG_USE_IRQ            /* we don't need IRQ/FIQ stuff    */
#define CONFIG_CMDLINE_TAG     1    /* enable passing of ATAGs    */
#define CONFIG_SETUP_MEMORY_TAGS 1
#define CONFIG_INITRD_TAG     1

重新编译就OK了。



阅读(475) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~