基于嵌入式mcu數(shù)據(jù)flash數(shù)據(jù)存儲(chǔ)和管理方法探究和實(shí)現(xiàn)

基于嵌入式mcu數(shù)據(jù)flash數(shù)據(jù)存儲(chǔ)和管理方法探究和實(shí)現(xiàn)

ID:5941751

大小:29.00 KB

頁數(shù):7頁

時(shí)間:2017-12-29

基于嵌入式mcu數(shù)據(jù)flash數(shù)據(jù)存儲(chǔ)和管理方法探究和實(shí)現(xiàn)_第1頁
基于嵌入式mcu數(shù)據(jù)flash數(shù)據(jù)存儲(chǔ)和管理方法探究和實(shí)現(xiàn)_第2頁
基于嵌入式mcu數(shù)據(jù)flash數(shù)據(jù)存儲(chǔ)和管理方法探究和實(shí)現(xiàn)_第3頁
基于嵌入式mcu數(shù)據(jù)flash數(shù)據(jù)存儲(chǔ)和管理方法探究和實(shí)現(xiàn)_第4頁
基于嵌入式mcu數(shù)據(jù)flash數(shù)據(jù)存儲(chǔ)和管理方法探究和實(shí)現(xiàn)_第5頁
資源描述:

《基于嵌入式mcu數(shù)據(jù)flash數(shù)據(jù)存儲(chǔ)和管理方法探究和實(shí)現(xiàn)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫(kù)。

1、基于嵌入式MCU數(shù)據(jù)Flash數(shù)據(jù)存儲(chǔ)和管理方法探究和實(shí)現(xiàn)  摘要:本文設(shè)計(jì)了一種利用MCU內(nèi)部數(shù)據(jù)Flash存儲(chǔ)非易失性數(shù)據(jù)的方法,它將數(shù)據(jù)Flash的若干扇區(qū)劃分為多個(gè)數(shù)據(jù)分區(qū),不同數(shù)據(jù)分區(qū)存儲(chǔ)數(shù)據(jù)在不同歷史時(shí)間的拷貝,最新數(shù)據(jù)分區(qū)存儲(chǔ)最新的數(shù)據(jù)拷貝;在數(shù)據(jù)讀操作進(jìn)行時(shí),計(jì)算最新數(shù)據(jù)拷貝的Flash存儲(chǔ)位置,直接讀取該地址;在數(shù)據(jù)寫操作進(jìn)行時(shí),判斷數(shù)據(jù)寫入位置是否已經(jīng)被擦除,如果寫入位置未擦除,將數(shù)據(jù)寫入下一個(gè)分區(qū),同時(shí)將當(dāng)前分區(qū)中的其他數(shù)據(jù)復(fù)制到下一個(gè)分區(qū);如果寫入位置已經(jīng)擦除,直接將數(shù)據(jù)

2、寫入當(dāng)前分區(qū)中。該方法實(shí)現(xiàn)了類似EEPROM的數(shù)據(jù)讀寫方式,操作方便,應(yīng)用接口簡(jiǎn)單,而且可以盡量避免扇區(qū)擦除操作,提高存儲(chǔ)效率,同時(shí)提高M(jìn)CU內(nèi)部數(shù)據(jù)Flash的使用壽命。本文網(wǎng)絡(luò)版地址:http://www.eepw.com.cn/article/170167.htm關(guān)鍵詞:數(shù)據(jù)Flash;數(shù)據(jù)分區(qū);扇區(qū);EEPROMDOI:10.3969/j.issn.1005-5517.2013.10.015引言7在嵌入式系統(tǒng)設(shè)計(jì)中,經(jīng)常需要存儲(chǔ)一些非易失性的數(shù)據(jù),在筆者開發(fā)的電動(dòng)汽車儀表盤中,需要存儲(chǔ)總

3、里程、小計(jì)里程、電機(jī)故障等其他信息,采用支持對(duì)字節(jié)讀寫的EEPROM實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ),操作起來和RAM一樣簡(jiǎn)單方便,但同時(shí)會(huì)在大批量產(chǎn)品的生產(chǎn)中帶來成本問題和維護(hù)問題。在有數(shù)據(jù)Flash的MCU中,采用數(shù)據(jù)Flash代替EEPROM實(shí)現(xiàn)非易失性的存儲(chǔ),便可以節(jié)約成本且無需維護(hù),筆者所設(shè)計(jì)的儀表盤采用內(nèi)置4KB數(shù)據(jù)閃存的MC9S12HY32做為處理器,足以滿足儀表盤數(shù)據(jù)存儲(chǔ)要求。用Flash存儲(chǔ)數(shù)據(jù)的傳統(tǒng)方式是為每個(gè)數(shù)據(jù)分配固定的存儲(chǔ)地址,由于Flash在進(jìn)行寫操作時(shí)需要先擦除數(shù)據(jù)所在的整個(gè)扇區(qū)[1]

