色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

LittleFS如何在OpenHarmony中使用

科技綠洲 ? 來源:凌智電子 ? 作者:凌智電子 ? 2022-06-21 17:03 ? 次閱讀

一、簡介

LittleFS是一個小型的Flash文件系統,它結合日志結構(log-structured)文件系統和COW(copy-on-write)文件系統的思想,以日志結構存儲元數據,以COW結構存儲數據。這種特殊的存儲方式,使LittleFS具有強大的掉電恢復能力(power-loss resilience)。分配COW數據塊時LittleFS采用了名為統計損耗均衡的動態損耗均衡算法,使Flash設備的壽命得到有效保障。同時LittleFS針對資源緊缺的小型設備進行設計,具有極其有限的ROMRAM占用,并且所有RAM的使用都通過一個可配置的固定大小緩沖區進行分配,不會隨文件系統的擴大占據更多的系統資源。當在一個資源非常緊缺的小型設備上,尋找一個具有掉電恢復能力并支持損耗均衡的Flash文件系統時,LittleFS是一個比較好的選擇。

LittleFS在嵌入式開發過程中經常遇到,但是如何在OpenHarmony中使用呢?本文基于OpenHarmony 3.1Release + 小凌派-RK2206開發板做LittleFS文件系統移植,現將相關移植經驗發布,分享給大家。文中如有問題,請大家幫忙指正。

二、LittleFS移植過程

本文基于OpenHarmony3.1Release做LittleFS移植,小凌派-RK2206開發板內部Flash有8MB大小,其中4~8MB區間為空閑區域。我將4M~5M作為LittleFS文件系統的/data目錄掛載硬件設備。具體移植過程主要如下所示:

1、hcs配置

1.1、hdf.hcs

創建/device/soc/rockchip/rk2206/hcs_config/hdf.hcs文件,具體如下:

poYBAGKxh9KAV7R0AAAfKGEdTBE555.png

如上所述,我將在device_info/device_info.hcs添加LittleFS設備,并在fs/fs_config.hcs添加LittleFS具體信息。

1.2、BUILD.gn

新建//device/soc/rockchip/rk2206/hdf_config/BUILD.gn,具體代碼如下所示:

pYYBAGKxh-eALsRpAAAdaowk4R0605.png

上述代碼將在編譯OpenHarmony3.1Rlease時,將編譯hdf.hcs。

1.3、device_info.hcs

創建/device/soc/rockchip/rk2206/hcs_config/device_info/device_info.hcs文件,在文件中添加LittleFS設備,具體代碼如下所示:

pYYBAGKxh_uAIMrbAAAfH6vonZM900.png

上述代碼表示建設一個設備驅動,該驅動的模塊名稱(即moduleName)為“HDF_PLATFORM_FS_LITTLEFS”,OpenHamrony系統依據該名稱匹配驅動程序;設備匹配信息(即deviceMatchAttr)添加小凌派開發板Flash特殊信息(比如:分區信息,掛載目錄名、起始地址、結束地址等)。

1.4、fs_config.hcs

新建//device/soc/rockchip/rk2206/hdf_config/fs/fs_config.hcs文件,該文件主要寫清楚設備掛載信息,具體如下:

poYBAGKxiBCAdDc0AAA37K1yKFY359.png

如上所述,我將LittleFS移植所需的Flash信息分為4個:

(1)mount_points:掛載目錄。

(2)block_size:Flash的擦除塊大小。

(3)block_start:該掛載Flash區域的起始塊地址,實際Flash地址為block_size * block_start。

(4)block_count:該掛載Flash區域的存儲塊總數。

注意:match_attr所表示的字符串要與device_info.hcs所表示的字符串要一致。

2、hdf驅動

新建//device/soc/rockchip/rk2206/hdf_driver/fs文件夾,文件夾下創建2個文件,具體如下所示:

2.1、fs_driver.c

2.1.1、添加必要的頭文件

poYBAGKxiDCABVD5AAAbTl1wA5M742.png

2.1.2、添加HDF驅動

添加LittleFS匹配的hdf驅動,具體代碼如下所示:

pYYBAGKxiESAKTn6AAAboEs1Kjg088.png

HDF_INIT(g_fsDriverEntry);

其中,moduleName必須要與device_info.hcs中的moduleName保持一致。


2.1.3、fs_driver_init函數

fs_driver_init為hdf驅動加載函數。OpenHarmony啟動時,將根據hcs的編寫匹配對應的驅動程序,并運行fs_driver_init函數。該函數負責:

(1)讀取hcs文件的配置參數。

(2)初始化Flash。

(3)適配LittleFS對應的read、write、erase和sync函數,并適配LittleFS相關參數。

(4)掛載LittleFS。

具體代碼如下所示:

poYBAGKxiGOAanU_AABs5e4xx80975.png

pYYBAGKxiHeAAY6TAAB6HedFbso591.png

poYBAGKxiOeALoC-AAAZx3-MkKE893.png

2.2、BUILD.gn

BUILD.gn負責將fs_driver.c編譯到內核中,具體源代碼如下所示:

pYYBAGKxiPaAaxPtAAAjHo4eYso299.png

3、測試程序

我在main函數中添加一個任務,負責每隔5秒讀寫文件。具體代碼如下所示:

/* 文件系統測試 */

pYYBAGKxiQuACB13AAByhKF1rLI882.png

