1)参考移植手册完成,spi_nor U-boot下的移植
也就是说
fmc_spi_nor_ids.c里面主要添加nor flash的id
fmc100_spi_general.c是大部分器件通用的nor flash驱动代码
fmc100_spi_gd25qxxx.c、fmc100_spi_mx25l25635e.c、fmc100_spi_s25fl256s.c 等c文件,是特殊flash,具体的驱动源码
像图中圈的一样
1.2新增一颗spi_nor_flash
hi3516cv610移植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 ID | EF 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, }, //----