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

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

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

3天內不再提示

EEPROM輕量級的簡易類文件的數據讀寫庫:EEPROMFS

STM32嵌入式開發 ? 來源:STM32嵌入式開發 ? 2024-11-15 16:31 ? 次閱讀

雖然 EEPROM 相對 Flash 讀寫速度更慢,但 EEPROM 一些獨有特性是 Flash 無法實現的,比如字節讀寫操作。

所以,EEPROM至今依然應用在很多電子設備上,而且市場還不小。 這里就給大家分享一款EEPROM輕量級的簡易類文件的數據讀寫庫:EEPROMFS

1 關于EEPROMFS

EEPROMFS,基于EEPROM的簡易類文件的數據讀寫庫,方便做動態功能增減時參數管理。 增減參數塊類似增減文件,不會對已有數據存儲帶來影響。EEPROM硬件資源充裕的情況下使用。 開源地址: https://gitee.com/wtau_zaozao/eepromfs

8424785e-9072-11ef-a511-92fbcf53809c.png

2 使用說明和軟件架構 開源庫使用說明: 基于 Arm 處理器,EEPROM存儲,比如24C256、24c512之類的相對較大一點容量的EEPROM存儲芯片。 軟件架構: EPPROM存儲區開頭存儲eepromfs管理相關信息,采用鏈表方式串聯每一個文件,每個文件建立的時候指定名稱和大小,新增加的文件自動追加在鏈表末尾。

typedef struct deepromfs_s{
    eeprom_handle_t *handle;


    la_t startAddr1;
    efs_size_t size1;


    la_t startAddr2;
    efs_size_t size2;
}deepromfs_t;
static deepromfs_t deepromfs;
eepromfs_result_t deepromfs_init(eeprom_handle_t *handle,la_t startAddr,efs_size_t size)
{
    eepromfs_result_t eepromfs_result1;
    eepromfs_result_t eepromfs_result2;


    //初始化
    deepromfs.handle=handle;
    deepromfs.startAddr1=startAddr;
    deepromfs.size1=size/2;
    deepromfs.startAddr2=deepromfs.startAddr1+deepromfs.size1;
    deepromfs.size2=size/2;




    eepromfs_result1=eepromfs_init(deepromfs.handle,deepromfs.startAddr1);
    eepromfs_result2=eepromfs_init(deepromfs.handle,deepromfs.startAddr2);
    if((eepromfs_result1==EFR_OK)&&(eepromfs_result2==EFR_OK))
    {
        return EFR_OK;
    }
    else if((eepromfs_result1==EFR_OK)&&(eepromfs_result2!=EFR_OK))
    {
        //拷貝分區1數據到分區2
        eepromfs_copy(deepromfs.handle,deepromfs.startAddr2,deepromfs.startAddr1,deepromfs.size1);
        return EFR_OK;
    }
    else if((eepromfs_result1!=EFR_OK)&&(eepromfs_result2==EFR_OK))
    {
        //拷貝分區2數據到分區1
        eepromfs_copy(deepromfs.handle,deepromfs.startAddr1,deepromfs.startAddr2,deepromfs.size2);
        return EFR_OK;
    }
    else if((eepromfs_result1==EFR_CRC_INFO_ERR)&&(eepromfs_result2==EFR_CRC_INFO_ERR))
    {
        return EFR_CRC_INFO_ERR;
    }
    return EFR_ERR;
}
eepromfs_result_t deepromfs_format_quick(void)
{
    eepromfs_result_t eepromfs_result;


    eepromfs_result=eepromfs_init(deepromfs.handle,deepromfs.startAddr1);
    if(eepromfs_result!=EFR_OK)
    {
        return eepromfs_result;
    }


    if(eepromfs_format_quick()!=EFR_OK)
    {
        return eepromfs_result;
    }


    eepromfs_result=eepromfs_init(deepromfs.handle,deepromfs.startAddr2);
    if(eepromfs_result!=EFR_OK)
    {
        return eepromfs_result;
    }


    eepromfs_result=eepromfs_format_quick();
    if(eepromfs_result!=EFR_OK)
    {
        return eepromfs_result;
    }


    return EFR_OK;
}
提供各類格式化、讀、寫、刪除的函數接口,方便用戶直接調用:
eepromfs_result_t eepromfs_init(eeprom_handle_t *handle,la_t startAddr);
eepromfs_result_t eepromfs_format_quick(void);//格式化不改變大小
eepromfs_result_t eepromfs_format_full(la_t startAddr,efs_size_t size);//格式化并重新指定大小


eepromfs_result_t eepromfs_new(file_handle_t *fh,const char* filename,efs_size_t fileSize);
eepromfs_result_t eepromfs_open(file_handle_t *fh,const char* filename);
eepromfs_result_t eepromfs_close(file_handle_t* fh);
eepromfs_result_t eepromfs_write(file_handle_t* fh, const fdata_t* data, efs_size_t size);
eepromfs_result_t eepromfs_offsetWrite(file_handle_t* fh,la_t offSet,const fdata_t* data, efs_size_t size);
eepromfs_result_t eepromfs_read(file_handle_t* fh, fdata_t* buf,efs_size_t bufLen,efs_size_t *pFilesize);
eepromfs_result_t eepromfs_delete(const char* filename);
eepromfs_result_t eepromfs_copy(eeprom_handle_t *handle,la_t destAddr,la_t srcAddr,efs_size_t size);

