新增norflash支持的修改方法
目标:阅读uboot中的flash驱动代码,根据IC25LP128的datesheet参数写驱动函数
static ST_WRITE_PROTECT _pstWriteProtectTable_IC25LP128[] 和 hal_SERFLASH_t_hal_SERFLASH_table[]。
1. 在drvDeviceInfo.c文件中作如下更改¶
-
参考IC25LP128的datesheet文件增加写保护函数
写保护函数参考
static ST_WRITE_PROTECT _pstWriteProtectTable_IC25LP128[] = { // BPX, Lower Bound Upper Bound { BITS(5:2, 1), 0x00FEFFFF, 0x00FFFFFF }, { BITS(5:2, 2), 0x00FDFFFF, 0x00FFFFFF }, { BITS(5:2, 3), 0x00FBFFFF, 0x00FFFFFF }, { BITS(5:2, 4), 0x00F7FFFF, 0x00FFFFFF }, { BITS(5:2, 5), 0x00DFFFFF, 0x00FFFFFF }, { BITS(5:2, 6), 0x00CFFFFF, 0x00FFFFFF }, { BITS(5:2, 7), 0x009BFFFF, 0x00FFFFFF }, { BITS(5:2, 8), 0x0037FFFF, 0x00FFFFFF }, { BITS(5:2, 9), 0x00FFFFFF, 0x00FFFFFF }, { BITS(5:2, 10), 0x00FFFFFF, 0x00FFFFFF }, { BITS(5:2, 11), 0x00FFFFFF, 0x00FFFFFF }, { BITS(5:2, 12), 0x00FFFFFF, 0x00FFFFFF }, { BITS(5:2, 13), 0x00FFFFFF, 0x00FFFFFF }, { BITS(5:2, 14), 0x00FFFFFF, 0x00FFFFFF }, { BITS(5:2, 15), 0x00FFFFFF, 0x00FFFFFF }, { BITS(5:2, 0), 0xFFFFFFFF, 0x00FFFFFF }, };
-
在hal_SERFLASH_t_hal_SERFLASH_table[]函数中增加flash的信息
hal_SERFLASH_t _hal_SERFLASH_table[] = { …………….. ……………. { FLASH_IC_IC25LP128, //u16FlashType MID_IC, //u8MID 0x60, // u8DID0 0x18, // u8DID1
_pstWriteProtectTable_IC25LP128, //pWriteProtectTable NULL, // pSpecialBlocks 0x1000000, // u32FlashSize 256, //u32NumBLK SIZE_64KB, //u32BlockSize 256, // u16PageSize 50, // u16MaxChipWrDoneTimeout
BITS(5:2, 0x0F), //u8WrsrBlkProtect ISP_DEV_NEXTFLASH, // u16DevSel ISP_SPI_ENDIAN_LITTLE, //u16SpiEndianSel E {E_SPI_86M ,_DUAL_AD_MODE}, // Support 2XREAD(SPI CMD is 0xBB) TRUE, TRUE},}
2. 在drvDeviceInfo.h中检查以下几个宏定义,看是否需要定义¶
-
flash IC 的定义
#define FLASH_IC_IC25LP128 0x0F00UL // 16M
-
Flash Manufacture ID的定义(可以在datesheet找到)
#define MID_IC 0x9DUL
-
Flash Storage Size的定义(看是否需要从新定义)
#define SIZE_16MB 0x1000000UL
-
ISP_DEV_SEL
#define ISP_DEV_NEXTFLASH BITS(2:0, 1)
-
ISP_SPI_ENDIAN_SEL
#define ISP_SPI_ENDIAN_LITTLE BITS(0:0, 0)