在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

如何處理嵌入式中參數的存儲?

5RJg_mcuworld ? 來源:未知 ? 作者:易水寒 ? 2018-10-03 10:49 ? 次閱讀

如果有幾個設置參數需要存儲到Flash中,我們一般會怎么存儲呢?將不同的參數都存儲到不同的頁中,還是將這幾個參數捆綁成一種結構體,每次修改都同時寫入一次呢?

將參數存儲到固定的地址,則每個參數都將占用Flash的一個塊。而將全部參數捆綁一起存入Flash塊中,那么只有一個參數修改時,也需要將全部參數一起存一遍。那么有什么更好的方法嗎?

前段時間學習Msos,看到其中使用的參數存儲的方法設計的很好,它將參數的變量地址與值,一同存儲入Flash中。出彩之處是使用參數的變量地址來標記不同的變量。

一、數據結構

這種存儲方式使用兩個數據結構:

typedef struct

{

uint Address; //參數變量的地址

uint Data; //參數變量的值

}CellStruct;

要存儲某個變量,需要將這個變量的地址和它的值一同存儲到存儲區。這種存儲方式的核心就是這個數據結構。這樣就可以使用*((uint *)(Address)) = Data直接將存儲值賦值給對應的變量。簡單的說就是根據地址值來標記各個不同的參數。

二、代碼解析

這種存儲方式的使用兩個函數:

讀取存儲區中的變量值并更新變量的值

變量的存儲函數

2.1 參數的讀取

流程圖如上,主要步驟如下:

根據Flash中存寫的變量地址,更新變量的值;

將Flash中存寫的地址值存入臨時數組中,并根據地址值判斷是否存在重復存儲的無效數據,并將無效數組失效;

清空Flash存儲區,將臨時數組中有效的變量重新存入Flash中。

通過這些步驟,將存儲區中存儲的變量讀出,并將存儲區中的重復的無效數據清除。下面是源代碼:

#definepUint(address)*((uint*)(address))#definePageSize1024//Stm32F103R8T61Page=1024Byte#defineParameterAddress(FLASH_BASE+(63*1024))#defineParameterSpacePageSize/4/2staticvoidReadAllParameter(void){boolCleanFlag;inti,j;

2.2 參數的寫入

參數的寫入就很簡單了,根據數據結構中的寫入點,將變量的地址與值寫入Flash中。