總體而言,這個庫相對比較輕量級,普通ARM 單片機運行完全沒有壓力,具體源碼,可以參考:

https://gitee.com/wtau_zaozao/eepromfs

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

    關注

    8

    文章

    6888

    瀏覽量

    88824
  • 存儲
    +關注

    關注

    13

    文章

    4261

    瀏覽量

    85667
  • EEPROM
    +關注

    關注

    9

    文章

    1010

    瀏覽量

    81404

原文標題:EEPROM簡易文件數據讀寫庫

文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    基于Openharmony輕量級操作系統的分布式數據管理開發案例

    實驗內容本例程演示如何在小凌派-RK2206開發板上使用OpenHarmony輕量級操作系統進行KvStore(即分布式數據管理)數據讀寫。例程:(1)創建兩個線程,一個負責寫入KvS
    的頭像 發表于 08-07 08:23 ?845次閱讀
    基于Openharmony<b class='flag-5'>輕量級</b>操作系統的分布式<b class='flag-5'>數據</b>管理開發案例

    輕量級的ui框架如何去制作

    原創分享:自制輕量級單片機UI框架框架元素用戶接口代碼開源平時常看csdn,但是從來沒有自己寫過。正好這幾天需要用單片機做一個簡易的ui界面,于是自己寫了一個輕量級的ui框架。發個csdn分享給大家
    發表于 07-14 07:39

    木棉花:輕量級偏好數據庫學習筆記--沈泳鑫

    全量數據將會被加載在內存中的,使得訪問速度更快,存取效率更高。如果對數據持久化,數據最終會落盤到文本文件中,建議在開發過程中減少落盤頻率,即減少對持久化
    發表于 09-04 14:30

    基于輕量級偏好數據庫,實現存儲在本地應用數據的訪問及操作

    (filename);說明輕量級偏好數據庫支持數據庫文件的創建、移動,數據的查詢、插入、刪除,以及支持注冊觀察者來觀察數據是否發生變化。詳細
    發表于 10-09 14:43

    一種超輕量級的flashKV數據存儲方案分享

    tinyFlash一種超輕量級的flash KV數據存儲方案Github 地址:https://github.com/ospanic/tinyFlash設計原理本方案采用兩個扇區輪流使用的方法存儲
    發表于 12-20 06:08

    深度剖析OpenHarmony輕量級數據存儲

    一、輕量級數據存儲的版本openharmony的輕量級數據存儲現有兩個版本,但是harmonyOS的官網上只有一個輕量級數據存儲。二、應用目錄的獲取數據存儲需要獲取到應用的存放目錄,便
    發表于 03-31 14:45

    輕量級的SDN數據包轉發驗證方案

    輕量級的SDN數據包轉發驗證方案
    發表于 06-08 11:29 ?10次下載

    用于openharmony的輕量級、簡單的結構化NoSQL數據庫

    用于openharmony的輕量級、簡單的結構化 NoSQL 數據庫。 下載 依賴項{ 實現“io.openharmony.tpc.thirdlib:ohos-NoSql:1.0.0” } 將數據
    發表于 04-13 10:05 ?2次下載

    TinyDB輕量級數據庫有哪些特點呢

    TinyDB 是一個純 Python 編寫的輕量級數據庫,一共只有1800行代碼,沒有外部依賴項。
    的頭像 發表于 10-28 14:07 ?1421次閱讀

    PSoC NeoPixel Easy輕量級

    電子發燒友網站提供《PSoC NeoPixel Easy輕量級.zip》資料免費下載
    發表于 11-17 09:48 ?0次下載
    PSoC NeoPixel Easy<b class='flag-5'>輕量級</b><b class='flag-5'>庫</b>

    一個純Python編寫的輕量級數據庫

    TinyDB 是一個純 Python 編寫的輕量級數據庫,一共只有1800行代碼,沒有外部依賴項。
    的頭像 發表于 02-24 10:32 ?797次閱讀

    輕量級數據庫有哪些

    輕量級數據庫有哪些 隨著互聯網和物聯網等新一代信息技術的廣泛應用,數據庫系統也變得越來越重要。人們對于數據庫數據庫的可靠性、安全性和性能等要求也越來越高。與傳統的關系型
    的頭像 發表于 08-28 16:41 ?5882次閱讀

    TinyDB :一個純Python編寫的輕量級數據庫

    TinyDB 是一個純 Python 編寫的輕量級數據庫,一共只有1800行代碼,沒有外部依賴項。 TinyDB的目標是降低小型 Python 應用程序使用數據庫的難度,對于一些簡單程序而言與其用
    的頭像 發表于 10-21 10:22 ?926次閱讀

    輕量級數據庫有哪些類型

    輕量級數據庫是指具有小巧、靈活、高效的特點,適用于小規模項目和嵌入式設備的數據庫管理系統。下面是對輕量級數據庫類型的詳細介紹,包括關系型數據庫、非關系型
    的頭像 發表于 12-20 11:29 ?1191次閱讀

    鴻蒙語言基礎:ohos.data.storage 輕量級存儲

    輕量級存儲為應用提供key-value鍵值型的文件數據處理能力,支持應用對數據進行輕量級存儲及查詢。數據存儲形式為鍵值對,鍵的類型為字符串型
    的頭像 發表于 07-15 18:21 ?934次閱讀