|
|
SDK中IDS表存储着U-Boot的Flash驱动对其支持的所有Flash芯片的硬件信息。当新增Flash
芯片时,U-Boot的Flash驱动需要在IDS表增加其对应的Flash信息,才能完成该Flash
芯片的初始化
1、patch-u-boot-2020.01\drivers\mtd\nand\raw\nand_ids.c在该文件中的IDS表增加对应flash信息。
2、示例:
Nandflash适配:
{"S34ML02G1", //Flash的名称
{ .id = {0x01, 0xDA, 0x90, 0x95, 0x44} }, //Flash芯片手册对应ID
.pagesize = SZ_2K, .chipsize = SZ_256, .erasesize = SZ_128K, //页大小、flash大小、可擦除大小
.options = 0, .id_len = 5, .oobsize = 64, NAND_ECC_INFO(8, SZ_1K), //UBoot配置、flash芯片ID长度、OOB大小、ECC配置
.nand_flash_type = HI_NAND_E } //flash类型
}
SPI Nandflash适配:
{"GD5F2GM7UEYIGR",
{ .id = { 0xC8, 0x92, 0xC8, 0x92, 0xC8, 0xFF, 0xFF, 0xFF } },
.pagesize = SZ_2K, .chipsize = SZ_256, .erasesize = SZ_128K,
.options = 0, .id_len = 5, .oobsize = 128, NAND_ECC_INFO(8, SZ_1K),
.nand_flash_type = HI_SPI_NAND_E,
.read_addr_cycle = HI_NAND_ADDR_CYCLE_5_E, //读指令操作的地址字节数
.write_addr_cycle = HI_NAND_ADDR_CYCLE_5_E, //写指令操作的地址字节数
.erase_addr_cycle = HI_NAND_ADDR_CYCLE_3_E, //擦除指令操作的地址字节数
.spi_nand_rw_cfg = { //SPI Nand读写模式、指
令、空周期的配置
HI_SPI_NAND_QUADIN_QUADOUT_E,
HI_SPI_NAND_CMD_READ_QUAD,
HI_SPI_NAND_STD_READ_DUMMY_NUM,
HI_SPI_NAND_QUADIN_QUADOUT_E,
HI_SPI_NAND_CMD_WRITE_QUAD,
HI_SPI_NAND_WRITE_DUMMY_NUM,
{0}
},
.hi_options = HI_NAND_INNER_ECC_DIS, //是否开启Flash芯片内置ECC的配置
.hi_protect_feature_reg = 0x0, //flash芯片对应的PROTECT寄存器,在初始化阶段进行配置
.hi_config_feature_reg = 0x1, //Flash芯片对应的CONFIG寄存器,在初始化阶段进行配置
.hi_status_feature_reg = 0x0, //Flash芯片对应的STATUS寄存器,在初始化阶段进行配置
{0}
}
3、适配完,如果flash大小有改变则需修改文件/home/locad/trunkey/chip/luofu/dts/luofu.h中#define HI_MTD_SIZE SZ_256M大小,然后编译即可。
4、查看分区表
U-Boot下查看Flash分区:
mtd list
内核下查看Flash分区:
cat /proc/mtd |
|