主要是将我们使用的nor flash 型号添加到jedec_table中
File : drivers/mtd/jedec_flash.c
jz2440 :MX29LV160DB 2M id= 0x2249, MX29LV160B 宏需要自己添加
#define MX29LV160B 0x2249
mini2440 :SST29LV1601 (AM29LV160DB) 35sectors id = 0x2249
// for jz2440 { .mfr_id = MT_MANUFACT, .dev_id = MX29LV160B, .name = "MXIC MX29LV160B", .uaddr = { [0] = MTD_UADDR_0x0AAA_0x0555, /* x8 */ [1] = MTD_UADDR_0x0555_0x02AA, /* x16 */ }, .DevSize = SIZE_2MiB, .CmdSet = P_ID_AMD_STD, .NumEraseRegions= 4, .regions = { ERASEINFO(0x04000,1), ERASEINFO(0x02000,2), ERASEINFO(0x08000,1), ERASEINFO(0x10000,31) } }, // for mini2440 { .mfr_id = AMD_MANUFACT, .dev_id = AM29LV160DB, .name = "AMD AM29LV160DB", .uaddr = { [0] = MTD_UADDR_0x0AAA_0x0555, /* x8 */ [1] = MTD_UADDR_0x0555_0x02AA /* x16 */ }, .DevSize = SIZE_2MiB, .CmdSet = P_ID_AMD_STD, .NumEraseRegions= 4, .regions = { ERASEINFO(0x04000,1), ERASEINFO(0x02000,2), ERASEINFO(0x08000,1), ERASEINFO(0x10000,31) } },
在smdk2440.h里面把#define CONFIG_SYS_MAX_FLASH_SECT (19) 改成35
再次编译并烧写:
U-Boot 2014.10 (Nov 01 2018 - 11:32:28) CPUID: 32440001 FCLK: 400 MHz HCLK: 100 MHz PCLK: 50 MHz DRAM: 64 MiB WARNING: Caches not enabled Flash: 2 MiB *** Warning - bad CRC, using default environment In: serial Out: serial Err: serial Net: CS8900-0 Error: CS8900-0 address not set. Warning: Your board does not use generic board. Please read doc/README.generic-board and take action. Boards not upgraded by the late 2014 may break or be removed.
可知, nor flash已经被正确识别,可以在smdk2440.h里面定义DEBUG宏看出更详细信息。
去掉最后那个Warning, 在common/main.c 里面main_loop里面:
#ifndef CONFIG_SYS_GENERIC_BOARD puts("Warning: Your board does not use generic board. Please read "); puts("doc/README.generic-board and take action. Boards not "); puts("upgraded by the late 2014 may break or be removed. "); #endif