概述
基于上一篇的spi 驅動的基礎上【S32K146 RT-Thread】之 使用SFUD 組件驅動spi flash,我們已經實現了spi10設備驅動,我們使用sfud組件來驅動spi flash。
SFUD 是一款開源的串行 SPI Flash 通用驅動庫。由于現有市面的串行 Flash 種類居多,各個 Flash 的規格及命令存在差異, SFUD 就是為了解決這些 Flash 的差異現狀而設計,讓我們的產品能夠支持不同品牌及規格的 Flash,提高了涉及到 Flash 功能的軟件的可重用性及可擴展性,同時也可以規避 Flash 缺貨或停產給產品所帶來的風險。
SFUD 驅動庫是個github 的開源項目rt-thread 系統內已經集成了該軟件包,我們只需要開啟即可使用。
JESD216 SFDP標準產生的背景
隨著串行Flash市場不斷的擴張,串行Flash的指令、功能和特性也日趨增多,而且各個廠商在串行Flash器件上的功能和特性也無法完全一致。例如,在扇區擦除功能上,支持4kB、32kB、64kB的擦除操作雖然分別有相應的指令,但是不同廠商的器件還是會存在一些指令和功能的差異。為了準確地完成系統的兼容性測試或者是考慮到容量的升級,開發和設計人員需要詳細閱讀每一份串行Flash的產品規范,了解引腳的分布和定義是否一致,操作所需要用到的功能指令是否完全兼容,從而對底層設備驅動軟件做相應的增補和修改,甚至改動到硬件,這無疑給項目的設計、維護和更新帶來一些不便。
因此,串行Flash器件迫切需要一個統一規范的功能參數表,可以讓開發和設計人員明確地讀取到每一個所使用串行Flash的功能和參數特性。JEDEC的新規范JESD216 SFDP就是在這樣的一個市場環境下孕育而生的。
以下是SFDP heaed結構軟件可以中讀取flash的參數信息進行使用
![ae314e82-a761-11ef-8084-92fbcf53809c.jpg](https://file1.elecfans.com//web2/M00/0C/17/wKgZomc-puKACPxaAAFsIPUZN-c537.jpg)
![ae3b16a6-a761-11ef-8084-92fbcf53809c.jpg](https://file1.elecfans.com//web2/M00/0C/17/wKgZomc-puKAUJ8xAAD9y-W5fTg520.jpg)
使用SFUD 驅動flash
menuconfig 開啟sfud
![ae45c36c-a761-11ef-8084-92fbcf53809c.jpg](https://file1.elecfans.com//web2/M00/0C/17/wKgZomc-puKAMBAGAAEE0CzneFg511.jpg)
使用測試命令探測spiflash 發現已經正常探測到16MB的flash。
msh />sf probe spi10[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud.c:871) The flash device manufacturer ID is 0xC2, memo[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:132) Check SFDP header is OK. The reversion is[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:175) Check JEDEC basic flash parameter header[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:203) JEDEC basic flash parameter table info:[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:204) MSB-LSB 3 2 1 0[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:207) [0001] 0xFF 0xF1 0x20 0xE5[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:207) [0002] 0x07 0xFF 0xFF 0xFF[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:207) [0003] 0x6B 0x08 0xEB 0x44[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:207) [0004] 0xBB 0x04 0x3B 0x08[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:207) [0005] 0xFF 0xFF 0xFF 0xFE[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:207) [0006] 0xFF 0x00 0xFF 0xFF[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:207) [0007] 0xEB 0x44 0xFF 0xFF[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:207) [0008] 0x52 0x0F 0x20 0x0C[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:207) [0009] 0xFF 0x00 0xD8 0x10[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:215) 4 KB Erase is supported throughout the de[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:234) Write granularity is 64 bytes or larger.[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:245) Target flash status register is non-volat[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:271) 3-Byte only addressing.[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:305) Capacity is 16777216 Bytes.[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:312) Flash device supports 4KB block erase. Co[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:312) Flash device supports 32KB block erase. C[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud_sfdp.c:312) Flash device supports 64KB block erase. C[I/SFUD] Found a Macronix flash chip. Size is 16777216 bytes.[D/SFUD] (D:\work\andeyqi_rtthread\rt-thread\components\drivers\spi\sfud\src\sfud.c:849) Flash device reset success.[I/SFUD] sf_cmd flash device initialized successfully.[I/SFUD] Probe SPI flash sf_cmd by SPI device spi10 success.
從log 讀取的Parameter Table (0): JEDEC Flash Parameter Tables和芯片手冊的描述是匹配的。
![ae49efbe-a761-11ef-8084-92fbcf53809c.png](https://file1.elecfans.com//web2/M00/0C/17/wKgZomc-puKAIhV8AAjrF03Vx9Y112.png)
![ae4f0b98-a761-11ef-8084-92fbcf53809c.jpg](https://file1.elecfans.com//web2/M00/0C/17/wKgZomc-puKAGVc1AADZCBkiVOo325.jpg)
使用測試命令擦除讀寫驗證可以正常操作flash
![ae57209e-a761-11ef-8084-92fbcf53809c.jpg](https://file1.elecfans.com//web2/M00/0C/17/wKgZomc-puOAP78RAAHPDDbOt7w307.jpg)
-
FlaSh
+關注
關注
10文章
1638瀏覽量
148181 -
SPI
+關注
關注
17文章
1711瀏覽量
91744 -
RT-Thread
+關注
關注
31文章
1293瀏覽量
40229 -
SFUD
+關注
關注
0文章
5瀏覽量
1072
發布評論請先 登錄
相關推薦
恩智浦FRDM-MCXA153 RT-Thread實踐指南 實現和優化RT-Thread的SPI驅動
![恩智浦FRDM-MCXA153 <b class='flag-5'>RT-Thread</b>實踐指南 實現和優化<b class='flag-5'>RT-Thread</b>的<b class='flag-5'>SPI</b><b class='flag-5'>驅動</b>](https://file1.elecfans.com/web1/M00/F5/05/wKgaoWc1S7mAf9wfAAAjGsoltM0762.png)
RT-Thread上CAN實踐
![<b class='flag-5'>RT-Thread</b>上CAN實踐](https://file1.elecfans.com/web2/M00/C4/8A/wKgZomX0EhWACv8DAAAUet8ikhs451.png)
基于NXP MCXA153 MCU實現RT-Thread的MTD NOR Flash驅動
![基于NXP MCXA153 MCU實現<b class='flag-5'>RT-Thread</b>的MTD NOR <b class='flag-5'>Flash</b><b class='flag-5'>驅動</b>](https://file1.elecfans.com/web2/M00/0B/35/wKgZomcu-yOACfFsAAA378Ad6Fs588.png)
2024 RT-Thread全球巡回 線下培訓火熱來襲!
![2024 <b class='flag-5'>RT-Thread</b>全球巡回 線下培訓火熱來襲!](https://file1.elecfans.com/web2/M00/C4/8A/wKgZomX0EhWACv8DAAAUet8ikhs451.png)
實時操作系統之RT-Thread及FreeRTOS
![實時操作系統<b class='flag-5'>之</b><b class='flag-5'>RT-Thread</b>及FreeRTOS](https://file.elecfans.com/web2/M00/20/B3/pYYBAGGfNNmAK-PZAAJsGM5Cgk0227.jpg)
6月6日杭州站RT-Thread線下workshop,探索RT-Thread混合部署新模式!
![6月6日杭州站<b class='flag-5'>RT-Thread</b>線下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式!](https://file1.elecfans.com/web2/M00/C4/8A/wKgZomX0EhWACv8DAAAUet8ikhs451.png)
【Vision Board創客營連載體驗】RA8D1 Vision Board 實現 FAL 同時調用片上以及外掛 Flash
4月25日北京站RT-Thread線下workshop,探索RT-Thread混合部署新模式
![4月25日北京站<b class='flag-5'>RT-Thread</b>線下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式](https://file1.elecfans.com/web2/M00/C4/8A/wKgZomX0EhWACv8DAAAUet8ikhs451.png)
4月10日深圳場RT-Thread線下workshop,探索RT-Thread混合部署新模式!
![4月10日深圳場<b class='flag-5'>RT-Thread</b>線下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式!](https://file1.elecfans.com/web2/M00/C6/D0/wKgaomYDlJyAKUBmAAAgR-TqYwc187.png)
4月10日深圳場RT-Thread線下workshop,探索RT-Thread混合部署新模式!
![4月10日深圳場<b class='flag-5'>RT-Thread</b>線下workshop,探索<b class='flag-5'>RT-Thread</b>混合部署新模式!](https://file1.elecfans.com/web2/M00/C4/8A/wKgZomX0EhWACv8DAAAUet8ikhs451.png)
恩智浦半導體正式加入RT-Thread全球合作伙伴計劃!
![恩智浦半導體正式加入<b class='flag-5'>RT-Thread</b>全球合作伙伴計劃!](https://file1.elecfans.com/web2/M00/C5/31/wKgaomXyY_eAHGhqAAAkpBZI8PE901.png)
《RT-Thread設備驅動開發指南》基礎篇--以先楫bsp的hwtimer設備為例
![《<b class='flag-5'>RT-Thread</b>設備<b class='flag-5'>驅動</b>開發指南》基礎篇--以先楫bsp的hwtimer設備為例](https://file.elecfans.com/web2/M00/37/D7/pYYBAGI9l9uAOwALAAAmFmqVYdg094.png)
RT-Thread設備驅動開發指南基礎篇—以先楫bsp的hwtimer設備為例
![<b class='flag-5'>RT-Thread</b>設備<b class='flag-5'>驅動</b>開發指南基礎篇—以先楫bsp的hwtimer設備為例](https://file1.elecfans.com/web2/M00/C1/40/wKgaomXUXOGAMhesAAAk3OUcwHA076.png)
評論