精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

XIP模式的littlefs_shell代碼實現

LI1323882 ? 來源:MCU頻道 ? 作者:MCU頻道 ? 2022-11-23 10:27 ? 次閱讀

寫在前面

在實際應用中,通常會使用Serial Nor flash作為RT系列MCU的代碼儲存設備,如QSPI,HyperFlash等,這些設備都支持XIP特性,而這些Flash除了儲存代碼外,剩下的空間可以用于存儲數據,比如設備參數,log信息,并能用文件系統來管理,所以這次小編就分享一個可運行在QSPI的Littlefs的例程,可用于管理QSPI的數據區域。

b177aeea-6a48-11ed-8abf-dac502259ad0.pngFig1

測試環境介紹

硬件平臺:MIMXRT1060-EVKB;

b19a4fb8-6a48-11ed-8abf-dac502259ad0.pngFig2 MIMXRT1060-EVKB

IDE:MCUXpresso;

移植步驟

我們直接以SDK中的littlefs_shell工程作為模板來避免重復造輪子,由于littlefs_shell工程是鏈接到RAM中,所以我們需要對它進行改造。

添加Flash項

b1e61c54-6a48-11ed-8abf-dac502259ad0.pngFig3 添加Flash

添加FDCB
littlefs_shell工程默認是鏈接到RAM中,所以需要手動添加FDCB,具體如下所示。

在工程中添加xip(來自于SDK library)

b20b43f8-6a48-11ed-8abf-dac502259ad0.pngFig4

Settings->Preprocessor中,添加XIP_EXTERNAL_FLASH=1和XIP_BOOT_HEADER_ENABLE=1

b2213bcc-6a48-11ed-8abf-dac502259ad0.pngFig5

函數重定位
Fig6為littlefs_shell工程的代碼分層圖,其中結構體lfs_config包含塊設備的各類操作接口函數及各種參數配置,而接口函數需要調用FlexSPI驅動函數才能真正實現QSPI的讀寫,刪除等操作。

b242c5e4-6a48-11ed-8abf-dac502259ad0.pngFig6 代碼分層

由于代碼本身就是在QSPI中運行,需要修改linker file把塊設備的各類操作接口函數和FlexSPI驅動函數重定位到RAM中運行。

b2713032-6a48-11ed-8abf-dac502259ad0.pngb28d9e02-6a48-11ed-8abf-dac502259ad0.pngFig7

修改Flexspi clock
littlefs_shell工程中,Flex_SPI時鐘會被重新設置,這部分也需要進行重定位處理的,不然會觸發hardfalut,當然,你可以在BOARD_InitBootClocks()中,就提前設置好想要的FlexSPI時鐘頻率,避免二次設置。

CLOCK_InitUsb1Pll(&g_ccmConfigUsbPll);
CLOCK_InitUsb1Pfd(kCLOCK_Pfd0,24);/*SetPLL3PFD0clock360MHZ.*/
CLOCK_SetMux(kCLOCK_FlexspiMux,0x3);/*ChoosePLL3PFD0clockasflexspisourceclock.*/
CLOCK_SetDiv(kCLOCK_FlexspiDiv,2);/*flexspiclock120M.*/

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    146

    文章

    16667

    瀏覽量

    347806
  • 代碼
    +關注

    關注

    30

    文章

    4671

    瀏覽量

    67770
  • Shell
    +關注

    關注

    1

    文章

    359

    瀏覽量

    23192
  • QSPI
    +關注

    關注

    0

    文章

    41

    瀏覽量

    12132

原文標題:XIP模式的littlefs_shell代碼實現