4、,對(duì)一個(gè)數(shù)據(jù)進(jìn)行寫操作便會(huì)造成對(duì)扇區(qū)內(nèi)其他數(shù)據(jù)的擦除,由于擦除操作耗時(shí)較長(zhǎng),不僅效率低,影響嵌入式系統(tǒng)的實(shí)時(shí)性,而且為了避免丟失其他數(shù)據(jù)需要相當(dāng)復(fù)雜的處理,對(duì)MCU的RAM空間也有一定的要求。如果寫入數(shù)據(jù)失敗,會(huì)造成所寫入數(shù)據(jù)的丟失,如果在擦除扇區(qū)后發(fā)生掉電,便會(huì)造成扇區(qū)內(nèi)所有數(shù)據(jù)的丟失。不僅如此,由于每次寫入操作都需要先擦除扇區(qū),以擦除次數(shù)表征的Flash使用壽命也無法滿足產(chǎn)品生命周期的要求。本文提供一種利用MCU內(nèi)部數(shù)據(jù)Flash存儲(chǔ)非易失性數(shù)據(jù)的方法[2],它不僅操作方便,應(yīng)用接口簡(jiǎn)單,而

5、且可以盡量避免扇區(qū)擦除操作,提高存儲(chǔ)效率,同時(shí)提高M(jìn)CU內(nèi)部數(shù)據(jù)Flash的使用壽命。總體設(shè)計(jì)7通過在MCU數(shù)據(jù)Flash上建立多個(gè)數(shù)據(jù)分區(qū),存儲(chǔ)數(shù)據(jù)的多個(gè)拷貝,避免對(duì)Flash固定地址的反復(fù)擦除,提高Flash的使用壽命,同時(shí)通過數(shù)據(jù)讀寫方法的設(shè)計(jì)和數(shù)據(jù)分區(qū)的管理,避免對(duì)Flash扇區(qū)的不必要擦除,并最終實(shí)現(xiàn)和EEPROM讀寫很類似的應(yīng)用接口。具體地,首先根據(jù)嵌入式系統(tǒng)的應(yīng)用需求和MCU內(nèi)部數(shù)據(jù)Flash的扇區(qū)大小,合理設(shè)置數(shù)據(jù)分區(qū)大小和個(gè)數(shù),將數(shù)據(jù)Flash的若干扇區(qū)劃分為多個(gè)數(shù)據(jù)分區(qū)。在每

6、個(gè)數(shù)據(jù)分區(qū)的起始地址設(shè)置分區(qū)狀態(tài)字[3],反映數(shù)據(jù)分區(qū)的存儲(chǔ)歷史時(shí)間,不同數(shù)據(jù)分區(qū)存儲(chǔ)數(shù)據(jù)在不同歷史時(shí)間的拷貝,當(dāng)前數(shù)據(jù)分區(qū)存儲(chǔ)最新的數(shù)據(jù)拷貝;同時(shí)為每個(gè)數(shù)據(jù)條目建立數(shù)據(jù)狀態(tài)字,反映該數(shù)據(jù)在所在分區(qū)內(nèi)存儲(chǔ)地址是否已經(jīng)被擦除。數(shù)據(jù)分區(qū)設(shè)計(jì)首先根據(jù)嵌入式系統(tǒng)的應(yīng)用需求和MCU內(nèi)部數(shù)據(jù)Flash的扇區(qū)大小,合理設(shè)置數(shù)據(jù)分區(qū)大小和個(gè)數(shù),將數(shù)據(jù)Flash的若干扇區(qū)劃分為多個(gè)數(shù)據(jù)分區(qū),其取值均為2的n次冪,分區(qū)以0,1,2?進(jìn)行編號(hào),個(gè)數(shù)不大于256。分區(qū)大小和個(gè)數(shù)的設(shè)置和數(shù)據(jù)Flash的扇區(qū)長(zhǎng)度匹配起來,

7、滿足以下公式:分區(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ù)條目的格式為dataid+data,dataid取值區(qū)間為[0,254],為每個(gè)數(shù)據(jù)條目的data7id和data分配偏移地址,建立數(shù)據(jù)序列,組織數(shù)據(jù)分區(qū),數(shù)據(jù)分區(qū)的格式為:分區(qū)狀態(tài)字+dataid1+data1+dataid2+data2?。數(shù)據(jù)分區(qū)這樣的存儲(chǔ)結(jié)構(gòu)非常適合需要進(jìn)行多個(gè)獨(dú)立數(shù)據(jù)存儲(chǔ)的嵌入式系統(tǒng)應(yīng)用,通過數(shù)據(jù)分區(qū)

8、的格式定義,對(duì)其某個(gè)數(shù)據(jù)的尋址非常簡(jiǎn)單。數(shù)據(jù)讀取操作數(shù)據(jù)讀取操作在最新數(shù)據(jù)分區(qū)上進(jìn)行,首先通過數(shù)據(jù)條目的dataid進(jìn)行偏移地址查表,然后根據(jù)最新數(shù)據(jù)分區(qū)編號(hào)進(jìn)行地址計(jì)算,計(jì)算公式如下:地址=0號(hào)分區(qū)首地址+(最新數(shù)據(jù)分區(qū)編號(hào)*分區(qū)大?。?偏移地址(2)和EEPROM的讀取方式一樣,直接讀取該地址便可以得到數(shù)據(jù)[5],讀取操作不會(huì)改變最新數(shù)據(jù)分區(qū)及其狀態(tài)字。其軟件實(shí)現(xiàn)如下所示:voidReadEeprom(uint16_tdata_id,void*dest_addr,uint16_tsize){

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。