




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、什么是分區(qū)管理FLAS時區(qū)管理是怎么一回事呢?我們可以以個人電腦來做類比, 我們的電腦通常都分有很多個盤符:網(wǎng)這些都是我們硬盤的分區(qū),我這里裝了兩塊硬盤,512GB勺機械硬盤+128GB勺固態(tài)硬盤,共分CM個分區(qū),我這里的C盤和H盤是固態(tài)硬盤,其它盤符是機械硬盤:分區(qū)名存儲設者名偏移地址大小Cg,r“固態(tài)硬盤”一66GB系統(tǒng)盤”機械硬盤”一50G8資料盤機械硬盤139GB資料鼠盤,,機械震點一139GB資料盅5 盤 e“機械硬盤”137GB濟料盅5 盤”“固態(tài)硬盤”ita-ita-51GB軟件安裝常用資料分區(qū)是為了方便我們對我們的資料進行管理,各個分區(qū)互不影響,比如格式化某個分區(qū)只會刪除這個分
2、區(qū)的內(nèi)容而不會影響其它分區(qū)及整個硬盤等。同樣的,在我們的STM321也是可以進行分區(qū)管理的,這篇筆記我們來使用RT-Thread的FAL軟件包來對我STM32t內(nèi)FLASHY片外FLASHl勺分區(qū)管理。FAL軟件包介紹FAL(FlashAbstractionLayer)Flash抽象層,是RT-Thread的一個軟件包,是對Flash及基于Flash的分區(qū)進行管理、操作的抽象層,對上層統(tǒng)一了Flash及分區(qū)操作的API,并具有以下特性:?支持靜態(tài)可配置的分區(qū)表,并可關聯(lián)多個Flash設備;?分區(qū)表支持自動裝載。避免在多固件項目,分區(qū)表被多次定義的問題;?代碼精簡, 對操作系統(tǒng)無依賴, 可運行于
3、裸機平臺, 比如對資源有一定要求的bootloader;?統(tǒng)一的操作接口。保證了文件系統(tǒng)、OTANVM等對Flash有一定依賴的組件,底層Flash驅(qū)動的可重用性;?自帶基于Finsh/MSH的測試命令,可以通過Shell按字節(jié)尋址的方式操作(讀寫擦)Flash或分區(qū),方便開發(fā)者進行調(diào)試、測試;FAL軟件包使用本筆記主要對潘多拉開發(fā)板的FAL例程進行一次梳理,所以部分表述來自于教程文檔。我們這個實驗建立如下分區(qū)表:分區(qū)名分區(qū)名FLASHFLASH設備名設備名偏移地址偏移地址大小大小說明說明H,c_Partition11stm32_onchipH,0384KB匚分區(qū)1,d_partitianw,
4、stm32_cnchipH,384*1024128KBd分區(qū)1Re_partition,RnorflashON0512KB。分區(qū)f-parcIHonhnorflashOrl512*10241Q24KBf分區(qū)g_panign”,norflashO,1(512+1024)*1024512KB汾區(qū)Hhh_partitionKrtnorflashOH(512+1024+512)*10241024KBh分區(qū)1、移植接口文件說明FAL軟件包的目錄如下,其中samples文件夾下為移植接口文件:iiinc2018/12/26 文件夾jsarrpkes201B/L2/26 星期一1雷1201S/12/26星期
5、”文怦笑.grtignor加1獷墟口1星期.文奉文告LICENCEM1&/12/11星期一文件1B27eREADME.nftd 口凰期 MarkdownFh11BSCcnscript2018/12/11星期一文件1文:R 內(nèi) FLASH 接用攵 4- Ir1ITr1ITr.r.一 M-亞麗 6 說明文唐 F 有詳細介紹其中fal_cfg.h為fal配置文件(Flash設備配置和分區(qū)表配置)式耳cadcadZ Z14_or.et_p_14_or.et_p_工1 1. .門四方皿/*/*FazxirionConfioiraricnFazxirionConfioiraricnFiL_FiRT_ECk
6、5_TABLE_CzFiL_FiRT_ECk5_TABLE_Cz/*C.AEI*/tdef&netdef&neFALPUTFALPUT:ULEULEfal是Flash抽象層,要操作Flash設備必然要將Flash的讀、寫、擦接口對接到fal抽象層中。在fal中,使用structfal_flash_dev結構體來讓用戶注冊該Flash設備的操作接口。fal_flash_dev結構體定義如下所示:itructfal_flash_dev(eharrameFAL_DEV_hAME_MAX;(O(ORODRODiFAFA二二EQPARTEQPART心。KRODKRODcKichi|z_fLashT加皿仁
7、工工3m3m*lnar_fla*lnar_fla1 13M3M- - -1*321-1*321七CTflafla h*h*地3 3一小政1414MTMT* *G G 3 3 *114*/*FLASH 設需的起始地卅/uint32_tdr;slze_tlen;/,FLASH 設傳搟小摻 3,的 1 史,小*/fiiletblksize;structint)(vcid);int(*read)(longoffsetjuintBt*&uf,slze_tsize);Int(rdrite)(InriKoffsettconstuint8_t*bjf,sizetsize);int(erase)(longoff
8、set,siie_tsize);ops;fal_flash_stm32f2_port.c為片內(nèi)FLAS出口文件,這得根據(jù)實際芯片進行修改,主要是封裝讀、寫、擦除函數(shù),例如:staticixstaticix七readread| |IcgIcgo o 士士士士 m m 邑二邑二. .ulntSt*bnfulntSt*bnf, ,sizetsizetm m工工已,Hj.;j.;UIXIE32_I&JdirBt;a3214_onchip_1aahLadidr+offatL;ir(laddr+sizeFLAsrr_ENDaDDRE5s)(rE_Wrintff(ERROiR:readoucranaefla
9、snsize!addrLs|口翼二卜口(veld*)+size)t;return-1:for|10;1i+rbuf+*,fftddr+|i4(iin.-&6teididirr)b片內(nèi)Flash對接說明:conststructJd1HB卜一 ilmvstm32li_c-nc-iir;_f1d:J-=,hcnchip_fLash,K。3 日 6 強眄,;八測試日分區(qū) 7if(fal_te3t(TTd_partiJt.ioiik,=0)LOGInFalpartition(%s)test一elseLOG_E(Falpaitition孟3Jtest-/*測試t分區(qū)*/i(faintest(rrjEpar
10、tj.jtxaanJ)對d分區(qū)與f分區(qū)進行讀寫測試。(1)擦除分區(qū)測試:/*擦除整個分區(qū)*/ret=fal_partition_erase_all(partition);if(retname);ret=-1;returnret;LOG_I(Erase(%s)partitionfinish!,partiton_name);/*讀出分區(qū)數(shù)據(jù)并校驗*/for(i=0;ilen;)(rt_memset(buf,0 x00,BUF_SIZE);len=(partition-len-i)BUF_SIZE?BUF_SIZE:(partition-len-i);ret=fal_partition_read(p
11、artition,i,buf,len);if(retname);ret=-1;returnret;)for(j=0;j;UCCCJ3UCCCJ3! f fbfbf: :failed.!r,fion;if(bufj!=0 xFF)(LOG_E(Theeraseoperationdidnotreallysucceed!);ret=-1;returnret;)i+=len;)擦除成功則分區(qū)內(nèi)容會變成0 xFF。(2)讀寫測試/*往分區(qū)寫0 x00*/for(i=0;ilen;)(rt_memset(buf,0 x00,BUF_SIZE);len=(partition-len-i)BUF_SIZE?B
12、UF_SIZE:(partition-len-i);ret=fal_partition_write(partition,i,buf,len);if(retname);ret=-1;returnret;)i+=len;LOG_I(Write(%s)partitionfinish!Writesize%d(%dK).,partiton_name,i,i/1024);/*讀取分區(qū)數(shù)據(jù)并校驗*/for(i=0;ilen;)rt_memset(buf,0 xFF,BUF_SIZE);len=(partition-len-i)BUF_SIZE?BUF_SIZE:(partition-len-i);ret=f
13、al_partition_read(partition,i,buf,len);if(retname);ret=-1;returnret;for(j=0;jlen;j+)if(bufj!=0 x00)LOG_E(Thewriteoperationdidnotreallysucceed!);ret=-1;returnret;讀出來的數(shù)據(jù)與寫入的數(shù)據(jù)相等則測試成功。程序運行結果:二p.:夫安:仁昔;J,;J;I*,1*E也.i-nwELs 瞥prTMiorfl-1shprTMiorfl-1sh! !;TIwTi)IrfrlHI&rfIrtish11147?(17U)TIwTi)IrfrlHI&rfI
14、rtish11147?(17U).amamT TP P *TTTT13FFlTTTTTlf?JIM*TTTT13FFlTTTTTlf?JIMiurite(fjhircTion)pATiiTP*finis-hiurite(fjhircTion)pATiiTP*finis-h1 1iriiciriic n;e$041n;e$041尋J J. .pnirtDtlpnirtDtl曲llurjllurj亡史才上,收33r33ri+=len;FindAIFindAI過5 51 1TWETWEFdU,|DFdU,|D.lAL|I.lAL|I.|aimiTinMbjfrt-tihreidSmMlrlxiMai
15、miTinMbjfrt-tihreidSmMlrlxiM】aqh5-1/-aqh5-1/-4%4%JJ1 1h hL LfluhdwtetIsInlTlallZ*SKCtfjfr.fluhdwtetIsInlTlallZ*SKCtfjfr.lastLliMilastLliMiMiFiuliFiulijalflastLlmtzfrijirlj&lidovijalflastLlmtzfrijirlj&lidoviz zfelk.sln:felk.sln:但帕二rfnrfnT Tr*Lr*L3parrm&nuuk3parrm&nuuk Ifl*s-hIfl*s-h iEv|tfffast|ImgtT
16、i|iEv|tfffast|ImgtTi|rarMjfihrarMjfihJEKTJEKT:NHMKKKMHNHMKKKMH TmiamnooQaTmiamnooQa i i加MOcmiooQilMtuliwigfinMOcmiooQilMtuliwigfinEtEtA AL LT/FT/FALALd-pLtfd-pLtfE El lT T、qEII1nfirjwrirloqEII1nfirjwrirlonj.pcirlwnj.pcirlwnpArrlnpArrlriorrior nch1fi_rTuihnOFnch1fi_rTuihnOF.fnor.fnorr rliKliliKlimar,
17、flas.himar,flas.hiehruwuwcxjehruwuwcxjg優(yōu)agooagoo如dxocutaooaOnDOdxocutaooaOnDOZClOODaZClOODaIIII白1111怖口8 8口I IgtiOMMgtiOMM颯i i:C CM MOOOOC COCOODOCOOD| |LtiiDJjtlrlDLtiiDJjtlrlD TdgjriTdgjri* *riffnnrtjTriffnnrtjT;加PTWPTWtaitaitrtr皿更(r(r_pjrt1t1_pjrt1t1nri)nri)RihRih:使用SHELL#令測試FAL為了方便用戶驗證fal功能是否正常,以
18、及Flash驅(qū)動是否正確工作,分區(qū)表配置是否合理,RT-Thread為fal提供了一套測試命令:-prateflashckvie-prateflashckvieororpartitionbygivennanepartitionbygivennane屎蛙姮定I I當卜設備或分區(qū)- -reaidbytesstAftIngreaidbytesstAftIng尸.MTMT ( (e eow-ow-byLnbyLndatadata1 1CiArE.inoCiArE.ino國E E- -ersereersere1 1bytesstartimjataddrbytesstartimjataddr - -b*n
19、c*w*rkt-tsiwlihpb*nc*w*rkt-tsiwlihp rblocksizerblocksize.二UScMKUScMKSerial0MSerialfalprobonchip_fla5h-probed 后 flashdevFJiprutitiLjJdrlfiliofighFJiprutitiLjJdrlfiliofiProbed3flashpartition|c_partition|flish_dev:onchlp_fllash|offset:0|1en:393216|.imsh2、擦除命令mshfalpratief_partit1onmshfalpratief_partit1on44工probedAflahparr1r1cn|f_pirrIrHon|flahi_dv!nar_flaih|aff4i&ti|1#!10417a|.Tnshfalerue0512 語辟12?書Erasedatasuccess.StartfronErasedatasuccess.StartfronDxODOCDxODOC, ,0XK)03、寫數(shù)據(jù)命令Seridl-COMmah/日1write61Z3456Write由tasuccess.Strtfro
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 膽管癌肝內(nèi)轉移癌護理查房
- 2025年花藝師職業(yè)資格考試花藝作品展示與推廣試題卷
- 2025年安全生產(chǎn)應急管理演練試題集
- 2025年醫(yī)保知識考試題庫及答案:報銷流程難點解析試題
- 2025年注冊會計師考試《會計》會計分錄專項模擬試題解析版
- 2025年證券從業(yè)考試金融市場基礎知識難點解析試卷
- 2025年石英伸縮儀項目發(fā)展計劃
- 小班幼師個人工作總結
- 離職工作總結匯報
- 理學研究探索
- 急診預檢分診標準
- 高等職業(yè)學校建設標準(2022年版)
- 人防工程偽裝防護技術規(guī)范
- 高中物理分層教學實施方案
- 農(nóng)貿(mào)市場建設項目可行性研究報告
- 大學英語四級閱讀理解精讀100篇
- 思想道德與法治2023版第三章繼承優(yōu)良傳統(tǒng) 弘揚中國精神專題4第1講 教學設計
- 中國石油轉觀念勇?lián)攧?chuàng)一流心得體會 中國石油轉觀念勇?lián)攧?chuàng)一流心得
- 中石油職稱俄語
- 七年級歷史下冊(人教版1-5課)測試題
- 蘇州職業(yè)大學職業(yè)適應性測試題庫2021
評論
0/150
提交評論