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文章
9045瀏覽量
366809 -
控制器
+關注
關注
112文章
16197瀏覽量
177398 -
移植
+關注
關注
1文章
377瀏覽量
28108 -
u-boot
+關注
關注
0文章
120瀏覽量
38199 -
QSPI
+關注
關注
0文章
41瀏覽量
12176
發布評論請先 登錄
相關推薦
評論