pYYBAGKxiRiAGkaeAAAwcFVKFCc309.png

三、實驗結果

程序編譯燒寫到開發板后,按下開發板的RESET按鍵,通過串口軟件查看日志如下:

poYBAGKxiTCAE0u5AAAf0omQWnY999.png

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

    關注

    25

    文章

    5059

    瀏覽量

    97542
  • 存儲數據
    +關注

    關注

    0

    文章

    88

    瀏覽量

    14103
  • OpenHarmony
    +關注

    關注

    25

    文章

    3723

    瀏覽量

    16337
收藏 人收藏

    評論

    相關推薦

    何在bash中使用條件語句

    今天我們介紹一下如何在 bash 中使用條件語句。
    的頭像 發表于 12-09 17:27 ?2158次閱讀
    如<b class='flag-5'>何在</b>bash<b class='flag-5'>中使</b>用條件語句

    何在Linux中使用htop命令

    本文介紹如何在 Linux 中使用 htop 命令。
    的頭像 發表于 12-04 14:45 ?2030次閱讀
    如<b class='flag-5'>何在</b>Linux<b class='flag-5'>中使</b>用htop命令

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

    何在OpenHarmony中使用呢?本文基于OpenHarmony 3.1Release + 小凌派-RK2206開發板做LittleFS
    發表于 06-21 08:58

    何在VxWorks系統中使用TrueType字庫

    何在VxWorks系統中使用TrueType字庫
    發表于 03-29 12:25 ?19次下載

    何在java代碼中使用HTTP代理IP

    何在java代碼中使用HTTP代理IP。
    的頭像 發表于 08-04 15:38 ?2231次閱讀

    何在python代碼中使用HTTP代理IP

    何在python代碼中使用HTTP代理IP。
    的頭像 發表于 08-04 15:46 ?1288次閱讀

    何在PHP代碼中使用HTTP代理IP

    何在PHP代碼中使用HTTP代理IP。
    的頭像 發表于 08-04 16:08 ?2452次閱讀

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

    原“HarmonyOS官方合作社區”更名為“電子發燒友開源社區”,更名后 OpenHarmony 依然是我們重點關注且持續共建的開源社區,將持續為大家帶來開源技術內容和資訊。 ? 1 簡介
    的頭像 發表于 09-30 18:32 ?1662次閱讀

    何在Arduino中使用伺服電機

    電子發燒友網站提供《如何在Arduino中使用伺服電機.zip》資料免費下載
    發表于 10-24 09:46 ?3次下載
    如<b class='flag-5'>何在</b>Arduino<b class='flag-5'>中使</b>用伺服電機

    何在Arduino中使用LDR

    電子發燒友網站提供《如何在Arduino中使用LDR.zip》資料免費下載
    發表于 10-31 09:50 ?0次下載
    如<b class='flag-5'>何在</b>Arduino<b class='flag-5'>中使</b>用LDR

    何在Arduino中使用Modbus

    電子發燒友網站提供《如何在Arduino中使用Modbus.zip》資料免費下載
    發表于 11-22 11:21 ?14次下載
    如<b class='flag-5'>何在</b>Arduino<b class='flag-5'>中使</b>用Modbus

    何在Arduino中使用微型伺服

    電子發燒友網站提供《如何在Arduino中使用微型伺服.zip》資料免費下載
    發表于 11-28 09:50 ?1次下載
    如<b class='flag-5'>何在</b>Arduino<b class='flag-5'>中使</b>用微型伺服

    何在OpenHarmony上開發服務卡片

    本篇文章我們將分享如何在 OpenHarmony 上開發服務卡片。
    的頭像 發表于 04-10 11:12 ?1066次閱讀

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

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

    何在測試中使用ChatGPT

    Dimitar Panayotov 在 2023 年 QA Challenge Accepted 大會 上分享了他如何在測試中使用 ChatGPT。
    的頭像 發表于 02-20 13:57 ?765次閱讀
    主站蜘蛛池模板: 国产欧美日韩综合精品一区二区 | 91精品国产高清久久久久久| jizz破处| 国产精品一区二区三区四区五区| 黑人干日本美女| 女人高潮了拔出来了她什么感觉| 特级淫片大乳女子高清视频 | 亚洲色无码播放| MM131亚洲精品久久安然| 国产三级精品三级男人的天堂| 狼好色有你好看| 无码11久岁箩筣| 91麻豆国产精品91久久久| 国产成人永久免费视频| 久久综合色一综合色88| 呜呜别塞了啊抽插| 3acg同人漫画禁图h| 国产露脸150部国语对白| 免费精品一区二区三区AA片| 午夜小视频免费观看| 69久久国产精品热88人妻| 国产三级在线免费| chinesevideoshd性舞| 国产精品线路一线路二| 亚洲AV无码专区国产乱码网站 | 香蕉动漫库| BL低喘贯穿顶弄老师H| 精品国产90后在线观看| 色哦色哦哦色天天综合| 中国女人逼| 国产午夜a理论毛片在线影院| 欧美人与禽ZOZO性伦交视频| 亚洲色图19p| 国产成久久免费精品AV片天堂 | 精品视频网站| 十二月综合缴缴情| 91精品专区| 精选国产AV精选一区二区三区| 色综合色综合久久综合频道| 99久久e免费热视频百度| 后入内射国产一区二区|