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命令测试
以GD25Q127C Flash为例,测试方法及结果如下。
(a)Flash检测
cmd>sf probe
SF: Detected gd25q127c with page size 256 Bytes, erase size 4 KiB, total 16 MiB
(b)Flash擦除
cmd>sf erase 0 8000
SF: 32768 bytes @ 0x0 Erased: OK
(c)Flash写入
cmd>sf write 50000000 0 8000
device 0 offset 0x0, size 0x8000
SF: 32768 bytes @ 0x0 Written: OK
(d)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
-
ARM
+关注
关注
134文章
9097浏览量
367548 -
控制器
+关注
关注
112文章
16361浏览量
178039 -
移植
+关注
关注
1文章
379浏览量
28130 -
u-boot
+关注
关注
0文章
121浏览量
38228 -
QSPI
+关注
关注
0文章
41浏览量
12205
发布评论请先 登录
相关推荐
U-boot的基本介绍
![<b class='flag-5'>U-boot</b>的基本介绍](https://file1.elecfans.com/web2/M00/8C/C4/wKgaomSxDC-AIi1QAACKegMzhAU876.png)
嵌入式系统中U-Boot 基本特点及其移植方法
嵌入式系统中U-Boot 基本特点及其移植方法
嵌入式U-BOOT的启动流程及移植
基于nanoPC-T3的U-Boot移植过程梳理
剖析基于nanoPC-T3的U-Boot移植过程
![剖析基于nanoPC-T3的<b class='flag-5'>U-Boot</b><b class='flag-5'>移植</b>过程](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
U-boot的DPU驱动移植方法
![<b class='flag-5'>U-boot</b>的DPU<b class='flag-5'>驱动</b><b class='flag-5'>移植</b><b class='flag-5'>方法</b>](https://file1.elecfans.com/web2/M00/89/68/wKgZomSCyByAWv4YAAKnpIxOJZM063.jpg)
U-boot驱动SPLASH_SCREEN驱动移植方法
![<b class='flag-5'>U-boot</b><b class='flag-5'>驱动</b>SPLASH_SCREEN<b class='flag-5'>驱动</b><b class='flag-5'>移植</b><b class='flag-5'>方法</b>](https://file1.elecfans.com/web2/M00/89/67/wKgaomSCyQuAFUyoAAK4jneyalY711.jpg)
评论