staticboolWriteParameter(void*dataPointer){

2.3 使用方法

每次上電啟動時,調用讀取全部變量的函數;

修改某個參數的時候,調用寫參數函數。

三、注意事項

在讀取參數時,需要在RAM中建立一個ParameterSpace大小的數組,如果這個值太大,會超過棧的大小,使得內存溢出。因此存儲區不能開辟的太大。

總結

這種方式使用簡便,尤其是在更新變量值時,根據存儲的變量地址更新相應的值。其實其本質與我們使用變量名來標記不同的變量是一樣的。不過也有缺點:

首先其同時存儲變量的地址與變量的值,相當于多使用一倍的存儲空間;像上面的注意事項中說的,存儲區不能開辟的過大,否則會使臨時數組超過棧的大小。

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

    關注

    5142

    文章

    19561

    瀏覽量

    315381
  • FlaSh
    +關注

    關注

    10

    文章

    1668

    瀏覽量

    151067
  • 數據結構
    +關注

    關注

    3

    文章

    573

    瀏覽量

    40623

原文標題:嵌入式中參數的存儲,你是怎么處理的?

文章出處:【微信號:mcuworld,微信公眾號:嵌入式資訊精選】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    嵌入式參數存儲處理

    嵌入式參數存儲,你是怎么處理的?
    發表于 03-30 08:29

    嵌入式軟件如何利用內部flash存儲參數

    01前言嵌入式軟件中經常要存儲一些非易失參數,例如用戶設置、校準參數、設備運行參數等,通常情況下我們都會選擇
    發表于 11-25 08:52

    嵌入式系統的數據存儲和管理的相關資料分享

    【功能】: 嵌入式系統的數據存儲和管理 數據查詢【定義】:嵌入式數據庫系統是指支持移動計算或某種特定計算模式的數據庫管理系統,它通常與操作系統和具體應用集成在一起,運行在智能型
    發表于 12-17 07:15

    嵌入式系統的EEPROM和FRAM是什么

    一定空間用于存儲應用代碼、非易失性數據和配置信息。EEPROM往往是開發人員最先、最??紤]用于嵌入式系統的存儲器件。在嵌入式應用,這類非易
    發表于 12-22 07:33

    嵌入式平臺中參數的思考與設計相關資料下載

    的部分。在上層應用可以使用基于文件的ini、json、xml等參數功能接口,非常靈活方便??稍?b class='flag-5'>嵌入式環境,由于資源的限制無法使用這些功能接口,需要另行設計,是一項有挑戰的任務。
    發表于 12-23 06:05

    何處理存儲在非易失性設備的內存數據集損壞

    保護您的嵌入式軟件免受內存損壞本文的目的是提供一種軟件方法,解釋如何處理存儲在非易失性設備(如小型 EEPROM 或閃存)的內存數據集損壞。在微型
    發表于 12-24 07:27

    基于虛擬存儲嵌入式存儲系統的設計方法

    基于虛擬存儲嵌入式存儲系統的設計方法   1、引言   嵌入式系統由嵌入式硬件和固化在硬件平臺中的
    發表于 11-05 16:10 ?817次閱讀
    基于虛擬<b class='flag-5'>存儲</b>的<b class='flag-5'>嵌入式</b><b class='flag-5'>存儲</b>系統的設計方法

    淺析嵌入式存儲系統設計方法

    淺析嵌入式存儲系統設計方法  嵌入式存儲系統由嵌入式硬件和固化在硬件平臺中的嵌入式
    發表于 01-26 16:32 ?1192次閱讀
    淺析<b class='flag-5'>嵌入式</b><b class='flag-5'>存儲</b>系統設計方法

    嵌入式處理系統

    嵌入式處理系統 嵌入式系統概述 嵌入式處理系統設計 并行計算機的組織結構模型 嵌入式
    發表于 02-25 16:53 ?43次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>處理</b>系統

    嵌入式主機上的USB海量存儲設備類

    嵌入式主機上的USB海量存儲設備類重點論述基于USB的海量存儲(USB Mass Storage)設備功能在ARM嵌入式系統設計。
    發表于 03-06 16:33 ?43次下載
    <b class='flag-5'>嵌入式</b>主機上的USB海量<b class='flag-5'>存儲</b>設備類

    嵌入式參數存儲訣竅分享

    分享到:標簽:嵌入式 工業4.0 如果有幾個設置參數需要存儲到Flash,我們一般會怎么存儲呢?將不同的
    發表于 10-13 20:24 ?0次下載
    <b class='flag-5'>嵌入式</b>的<b class='flag-5'>參數</b><b class='flag-5'>存儲</b>訣竅分享

    嵌入式系統教程之嵌入式處理器的詳細資料說明

    本文檔的主要內容詳細介紹的是嵌入式系統教程之嵌入式處理器的詳細資料說明包括了:1 硬件子系統的組成,2 嵌入式處理器的技術指標,
    發表于 06-14 17:14 ?18次下載
    <b class='flag-5'>嵌入式</b>系統教程之<b class='flag-5'>嵌入式</b><b class='flag-5'>處理</b>器的詳細資料說明

    FPGA嵌入式存儲器的設計

    FPGA嵌入式存儲器的設計(嵌入式開發平臺)-該文檔為FPGA嵌入式
    發表于 08-04 10:14 ?6次下載
    FPGA<b class='flag-5'>中</b><b class='flag-5'>嵌入式</b>塊<b class='flag-5'>存儲</b>器的設計

    嵌入式開發嵌入式硬件和軟件有什么區別?

    嵌入式指的是把軟件直接燒錄在硬件里,而不是安裝在外部存儲介質上,就像賦予機器人靈魂,從而方便人類操控。在嵌入式開發,分為嵌入式硬件和
    的頭像 發表于 07-18 18:11 ?3921次閱讀
    <b class='flag-5'>嵌入式</b>開發<b class='flag-5'>中</b>,<b class='flag-5'>嵌入式</b>硬件和軟件有什么區別?

    嵌入式軟件如何利用內部flash存儲參數呢?

    嵌入式軟件中經常要存儲一些非易失參數,例如用戶設置、校準參數、設備運行參數等,通常情況下我們都會選擇存儲
    的頭像 發表于 10-27 14:12 ?1844次閱讀
    <b class='flag-5'>嵌入式</b>軟件<b class='flag-5'>中</b>如何利用內部flash<b class='flag-5'>存儲</b><b class='flag-5'>參數</b>呢?
    主站蜘蛛池模板: 日本三级全黄三级a | 大量真实偷拍情侣视频野战 | 一级做a爰片久久毛片免费 一级做a爰片久久毛片免费看 | 五月婷婷一区 | 日本天天射 | 一级aa 毛片高清免费看 | 欧美freesex10一|3 | 国产精品夜夜春夜夜爽久久 | 亚洲成在人线久久综合 | 美女网色站 | 噜噜噜噜私人影院 | 激情三级视频 | 午夜毛片免费看 | 欧美资源在线观看 | 大乳妇女bd视频在线观看 | 伊人久久亚洲综合天堂 | 欧美亚洲h在线一区二区 | 狠狠色噜噜狠狠狠狠97 | 黄色网址你懂得 | 国产免费一级在线观看 | 国产特黄1级毛片 | 久久99精品久久久久久久不卡 | 亚洲怡红院在线观看 | 天天摸夜夜添狠狠添2018 | 片黄免费 | 在线www天堂资源网 在线播放 你懂的 | 国产农村一一级特黄毛片 | 成人99国产精品一级毛片 | 激情在线播放免费视频高清 | 日韩精品免费一级视频 | www.婷婷色 | www.五月婷婷.com| 日本不卡一区视频 | 日本不卡在线观看 | 色综合视频一区二区三区 | 97久草 | 人人弄| 无夜精品久久久久久 | 亚洲第一视频网 | 亚洲最大的黄色网址 | 国产美女久久久久 |