linux内核 mtd分区

首先
内核配置需要打开MTD选项

Memory Technology Devices (MTD)  --->

如果是NOR Flash,需要选择Common Flash Interface (CFI)相关的选项;而且需要配置映射首地址(和uboot中配置的flash首地址一致)、映射地址大小和位宽

<*> CFI Flash device in physical memory map
(0xff800000) Physical start address of flash mapping
(0x2000000) Physical length of flash mapping
(2)   Bank width in octets 

如果是NAND Flash,需要选择NAND Flash相关的选项

修改内核文件
linux-2.6.15.b/drivers/mtd/maps/physmap.c

//linux
#define FLASH_PARTITION1_ADDR 0x00000000		//偏移地址
#define FLASH_PARTITION1_SIZE 0x001C0000		//大小

//ramdisk
#define FLASH_PARTITION2_ADDR 0x001C0000
#define FLASH_PARTITION2_SIZE 0x00240000

//ramdisk reserve
#define FLASH_PARTITION3_ADDR 0x00400000
#define FLASH_PARTITION3_SIZE 0x00380000

//uboot Environment
#define FLASH_PARTITION4_ADDR 0x00780000
#define FLASH_PARTITION4_SIZE 0x00020000

//uboot
#define FLASH_PARTITION0_ADDR 0x007A0000
#define FLASH_PARTITION0_SIZE 0x00060000

static struct mtd_partition mtd_parts[] = {
        {
                .name =         "Bootloader",
                .offset =       FLASH_PARTITION0_ADDR,
                .size =         FLASH_PARTITION0_SIZE
        },
        {
                .name =         "Kernel image",
                .offset =       FLASH_PARTITION1_ADDR,
                .size =         FLASH_PARTITION1_SIZE
        },
        {
                .name =         "Initial ramdisk image",
                .offset =       FLASH_PARTITION2_ADDR,
                .size =         FLASH_PARTITION2_SIZE
        },
        {
                .name =         "ramdisk reserve",
                .offset =       FLASH_PARTITION3_ADDR,
                .size =         FLASH_PARTITION3_SIZE
        },
        {
                .name =         "uboot Environment",
                .offset =       FLASH_PARTITION4_ADDR,
                .size =         FLASH_PARTITION4_SIZE
        },
};

#define PARTITION_COUNT (sizeof(mtd_parts)/sizeof(struct mtd_partition))

可参考地址https://blog.youkuaiyun.com/wenlifu71022/article/details/4334962

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值