uboot的mtd功能支持

一、概述

1、MTD

  MTD是Flash的一种管理方法,将Flash划分成几个分区,便于管理。

  u-boot的MTD功能是在文件cmd_jffs2.c中实现的,由此我们可以知道怎样打开u-boot的MTD功能。

2、MTD的作用

  (1)对Flash构建了分区表,从而能够启动linux系统

  (2)nand命令可以使用宏参数,例如“nand read.jffs2 0x30007FC0 kernel;”命令中的kernel,kernel参数

     代表了内核分区的加载地址和大小。

二、移植

  整个操作都是对TQ2440.h的修改。

1、使能MTD功能、定义MTD分区表

/*
 * config mtd settings
 */     
#define CONFIG_JFFS2_CMDLINE 1
#define CONFIG_JFFS2_NAND    1

#define MTDIDS_DEFAULT            "nand0=nandflash0"
#define MTDPARTS_DEFAULT        "mtdparts=nandflash0:256k@0(bios)," \
                                    "128k(params)," \
                                    "128k(toc)," \
                                    "512k(eboot)," \
                                    "1024k(logo)," \
                                    "3m(kernel)," \
                                    "-(root)" 

#define CONFIG_EXTRA_ENV_SETTINGS      \
    "mtdids="    MTDIDS_DEFAULT            "\0" \
    "mtdparts="    MTDPARTS_DEFAULT        "\0"

2、使能JFFS2功能(MTD功能是在JFFS2功能打开的前提下才能进一步使能)

/***********************************************************
 * Command definition
 ***********************************************************/
#define CONFIG_COMMANDS \
            (CONFIG_CMD_DFL     | \
            CFG_CMD_CACHE     | \
            CFG_CMD_NAND     | \
            /*CFG_CMD_EEPROM |*/ \
            /*CFG_CMD_I2C     |*/ \
            /*CFG_CMD_USB     |*/ \
            CFG_CMD_JFFS2     | \
            CFG_CMD_DATE     | \
            CFG_CMD_REGINFO  | \
            CFG_CMD_PING     | \
            CFG_CMD_ELF)

三、移植遇到的问题及解决

  如果出现“mtdparts variable not set”问题,这是由于环境变量mtdparts没设置的缘故,我们可以在默认环境变量区中添加这样的环境变量。默认环境变量的定义是common/environment.c中的全局变量“environment”。

  添加环境变量的方法很简单,还是在TQ2440.h中添加,代码如下。

#define CONFIG_EXTRA_ENV_SETTINGS      \
    "mtdids="    MTDIDS_DEFAULT            "\0" \
    "mtdparts="    MTDPARTS_DEFAULT        "\0"

  

转载于:https://www.cnblogs.com/amanlikethis/p/3636876.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值