arm-linux移植手记(二)bootloader移植(下)

本文详细记录了在 SMDK2410 平台上将 u-boot 移植以引导内核的过程,包括修改配置、NFS 下载与写入 NAND Flash,以及解决编译 u-boot 时遇到的问题,如交叉编译器版本匹配、--fix-v4bx 错误等。最终成功启动并运行 Linux 内核。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    书接上回。。。。。。。。哈哈。。。。。。。
    最开始我没有增加DM9000驱动,本想着用supervivi直接烧写内核就可以了,只要将内核的位置告诉u-boot,它自己复制到ram中引导即可,即使它自己不会,那我用nand read自己复制也行啊,可是试了很多次都不成功,只好改用nfs下载保存到nand flash上,没想到不但内核启动了,连文件系统跟着都能用了。。。。。。。。。。。。话说回来,还是要先看看u-boot的基本命令是怎么用的。

    一、添加内核引导  参考《u-boot-2009.08在mini2440上的移植(六)---增加引导内核功能  》(行数不够准确哦~)

【1】机器码的确定
通常,在u-boot和kernel中都会有一个机器码(即:MACH_TYPE),只有这两个机器码一致时才能引导内核,否则就会出现如下mach的错误信息或者死机。
打开board/samsung/mini2440/mini2440.c,定位到124行附近,修改如下:

#if defined(CONFIG_S3C2410)
/* arch number of SMDK2410-Board */
gd->bd->bi_arch_number = MACH_TYPE_SMDK2410;
#endif
#if defined(CONFIG_S3C2440)
/* arch number of S3C2440-Board */
 gd->bd->bi_arch_number = MACH_TYPE_MINI2440 ;
#endif

   (2)修改u-boot中内核引导参数:
打开/include/configs/mini2440.h,定位到60行附近,修改如下:
#define CONFIG_BOOTDELAY 3


//boot kernel
#define CONFIG_SETUP_MEMORY_TAGS     1 //如果没有定义这个参数,则uboot参数必须加入men=内存大小
#define CONFIG_INITRD_TAG            1
#define CONFIG_CMDLINE_TAG           1 //设置bootargs出入内核必须
#define CONFIG_BOOTARGS "noinitrd console=ttySAC0,115200  init=/linuxrc mem=64M \
root=/dev/mtdblock3 rw rootfstype=yaffs \
ip=10.1.0.129:10.1.0.128:10.1.0.1:255.255.255.0::eth0:off"
/*#define CONFIG_BOOTARGS "root=ramfs devfs=mount console=ttySA0,9600" */
#define CONFIG_ETHADDR 08:00:3e:26:0a:5b 
#define CONFIG_NETMASK          255.255.255.0
#define CONFIG_IPADDR 192.168.0.223
#define CONFIG_SERVERIP 192.168.0.224
#define CONFIG_GATEWAYIP 192.168.0.1
#define CONFIG_OVERWRITE_ETHADDR_ONCE
/*#define CONFIG_BOOTFILE
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值