U-boot驱动之QSPI驱动移植

新闻资讯   2023-07-12 13:17   40   0  

1、概述

本文主要讲述了U-bootQSPI驱动移植方法及验证方法。在产品调试阶段,U-bootdriver子系统包含了丰富的外设驱动,方便外设功能验证与调试。

示例U-boot版本:2022.10。硬件平台:ARM SOC

2、原理

U-bootSPI驱动子系统集成了主流厂家的SPIQSPI控制器驱动,驱动源码位于目录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.ccadence_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

来源:嵌入式系统研发

版权归原作者所有,如有侵权,请联系删除。

推荐阅读
被一个gpio口搞死的一天
为什么Keil比IAR更受欢迎?
分享几个不错的嵌入式开源项目

→点关注,不迷路←

文章引用微信公众号"嵌入式微处理器",如有侵权,请联系管理员删除!

博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。