1.概述
本文主要講述了Linux的QSPI驅(qū)動(dòng)移植方法及驗(yàn)證方法。
示例Linux內(nèi)核版本:6.8.2。硬件平臺(tái):ARM SOC。
2.原理
Linux內(nèi)核的SPI驅(qū)動(dòng)子系統(tǒng)集成了主流廠家的QSPI控制器驅(qū)動(dòng),驅(qū)動(dòng)源碼位于目錄linux-6.2.8/drivers/spi。本文以移植Cadence QSPI控制器驅(qū)動(dòng)為例,通過使能CONFIG_SPI_CADENCE_QUADSPI開關(guān),即可將Cadence QSPI控制器驅(qū)動(dòng)spi-cadence-quadspi.c編譯進(jìn)內(nèi)核。在設(shè)備樹,添加QSPI控制器設(shè)備節(jié)點(diǎn)及其Flash設(shè)備子節(jié)點(diǎn),以加載相應(yīng)的驅(qū)動(dòng)。
Linux內(nèi)核的MTD子系統(tǒng)是一個(gè)抽象層,提供統(tǒng)一的API對(duì)Flash設(shè)備進(jìn)行訪問操作。Linux內(nèi)核提供了MTD tests模塊工具,可以用來(lái)對(duì)Flash進(jìn)行操作,完成QSPI設(shè)備驅(qū)動(dòng)的測(cè)試和驗(yàn)證。
3.移植方法
(1)配置內(nèi)核
圖1 Cadence QSPI驅(qū)動(dòng)配置選項(xiàng)說明
(2)設(shè)備樹添加QSPI控制器和Flash節(jié)點(diǎn)
在設(shè)備樹添加Cadence QSPI控制器節(jié)點(diǎn)及其Flash節(jié)點(diǎn)。添加方法可參考如下文件:
./Documentation/devicetree/bindings/spi/cdns,qspi-nor.yaml
./Documentation/devicetree/bindings/spi/cdns,qspi-nor-peripheral-props.yaml
4.驗(yàn)證方法
(1)編譯MTD tests工具
為編譯MTD tests工具,應(yīng)配置內(nèi)核,使能CONFIG_MTD_TESTS,以編譯出MTD tests模塊。
圖2 MTD tests工具配置選項(xiàng)說明
MTD tests模塊隨內(nèi)核一起完成編譯,編譯完成后在linux-6.2.8/drivers/mtd/tests下生成*.ko測(cè)試模塊。其中,mtd_stresstest.ko模塊內(nèi)包含了擦除、讀、寫等操作,選取該模塊作為測(cè)試工具。mtd_stresstest.ko對(duì)應(yīng)的源碼為stresstest.c,原始代碼中讀、寫操作通過do_operation()函數(shù)隨機(jī)選擇,do_read()函數(shù)包括讀操作,do_write()函數(shù)包括擦除和寫操作,操作的目標(biāo)扇區(qū)是隨機(jī)選擇的,為便于測(cè)試,可在編譯前手動(dòng)修改操作的目標(biāo)扇區(qū)號(hào),即變量int eb值。
(2)使用mtd_stresstest.ko測(cè)試
內(nèi)核啟動(dòng)后,通過查看,可以發(fā)現(xiàn)生成了/sys/class/mtd/mtd0設(shè)備,即可使用mtd_stresstest.ko通過mtd0設(shè)備對(duì)Flash進(jìn)行擦除、讀、寫操作,以測(cè)試驅(qū)動(dòng)功能的正確性。加載測(cè)試模塊的命令如下,表示測(cè)試的目標(biāo)設(shè)備為mtd0,次數(shù)為1。
insmod mtd_stresstest.ko dev=0 count=1
-
控制器
+關(guān)注
關(guān)注
112文章
16447瀏覽量
179461 -
Linux
+關(guān)注
關(guān)注
87文章
11345瀏覽量
210400 -
移植
+關(guān)注
關(guān)注
1文章
383瀏覽量
28194 -
SPI
+關(guān)注
關(guān)注
17文章
1722瀏覽量
92129 -
QSPI
+關(guān)注
關(guān)注
0文章
42瀏覽量
12248
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
RTOS和Linux中的內(nèi)存映射及移植方法
stm32移植linux方法
快速驗(yàn)證移植QSPI的操作方法
驗(yàn)證方法簡(jiǎn)介
《Linux設(shè)備驅(qū)動(dòng)開發(fā)詳解》第23章、Linux設(shè)備驅(qū)動(dòng)的移植
![《<b class='flag-5'>Linux</b>設(shè)備<b class='flag-5'>驅(qū)動(dòng)</b>開發(fā)詳解》第23章、<b class='flag-5'>Linux</b>設(shè)備<b class='flag-5'>驅(qū)動(dòng)</b>的<b class='flag-5'>移植</b>](https://file.elecfans.com/web2/M00/4A/29/pYYBAGKhvKOAcZKxAAAdgD4KSKQ561.png)
如何將SQLite移植到linux的方法程序說明概述
U-boot的QSPI驅(qū)動(dòng)移植方法及驗(yàn)證方法
![U-boot的<b class='flag-5'>QSPI</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>移植</b><b class='flag-5'>方法</b>及<b class='flag-5'>驗(yàn)證</b><b class='flag-5'>方法</b>](https://file.elecfans.com/web2/M00/9F/06/poYBAGQ4uJyAR2S0AAFCsQC4t40453.png)
U-boot的SPLASH_SCREEN(啟動(dòng)畫面)驅(qū)動(dòng)移植方法
![U-boot的SPLASH_SCREEN(啟動(dòng)畫面)<b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>移植</b><b class='flag-5'>方法</b>](https://file.elecfans.com/web2/M00/9F/87/pYYBAGQ4uauAMTOLAAFqram3zoA825.png)
Linux中常用的6種SSH身份驗(yàn)證方法
Linux的PWM驅(qū)動(dòng)框架及實(shí)現(xiàn)方法
![<b class='flag-5'>Linux</b>的PWM<b class='flag-5'>驅(qū)動(dòng)</b>框架及實(shí)現(xiàn)<b class='flag-5'>方法</b>](https://file.elecfans.com/web2/M00/A5/12/poYBAGRgi-OAAtMoAAEmE9a1D2c384.png)
Linux驅(qū)動(dòng)移植 Linux系統(tǒng)架構(gòu)優(yōu)點(diǎn)
![<b class='flag-5'>Linux</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>移植</b> <b class='flag-5'>Linux</b>系統(tǒng)架構(gòu)優(yōu)點(diǎn)](https://file1.elecfans.com/web2/M00/8D/FE/wKgaomTCMl6Ac6BIAAUQu3YjnY0617.jpg)
評(píng)論