u-boot-2016.05移植:(3)、识别NOR FLASH

在u-boot-2016.05\drivers\mtd\jedec_flash.c中的如下结构体数组jedec_table:

static const struct amd_flash_info jedec_table[] = {

    ...

};

中最末尾添加一项:

    {
        .mfr_id     = (u16)MX_MANUFACT,
        .dev_id     = 0x2249,
        .name       = "MXIC MT29LV160DB",
        .uaddr      = {
            [1] = MTD_UADDR_0x0555_0x02AA /* x16 */
        },
        .DevSize    = SIZE_2MiB,
        .CmdSet     = P_ID_AMD_STD,
        .NumEraseRegions= 4,
        .regions    = {
            ERASEINFO(16*1024, 1),
            ERASEINFO(8*1024, 2),
            ERASEINFO(32*1024, 1),
            ERASEINFO(64*1024, 31),
        }
    },

修改完后编译烧写到NOR FLASH后可以看到NOR FLASH的大小识别出来了,但是提示错误:

ERROR: too many flash sectors

搜索too many flash sectors这句话,可以在u-boot-2016.05\drivers\mtd\jedec_flash.c和u-boot-2016.05\drivers\mtd\cfi_flash.c中找到:

...

if (sect_cnt >= CONFIG_SYS_MAX_FLASH_SECT) {
    printf("ERROR: too many flash sectors\n");
    break;
}

...

其中初始定义的最大FLASH扇区数CONFIG_SYS_MAX_FLASH_SECT是19,而我们用的NORFLASH的扇区数是35,超过了最大扇区数限制,所以会提示too many flash sectors的错误,在u-boot-2016.05\include\configs\smdk2440.h中修改宏定义CONFIG_SYS_MAX_FLASH_SECT为大于我们所用NOR FLASH的扇区数即可,在这里我们用128。
修改后烧写到NOR FLASH可以看到下面的输出:

U-Boot 2016.05 (Aug 20 2016 - 22:49:31 +0800)

initcall: 33f0aa6c
U-Boot code: 33F00000 -> 33F480A4  BSS: -> 33F92BE0
initcall: 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值