1、概述
本文主要讲述了U-boot的QSPI驱动移植方法及验证方法。在产品调试阶段,U-boot的driver子系统包含了丰富的外设驱动,方便外设功能验证与调试。
示例U-boot版本:2022.10。硬件平台:ARM SOC。
2、原理
U-boot的SPI驱动子系统集成了主流厂家的SPI和QSPI控制器驱动,驱动源码位于目录u-boot-2022.10/drivers/spi。
本文以移植Cadence QSPI控制器驱动为例,其对应的驱动程序位于./drivers/spi目录下,无需手动添加,只需使能相应的编译配置开关即可;同时需要添加Cadence QSPI控制器及其Flash的设备树,对必要的参数进行配置。
U-boot的命令子系统包含了众多测试命令子集,其中sf命令集用来对SPI接口的Flash存储器进行功能测试,完成检测、擦除、读、写等常用操作。
3、移植方法
(1)编译配置
使能CONFIG_CADENCE_QSPI,以添加Cadence QSPI驱动;同时设置QPSI参考时钟频率值,以100MHz为例。这样./drivers/spi目录下的cadence_qspi.c和cadence_qspi_apb.c就被使能编译了。
图1. Cadence QSPI驱动配置
(2)设备树添加QSPI控制器和Flash节点
在设备树添加Cadence QSPI控制器节点及其Flash节点。添加方法可参考如下文件:
./doc/device-tree-bindings/spi/spi-cadence.txt
4、验证方法
(1)编译sf测试工具
为编译sf测试工具,应配置U-boot,使能CONFIG_CMD_SF。
图2. sf测试工具配置
(2)使用sf命令测试
测试方法及结果如下:
Flash检测
cmd>sf probe
SF: Detected gd25q127c with page size 256 Bytes, erase size 4 KiB, total 16 MiB
Flash擦除
cmd>sf erase 0 8000
SF: 32768 bytes @ 0x0 Erased: OK
Flash写入
cmd>sf write 50000000 0 8000
device 0 offset 0x0, size 0x8000
SF: 32768 bytes @ 0x0 Written: OK
Flash读取
cmd>sf read 60000000 0 8000
device 0 offset 0x0, size 0x8000
spi_flash_std_read: offset:0x0,len:0x8000 ,_read func: 00000000bffc2b24
SF: 32768 bytes @ 0x0 Read: OK
END
→点关注,不迷路←
文章引用微信公众号"嵌入式微处理器",如有侵权,请联系管理员删除!