文章出處:【微信號:MCU頻道,微信公眾號:MCU頻道】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    shell是什么?shell實現原理分析基于MM32 MCU的shell腳本源碼

    在前兩節中,我們講解了如何在MM32 MCU上使用shell來輔助開發,分別介紹的是通過串口方式和J-Link RTT方式的shell,本次課程我們分析源碼來講解shell實現原理。
    發表于 12-02 15:58 ?2403次閱讀

    Windows CE 5.0 mult-xip bin模式實現

    模式實現 XIP是什么,微軟說: Execute-in-place (XIP) regions are areas where an application can execute c
    發表于 04-15 14:22

    講解shell實現原理

    在前兩節中,我們講解了如何在MM32 MCU上使用shell來輔助開發,分別介紹的是通過串口方式和J-Link RTT方式的shell,本次課程我們分析源碼來講解shell實現原理。軟
    發表于 11-26 08:30

    如何實現XIP方式的flash代碼啟動?

    如何實現XIP方式的flash代碼啟動?
    發表于 11-29 06:06

    littlefs文件系統掉電保護是如何實現

    文檔: 在 STM32L4 上應用 littlefs 文件系統文檔上說little fs支持 擦寫均衡 和 掉電保護;擦寫均衡可以理解,通過打包幾條寫入,由寫入幾次變一次,從而增大flash壽命;這樣要寫入的數據臨時保存在ram中,掉電不就沒了,這個掉電保護是如果實現的,
    發表于 08-26 14:15

    如何將SPIFFS代碼移植到LittleFS?

    有沒有人有關于將 SPIFFS 代碼移植到 LittleFS 的過程的任何提示或教程鏈接? 我做了基準測試,很高興看到我的代碼如何在新文件系統上運行,但它不是一個直接的替代品(我試過)所以任何幫助
    發表于 05-16 07:15

    請問N101 flashxip模式運行的是兩線XIP

    修改,把QSPI FLASH掛上去運行了,可以進行正常printf,調出來波形進行觀測,發現跑的是兩線模式XIP。 是目前給的QSPI的代碼只能運行兩線XIP么?還是需要進行額外的配
    發表于 08-12 08:18

    基于Vivado/SDK 2018.3的XIP參考設計

    Without External Memory,把代碼和只讀數據放在QSPI Flash中運行程序,這就是execute in place (XIP)。 上述XIP參考設計工作正常,但是只更新到了Vivado
    的頭像 發表于 10-09 10:09 ?3167次閱讀

    STM32CubeIDE XiP 和 BootROM介紹, XiP外部內存QSPI FLASH執行用戶代碼

    STM32CubeIDE XiP 和 BootROM介紹, XiP外部內存QSPI FLASH執行用戶代碼
    發表于 12-02 09:21 ?14次下載
    STM32CubeIDE <b class='flag-5'>XiP</b> 和 BootROM介紹, <b class='flag-5'>XiP</b>外部內存QSPI FLASH執行用戶<b class='flag-5'>代碼</b>

    用于MCU上的代碼下載與執行的并發并行XIP閃存和SRAM設計

    電子發燒友網站提供《用于MCU上的代碼下載與執行的并發并行XIP閃存和SRAM設計.zip》資料免費下載
    發表于 09-05 17:14 ?3次下載
    用于MCU上的<b class='flag-5'>代碼</b>下載與執行的并發并行<b class='flag-5'>XIP</b>閃存和SRAM設計

    基于OpenHarmony3.1的LittleFS文件系統hdf驅動實現

    ?? ? LittleFS是一個小型的Flash文件系統,它結合日志結構(log-structured)文件系統和COW(copy-on-write)文件系統的思想,以日志結構存儲元數據,以COW結構存儲數據
    的頭像 發表于 09-30 18:32 ?1508次閱讀

    剖析Linux shell 函數實現

    作為一個嵌入式 Linux 工程師,肯定需要編寫 shell 腳本進行一些自動化工作。剛好,我最近就有類似需求——一鍵交叉編譯 DDS。本著“編寫漂亮代碼的原則”,我用到了 **shell 函數** 。
    的頭像 發表于 05-12 10:27 ?432次閱讀
    剖析Linux <b class='flag-5'>shell</b> 函數<b class='flag-5'>實現</b>

    基于OpenHarmony3.1的LittleFS文件系統hdf驅動實現

    一、簡介LittleFS是一個小型的Flash文件系統,它結合日志結構(log-structured)文件系統和COW(copy-on-write)文件系統的思想,以日志結構存儲元數據,以COW結構
    的頭像 發表于 06-22 09:42 ?761次閱讀
    基于OpenHarmony3.1的<b class='flag-5'>LittleFS</b>文件系統hdf驅動<b class='flag-5'>實現</b>

    XIP是什么?XIP運行有什么要求?XIP的優缺點

    XIP是什么?XIP運行有什么要求?XIP的優缺點? XIP是指可執行代碼在存儲器運行的一項技術,其全稱為eXecute In Place。
    的頭像 發表于 10-29 16:28 ?3772次閱讀

    python shell怎么用

    Python Shell是一種交互式解釋器,可以通過命令行直接運行Python代碼。在Shell中,可以輸入一行代碼并立即得到結果,非常適合于測試、嘗試新
    的頭像 發表于 11-29 14:36 ?865次閱讀