参考移植手册完成,spi_nor U-boot下的移植)
1)参考移植手册完成,spi_nor U-boot下的移植也就是说fmc_spi_nor_ids.c里面主要添加nor flash的idfmc100_spi_general.c是大部分器件通用的nor flash驱动代码fmc100_spi_gd25qxxx.c、fmc100_spi_mx25l25635e.c、fmc100_spi_s25fl256s.c 等c文件,是特殊flash,具体的驱动源码像图中圈的一样1.2新增一颗spi_nor_flashhi3516cv610移植flash参考手册先跟着手册完成步骤1、2步骤1在fmc_spi_nor_ids.c文件中,添加P25Q128HA的id这里我们有买hi3516cv610的demo板,所以先找到 demo的nor_flash型号nor_flash: winbond25Q128JVSQ进行模仿添加找了一圈,发现没有该flash,但是有 W25Q128JVSIM,则进行模仿添加W25Q128JVSIM flash相关信息:项目内容芯片型号W25Q128JVSIM制造商Winbond Electronics Corporation容量128 Mbit = 16 MB (兆字节)接口类型SPI (Serial Peripheral Interface)工作电压2.7V ~ 3.6V最大时钟频率104 MHz(标准 SPI),133 MHz(Fast Read Quad I/O)支持模式SPI / Dual SPI / Quad SPI(4线)存储结构64 个 block(每个 64KB),共 2048 个 4KB 的 sector擦除粒度Sector (4KB), Block (32KB/64KB), 全片擦除写入方式Page Program(最多每次写 256 字节)封装类型SOIC-8 (SOP-8, 208mil)数据保持时间 20 年擦写次数≥ 100,000 次JEDEC IDEF 40 18(可用于识别芯片)Winbond 的命名规则中每个字母有含义:W25Q:Winbond 的 SPI NOR Flash 系列128:128 Mbit(16 MB)综上:W25Q128JVSIM与 P25Q128HA类似读py25q128ha手册,80页可知flash3个id为0x85 0x20 0x18注:从这里可以发现hi3516cv610移植flash手册有一处错误fmc_spi_nor_ids.c添加两处内容 // 1 /*** 匹配完接口信息,匹配器件相关功能函数钩子spi_driver_puya (结构体struct spi_drv) **/ #include "fmc100_spi_puya.c" static struct spi_drv spi_driver_puya = { .wait_ready = spi_general_wait_ready, .write_enable = spi_general_write_enable, .entry_4addr = spi_general_entry_4addr, .qe_enable = spi_puya_qe_enable, // 对应的 }; //2 ////puya25q128HA //P25Q128HA //size=16MB { "P25Q128HA", {0x85, 0x20, 0x18}, 3, _16M, _64K, 3, { read_std(0, INFINITE, 33), /* 33MHz */ read_fast(1, INFINITE, 104), /* 104MHz */ read_dual(1, INFINITE, 104), /* 104MHz */ read_quad(1, INFINITE, /* 70 */80), /* 80MHz */ 0 }, { write_std(0, 256, 104), /* 104MHz */ write_quad(0, 256, /* 70 */ 80), /* 80MHz */ 0 }, { erase_sector_64k(0, _64K, 104), /* 104MHz */ 0 }, spi_driver_puya, }, //----