之前我们修改了可以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 */,
所以不用我们设置了......