在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于嵌入式MCU數(shù)據(jù)Flash的數(shù)據(jù)存儲(chǔ)及管理方法研究與實(shí)現(xiàn)

            基于嵌入式MCU數(shù)據(jù)Flash的數(shù)據(jù)存儲(chǔ)及管理方法研究與實(shí)現(xiàn)

            ——
            作者:劉源楊 馬建輝 莊汝科 王崗 時(shí)間:2013-09-23 來源:電子產(chǎn)品世界 收藏

              具體實(shí)施

            本文引用地址:http://www.biyoush.com/article/170167.htm

              數(shù)據(jù)分區(qū)設(shè)計(jì)

              首先根據(jù)系統(tǒng)的應(yīng)用需求和內(nèi)部數(shù)據(jù)的扇區(qū)大小,合理設(shè)置數(shù)據(jù)分區(qū)大小和個(gè)數(shù),將數(shù)據(jù)的若干扇區(qū)劃分為多個(gè)數(shù)據(jù)分區(qū),其取值均為2的n次冪,分區(qū)以0,1,2…進(jìn)行編號(hào),個(gè)數(shù)不大于256。分區(qū)大小和個(gè)數(shù)的設(shè)置和數(shù)據(jù)的扇區(qū)長度匹配起來,滿足以下公式:

              分區(qū)大小*分區(qū)個(gè)數(shù)=扇區(qū)大小*扇區(qū)個(gè)數(shù) (1)

              在每個(gè)數(shù)據(jù)分區(qū)的起始地址設(shè)置分區(qū)狀態(tài)字,反映數(shù)據(jù)分區(qū)的存儲(chǔ)歷史時(shí)間,在分區(qū)擦除后的第一次寫操作完成后更新。設(shè)置數(shù)據(jù)條目的格式為data id+data,data id取值區(qū)間為[0,254],為每個(gè)數(shù)據(jù)條目的data id和data分配偏移地址,建立數(shù)據(jù)序列,組織數(shù)據(jù)分區(qū),數(shù)據(jù)分區(qū)的格式為:分區(qū)狀態(tài)字+ data id 1 + data 1 + data id 2 + data 2…。數(shù)據(jù)分區(qū)這樣的存儲(chǔ)結(jié)構(gòu)非常適合需要進(jìn)行多個(gè)獨(dú)立系統(tǒng)應(yīng)用,通過數(shù)據(jù)分區(qū)的格式定義,對(duì)其某個(gè)數(shù)據(jù)的尋址非常簡單。

              數(shù)據(jù)讀取操作

              數(shù)據(jù)讀取操作在最新數(shù)據(jù)分區(qū)上進(jìn)行,首先通過數(shù)據(jù)條目的data id進(jìn)行偏移地址查表,然后根據(jù)最新數(shù)據(jù)分區(qū)編號(hào)進(jìn)行地址計(jì)算,計(jì)算公式如下:

              地址=0號(hào)分區(qū)首地址+(最新數(shù)據(jù)分區(qū)編號(hào)*分區(qū)大小)+偏移地址 (2)

              和的讀取方式一樣,直接讀取該地址便可以得到數(shù)據(jù)[5],讀取操作不會(huì)改變最新數(shù)據(jù)分區(qū)及其狀態(tài)字。其軟件實(shí)現(xiàn)如下所示:

              void ReadEeprom(uint16_t data_id, void *dest_addr,uint16_t size)
              {
              u_EepromWord eedata;
              uint16_t src_addr;
              src_addr = GetDataAddrFromItsId(data_id);
              src_addr += (Active_bank * _SIZE_BYTES);
              while(0 != size){
              eedata.word = READFLASH16(src_addr);
              *(uint8_t*)dest_addr = eedata.byte.msb;
              ((uint8_t*)dest_addr)++;
              src_addr++;
              size--;
              }
              }

              數(shù)據(jù)寫操作

              在數(shù)據(jù)條目的設(shè)計(jì)中,將數(shù)據(jù)條目的data id存儲(chǔ)地址同時(shí)做為數(shù)據(jù)狀態(tài)字的存儲(chǔ)地址,在寫操作時(shí)通過數(shù)據(jù)狀態(tài)字判斷該數(shù)據(jù)條目地址是否執(zhí)行過擦除操作,從而避免不必要的分區(qū)拷貝和扇區(qū)擦除操作,降低數(shù)據(jù)寫操作代價(jià)[6]。首先根據(jù)公式(2)計(jì)算數(shù)據(jù)在最新數(shù)據(jù)分區(qū)的存儲(chǔ)地址,讀取其data id存儲(chǔ)位置得到數(shù)據(jù)狀態(tài)字,判斷該數(shù)據(jù)在最新數(shù)據(jù)分區(qū)的寫入地址是否已經(jīng)被擦除。如果數(shù)據(jù)狀態(tài)字等于0xff,表明寫入地址已經(jīng)被擦除,按照Flash的寫操作命令序列在data id地址處寫入data id,在data地址處寫入data;如果數(shù)據(jù)狀態(tài)字不等于0xff,表明寫入地址未被擦除,需要進(jìn)行分區(qū)拷貝操作,操作完成后更新最新分區(qū)及最新分區(qū)狀態(tài)字。數(shù)據(jù)寫操作流程如圖2所示。

            linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


            評(píng)論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