uboot移植5-裁剪和修改默认参数

uboot启动会从nandflash读取环境变量,如果读取失败,会使用默认环境变量,如上图是读取失败使用默认参数的打印信息。

修改默认参数:

1、搜索using default environment,发现默认环境变量存在全局变量default_environment结构体中(common/env_common.c)

如上图,想修改哪个默认参数值,只需要要inclu/configs/smdk2440.h定义对应宏即可,如下,

#define CONFIG_BOOTARGS "console=ttySAC0 root=/dev/mtdblock3"
#define CONFIG_BOOTCOMMAND "nand read 30000000 kernel;bootm 30000000"
 

#define CONFIG_NETMASK        255.255.255.0
#define CONFIG_IPADDR            192.168.1.17
#define CONFIG_SERVERIP        192.168.1.1
#define CONFIG_ETHADDR        00:0c:29:4d:e4:f4
2、裁剪uboot,目前uboot编译出来的u-boot.bin比较大,需要将不需要的命令删除。只需要将inclu/configs/smdk2440.h不要的宏去掉即可(如果报错,可以根据报错信息进行解决)。

3、设置环境变量在nandflash。

uboot下通过saveenv命令进行将环境变量保存到nandflash,通过搜索saveenv查找需要哪些宏。

我们需要nand进行保存环境变量,由上图,我用使用的文件是env_nand.c文件。要想将env_nand.c编译进uboot,需要查看makefile需要什么宏,如下图,

我们需要宏CONFIG_ENV_IS_IN_NAND,同时需要去掉CONFIG_ENV_IS_IN_FLASH(norflash相关宏)。

编译查看结果,查看env_nand.c文件需要哪些宏定义,修改后定义如下

inclu/configs/smdk2440.h:

编译进行烧录

启动后依然会打打印using default environment,因为我们没有吧环境变量存到nandflash,执行save命令,重启后就没有了。

4、进行nandflash分区。inclu/configs/smdk2440.h:

MTDPARTS_DEFAULT根据uboot大小和环境偏移地址确定。

编译。

之前烧写程序命令如下

tftp 30000000 uImage(使用tftp命令前提要tftp服务端,网上可以下载)

nand erase 60000 200000
nand write 30000000 60000 200000

分区后可以使用如下命令进行烧写程序

tftp 30000000 uImage
nand erase.part kernel
nand write 30000000 kernel
 

烧写完成后可以启动内核。

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值