一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

LittleFS如何在OpenHarmony中使用

科技綠洲 ? 來源:凌智電子 ? 作者:凌智電子 ? 2022-06-21 17:03 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、簡介

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

LittleFS在嵌入式開發(fā)過程中經(jīng)常遇到,但是如何在OpenHarmony中使用呢?本文基于OpenHarmony 3.1Release + 小凌派-RK2206開發(fā)板做LittleFS文件系統(tǒng)移植,現(xiàn)將相關(guān)移植經(jīng)驗(yàn)發(fā)布,分享給大家。文中如有問題,請大家?guī)兔χ刚?/p>

二、LittleFS移植過程

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

1、hcs配置

1.1、hdf.hcs

創(chuàng)建/device/soc/rockchip/rk2206/hcs_config/hdf.hcs文件,具體如下:

poYBAGKxh9KAV7R0AAAfKGEdTBE555.png

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

1.2、BUILD.gn

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

pYYBAGKxh-eALsRpAAAdaowk4R0605.png

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

1.3、device_info.hcs

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

pYYBAGKxh_uAIMrbAAAfH6vonZM900.png

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

1.4、fs_config.hcs

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

poYBAGKxiBCAdDc0AAA37K1yKFY359.png

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

(1)mount_points:掛載目錄。

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

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

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

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

2、hdf驅(qū)動

新建//device/soc/rockchip/rk2206/hdf_driver/fs文件夾,文件夾下創(chuàng)建2個(gè)文件,具體如下所示:

2.1、fs_driver.c

2.1.1、添加必要的頭文件

poYBAGKxiDCABVD5AAAbTl1wA5M742.png

2.1.2、添加HDF驅(qū)動

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

pYYBAGKxiESAKTn6AAAboEs1Kjg088.png

HDF_INIT(g_fsDriverEntry);

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


2.1.3、fs_driver_init函數(shù)

fs_driver_init為hdf驅(qū)動加載函數(shù)。OpenHarmony啟動時(shí),將根據(jù)hcs的編寫匹配對應(yīng)的驅(qū)動程序,并運(yùn)行fs_driver_init函數(shù)。該函數(shù)負(fù)責(zé):

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

(2)初始化Flash。

(3)適配LittleFS對應(yīng)的read、write、erase和sync函數(shù),并適配LittleFS相關(guān)參數(shù)。

(4)掛載LittleFS。

具體代碼如下所示:

poYBAGKxiGOAanU_AABs5e4xx80975.png

pYYBAGKxiHeAAY6TAAB6HedFbso591.png

poYBAGKxiOeALoC-AAAZx3-MkKE893.png

2.2、BUILD.gn

BUILD.gn負(fù)責(zé)將fs_driver.c編譯到內(nèi)核中,具體源代碼如下所示:

pYYBAGKxiPaAaxPtAAAjHo4eYso299.png

3、測試程序

我在main函數(shù)中添加一個(gè)任務(wù),負(fù)責(zé)每隔5秒讀寫文件。具體代碼如下所示:

/* 文件系統(tǒng)測試 */

pYYBAGKxiQuACB13AAByhKF1rLI882.png

pYYBAGKxiRiAGkaeAAAwcFVKFCc309.png

三、實(shí)驗(yàn)結(jié)果

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

poYBAGKxiTCAE0u5AAAf0omQWnY999.png

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5676

    瀏覽量

    104584
  • 存儲數(shù)據(jù)
    +關(guān)注

    關(guān)注

    0

    文章

    90

    瀏覽量

    14326
  • OpenHarmony
    +關(guān)注

    關(guān)注

    29

    文章

    3852

    瀏覽量

    18590
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    何在bash中使用條件語句

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

    何在Linux中使用htop命令

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

    基于OpenHarmony3.1的LittleFS文件系統(tǒng)hdf驅(qū)動實(shí)現(xiàn)

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

    何在VxWorks系統(tǒng)中使用TrueType字庫

    何在VxWorks系統(tǒng)中使用TrueType字庫
    發(fā)表于 03-29 12:25 ?19次下載

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

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

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

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

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

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

    基于OpenHarmony3.1的LittleFS文件系統(tǒng)hdf驅(qū)動實(shí)現(xiàn)

    原“HarmonyOS官方合作社區(qū)”更名為“電子發(fā)燒友開源社區(qū)”,更名后 OpenHarmony 依然是我們重點(diǎn)關(guān)注且持續(xù)共建的開源社區(qū),將持續(xù)為大家?guī)黹_源技術(shù)內(nèi)容和資訊。 ? 1 簡介
    的頭像 發(fā)表于 09-30 18:32 ?2004次閱讀

    何在Arduino中使用伺服電機(jī)

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

    何在Arduino中使用LDR

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

    何在Arduino中使用Modbus

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

    何在Arduino中使用微型伺服

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

    何在OpenHarmony上開發(fā)服務(wù)卡片

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

    基于OpenHarmony3.1的LittleFS文件系統(tǒng)hdf驅(qū)動實(shí)現(xiàn)

    一、簡介LittleFS是一個(gè)小型的Flash文件系統(tǒng),它結(jié)合日志結(jié)構(gòu)(log-structured)文件系統(tǒng)和COW(copy-on-write)文件系統(tǒng)的思想,以日志結(jié)構(gòu)存儲元數(shù)據(jù),以COW結(jié)構(gòu)
    的頭像 發(fā)表于 06-22 09:42 ?1504次閱讀
    基于<b class='flag-5'>OpenHarmony</b>3.1的<b class='flag-5'>LittleFS</b>文件系統(tǒng)hdf驅(qū)動實(shí)現(xiàn)

    何在測試中使用ChatGPT

    Dimitar Panayotov 在 2023 年 QA Challenge Accepted 大會 上分享了他如何在測試中使用 ChatGPT。
    的頭像 發(fā)表于 02-20 13:57 ?1070次閱讀