之前我们修改了可以NOR FLASH 启动uboot,但是会发现:
Falsh: 0 Bytes
说明此时uboot并没有识别出 NOR FLASH,现在我们来修改修改
a.在cfi_flash.c(路径:drivers/mtd/cfi_flash.c)里写上定义:
#define _DEBUG1
这是一个宏开关,这样我们即可以看到一些uboot启动信息,会看到:
JEDEC PROBE: ID c2 2249 0
这是我们NOR FLASH的ID.
b.在jedec_flash.c 文件(路径:drivers\mtd\jedec_flash.c) 里的jedec_table数组最后那里加上新的型号信息:
{/*JZ2440:JEDEC PROBE:NOR: ID c2 2249 0 NAND:ID f0 ea00 0*/ .mfr_id = (u16)MX_MANUFACT, .dev_id = 0x2249, .name = "JZ2440", .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), } },
这里也是按照手册来的。
c.在smdk2440.h里找到:
#define CONFIG_SYS_MAX_FLASH_SECT (19)
这里最大FLASH扇区数CONFIG_SYS_MAX_FLASH_SECT是19,
而我们用的NORFLASH的扇区数是35,超过了最大扇区数限制
所以这个我们可以修改成128
d.注释掉:
#define _DEBUG1
e. 修改sp指针:
在uboot2016.11版本,执行完board_init_f后有一句:
ldr sp, [r9, #GD_START_ADDR_SP] /* sp = gd->start_addr_sp */,
所以不用我们设置了......