RV1108新增 spi flash XT25F256B支持
一、主要修改内容
-
增加flash特性相关参数项
在sfc_nor.c中
flash_info spi_flash_tbl[] = { {0xc84016, 128, 8, 0x03, 0x02, 0x6B, 0x32, 0x20, 0xD8, 0x0D, 13, 9, 0}, /* GD25Q32B */ {0xc84017, 128, 8, 0x03, 0x02, 0x6B, 0x32, 0x20, 0xD8, 0x0D, 14, 9, 0}, /* GD25Q64B */ {0xc84018, 128, 8, 0x03, 0x02, 0x6B, 0x32, 0x20, 0xD8, 0x0C, 15, 9, 0}, /* GD25Q127C and GD25Q128C*/ {0xc84019, 128, 8, 0x13, 0x12, 0x6C, 0x3E, 0x21, 0xDC, 0x1C, 16, 6, 0}, /* GD25Q256B/C */ {0xc84020, 128, 8, 0x13, 0x12, 0x6C, 0x3E, 0x21, 0xDC, 0x1C, 17, 6, 0}, /* GD25Q512MC */ {0xef4017, 128, 8, 0x13, 0x02, 0x6B, 0x32, 0x20, 0xD8, 0x0C, 14, 9, 0}, /* 25Q64JVSSIQ */ {0xef4018, 128, 8, 0x03, 0x02, 0x6B, 0x32, 0x20, 0xD8, 0x0C, 15, 9, 0}, /* 25Q128FV and 25Q128JV*/ {0xef4019, 128, 8, 0x13, 0x02, 0x6C, 0x32, 0x20, 0xD8, 0x3C, 16, 9, 0}, /* 25Q256FV */ {0xef6017, 128, 8, 0x13, 0x02, 0x6B, 0x32, 0x20, 0xD8, 0x0C, 14, 9, 0}, /* 25Q64FWSSIG */ {0xc22018, 128, 8, 0x03, 0x02, 0x6B, 0x38, 0x20, 0xD8, 0x00, 15, 6, 0}, /* MX25L12835E/F */ {0xc22019, 128, 8, 0x03, 0x02, 0x6B, 0x38, 0x20, 0xD8, 0x30, 16, 6, 0}, /* MX25L25635E/F */ {0x207017, 128, 8, 0x03, 0x02, 0x6B, 0x32, 0x20, 0xD8, 0x0C, 14, 0, 0}, /* XM25QH64A */ {0x207018, 128, 8, 0x03, 0x02, 0x6B, 0x32, 0x20, 0xD8, 0x0C, 15, 0, 0}, /* XM25QH128A */ {0x1c7018, 128, 8, 0x03, 0x02, 0x6B, 0x32, 0x20, 0xD8, 0x0C, 15, 0, 0}, /* EN25QH128A */ //added by lhb, 20210510 {0x0b4019, 128, 8, 0x13, 0x02, 0x6C, 0x32, 0x20, 0xD8, 0x3C, 16, 9, 0}, /* XT25F256B */ };
-
增加flash Manufactory ID宏定义
在sfc_nor.h中
/*Manufactory ID*/ #define MID_WINBOND 0xEF #define MID_GIGADEV 0xC8 #define MID_MICRON 0x2C #define MID_MACRONIX 0xC2 #define MID_SPANSION 0x01 #define MID_EON 0x1C #define MID_ST 0x20 //added by lhb, 20210510 #define MID_XTX 0x0B
-
SNOR_EnableQE/SNOR_DisableQE参照MID_WINBOND增加MID_XTX判断
在sfc_nor.c中
static int32 SNOR_EnableQE(void) { int32 ret = SFC_OK; int reg_index; int bit_offset; uint8 status; pSFNOR_DEV pDev = &SFNorDev; if (pDev->Manufacturer == MID_GIGADEV || pDev->Manufacturer == MID_XTX || pDev->Manufacturer == MID_WINBOND) { reg_index = pDev->QE_bits >> 3; bit_offset = pDev->QE_bits & 0x7; ret = SNOR_ReadStatus(reg_index, &status); if (ret != SFC_OK) return ret; if (status & ( 1 << bit_offset)) //is QE bit set return SFC_OK; status |= ( 1 << bit_offset); return pDev->WriteStatus(reg_index, status); } return ret; } static int32 SNOR_DisableQE(void) { int32 ret = SFC_OK; int reg_index; int bit_offset; uint8 status; pSFNOR_DEV pDev = &SFNorDev; if (pDev->Manufacturer == MID_GIGADEV || pDev->Manufacturer == MID_XTX || pDev->Manufacturer == MID_WINBOND) { reg_index = pDev->QE_bits >> 3; bit_offset = pDev->QE_bits & 0x7; ret = SNOR_ReadStatus(reg_index, &status); if (ret != SFC_OK) return ret; if (!(status & ( 1 << bit_offset))) return SFC_OK; status &= ~( 1 << bit_offset); return pDev->WriteStatus(reg_index, status); } return ret; }
二、修改的文件
kernel:
kernel/drivers/rkflash/sfc_nor.c
kernel/drivers/rkflash/sfc_nor.h
loader:
loader/src/common/sfc/sfc_nor.c
loader/src/common/sfc/sfc_nor.h
rkdsp.bin:
该固件用来从flash分区加载nn.bin模型文件到内存。
通过16进制查看工具,修改flash table中的原有flash参数项为XT25F256B的参数,替换原来支持的flash。
然后用build目录下的build_dsp.sh生成dsp_fw.bin文件。