JZ2440平台移植uboot 2016.11(九)

本节中精简uboot,修改uboot的分区

1. 精简uboot

配置uboot中实现哪些功能在两个文件中配置,include/configs/smdk2440.hconfigs/smdk2440_defconfig
修改配置文件configs/smdk2440_defconfig

CONFIG_ARM=y
CONFIG_TARGET_SMDK2440=y
CONFIG_BOOTDELAY=5
# CONFIG_SYS_STDIO_DEREGISTER is not set
# CONFIG_DISPLAY_BOARDINFO is not set
CONFIG_HUSH_PARSER=y
CONFIG_SYS_PROMPT="SMDK2440 # "
#CONFIG_CMD_USB=y
# CONFIG_CMD_SETEXPR is not set
#CONFIG_CMD_DHCP=y
CONFIG_CMD_PING=y
CONFIG_CMD_CACHE=y
#CONFIG_CMD_EXT2=y
#CONFIG_CMD_FAT=y
#CONFIG_CMD_UBI=y
#CONFIG_USB=y
#CONFIG_USB_STORAGE=y
#CONFIG_USB_KEYBOARD=y

修改配置文件

/************************************************************
 * USB support (currently only works with D-cache off)
 ************************************************************/
 #if 0
#define CONFIG_USB_OHCI
#define CONFIG_USB_OHCI_S3C24XX
#define CONFIG_DOS_PARTITION
#endif

/************************************************************
 * RTC
 ************************************************************/
 #if 0
#define CONFIG_RTC_S3C24X0
#endif

#if 0
#define CONFIG_CMD_DATE
#endif

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

#if 0
#define CONFIG_BZIP2
#define CONFIG_LZO
#define CONFIG_LZMA
#endif

 #if 0
#define CONFIG_CMD_UBIFS
#define CONFIG_CMD_MTDPARTS
#define CONFIG_MTD_DEVICE
#define CONFIG_MTD_PARTITIONS
#define CONFIG_YAFFS2
#define CONFIG_RBTREE
#endif

之后编译,看有没有错误,有些功能依赖于多个宏的定义,此时需要编译来查找问题,选择功能的去留问题。

在定义上面的CONFIG_BOOTARGS CONFIG_BOOTCOMMAND之后可以看到,新的uboot运行时已经可以倒计时了。

2. 指定uboot参数存放地址

uboot默认的参数存放位置在nor flash中,我们使用nand flash,因此要将存放地址修改到nand flash。
修改include/configs/smdk2440.h

#if 0
#define CONFIG_ENV_ADDR         (CONFIG_SYS_FLASH_BASE + 0x070000)
#define CONFIG_ENV_IS_IN_FLASH
#define CONFIG_ENV_SIZE         0x10000
/* allow to overwrite serial and ethaddr */
#define CONFIG_ENV_OVERWRITE
#else
#define CONFIG_ENV_IS_IN_NAND
#define CONFIG_ENV_OFFSET   0x00040000
#define CONFIG_ENV_SIZE     0x00020000
#endif

此部分的如果找不到如何修改,可以找到saveenv命令的执行函数,在代码中间找具体的宏定义,然后再通过编译,补齐其他的定义即可。
此时,在uboot中修改参数之后就可以用save命令保存了。

3. 修改uboot的分区参数

此部分功能看起来是分区,其实是给kernel,rootfs灯存放的起始地址,size等参数提供宏,好在命令中更好的操作这部分存储空间。
修改include/configs/smdk2440.h

#define CONFIG_CMD_MTDPARTS
#define CONFIG_MTD_DEVICE
#define CONFIG_MTD_PARTITIONS
#define MTDIDS_DEFAULT      "nand0=jz2440"
#define MTDPARTS_DEFAULT    "mtdparts=jz2440:256k(u-boot),"\
                            "128k(params),"\
                            "2m(kernel),"\
                            "-(rootfs)" 

修改common/board_r.c

extern int mtdparts_init(void);

init_sequence_r中加入

#if defined(CONFIG_SPARC)
    prom_init,
#endif
    mtdparts_init,
    run_main_loop,

编译uboot之后,使用命令mtdparts可以看到指定的存储空间已经识别了。

4. 使用命令下载内核

nfs 30000000 136.17.69.70:/home/shuimu/more/LinuxDriver/uImage
nand erase.part kernel
nand write 30000000 kernel
reset

之后可以看到能够正常启动内核了,但是没有文件系统,还不能正常操作。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值