Memory底層API使用說明_第1頁
Memory底層API使用說明_第2頁
Memory底層API使用說明_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、Memory底層API使用說明1. MemoryAPI接口函數(shù)E2P,commit_transactionAl|E2P_stream_open l|E2P_stream_flushE2P_writeI ”E2P_stream_write_u8/u16/u32l|E2P_stream_write_array11 E2P_stream_fill_arrayE2P_write_u8 E2P_write_u16 E2P_write_u32E2P_write_array E2P_fill_arraymem_write_u8 mem_write_u16 mem_write_u32 mem_write_ar

2、ray mem_fill_arraymem_write_u8_atomic mem_write_u16_atomic mem_write_u32_atomic mem_write_array_atomicE2P_read_u8/16/32/array>>RAM CACHEE2P_write_u8/16/32/array_atomicmem_read_u8 mem_read_u16 mem_read_u32 mem_read_array mem_array_compareRAMRAM_read_u8/16/32/ array> >RAM_write_u8/ u16/u32

3、 /arrayRAM_fill_arrayCode_read_u8/16/32/arrayCode_write_u8/16/32/arrayCode_write_u8/16/32/array_atomic ref_to_pointer_code底層Memory API讀寫函數(shù)如下圖所示:Data_table_init Data_a110c Data_free Data_AvailableCode table initCode_a110cByteCode_freeCodeCode_Availablertr_allocNativedtr_allocMethodrtrAvailabledtrAvai

4、lableADM.Manage關(guān)于Memory讀寫的方式,共有如下幾類:1.1 E2P_writeI最底層的Memory讀寫函數(shù),它要考慮Flash的頁邊界對(duì)齊。1.2 E2P_stream_*使用:E2P_stream_open(destAddr);E2P_stream_write_u8/16/32/array或E2P_stream_fill_arrayE2P_stream_flush();Flash擦寫次數(shù),提高寫Flash的效率。1.3 E2P_write_u8/u16/u32/arrayE2P_fill_array基于E2P_stream_*之上的函數(shù)集合,它是non-Atomic操作

5、,用于不考慮交易的非原子性情況。例如:卡初始化時(shí)機(jī)等。注意一點(diǎn):當(dāng)E2P_write_array時(shí),需要考慮源地址,源地址+len是否被緩存。1.4 E2P_read_u8/u16/u32/array從Flash中指定地址讀取數(shù)據(jù)。由于引入CacheTransaction機(jī)制,F(xiàn)lash中實(shí)際的數(shù)據(jù)可能是dirty的,這時(shí)就需要從Cache中讀取。在Memory接口圖中,能夠看出,該模塊左側(cè)為E2P或RAMCACHE個(gè)方塊,表示實(shí)際數(shù)據(jù)可能從E2P和RAMCACHE得到。A. 假如讀取的數(shù)據(jù)位于同一個(gè)sector內(nèi),先從transactioncache中查找要讀取的地址是否已緩存,假如以緩存那

6、么為hit,否那么為miss。假如hit那么從cache中讀取,否那么從MEW讀取。B. 假如讀取的數(shù)據(jù)跨sector邊界,那么先要按sector拆分地址,分別按A步驟讀取部分?jǐn)?shù)據(jù)。再將數(shù)據(jù)組合。1.5 E2P_write_u8/u16/u32/array_atomicAtomic寫操作。該類函數(shù)實(shí)際并不寫Flash,它只是將要更新的內(nèi)容更新到Cache中去。等到Commit_transaction時(shí)候再將RAMCach井的數(shù)據(jù)更新到Flash中去。A假如要寫的數(shù)據(jù)處于同一個(gè)sector內(nèi),先從transactioncache中查找要寫入的地址是否已緩存,假如hit,那么改寫緩存的數(shù)據(jù)。否那么

7、添加到transactioncache一個(gè)新的記錄。將數(shù)據(jù)內(nèi)容寫入。8 假如要寫入的數(shù)據(jù)跨sector邊界,那么先要按sector邊界拆分寫入的地址及數(shù)據(jù)長度,分別按A步驟寫入部分?jǐn)?shù)據(jù)。1.6 RAM_*該類函數(shù)提供了對(duì)RAM勺讀寫操作。1.7 Mem_write_u8/16/32/array這類函數(shù)依照地址判斷地址所對(duì)應(yīng)的存儲(chǔ)介質(zhì)是如是E2P,那么用1.3中的對(duì)應(yīng)函數(shù)操作。1.8 Mem_write_u8/16/32/array_atomic這類函數(shù)依照地址判斷地址所對(duì)應(yīng)的存儲(chǔ)介質(zhì)是如是E2P,那么用1.5中的對(duì)應(yīng)函數(shù)操作。1.9 Code_*對(duì) Class 區(qū)的操作,這類函數(shù)造作的地址基本

8、上們調(diào)用了相應(yīng)的 1.3 和 1.5 中的函數(shù)。RAMm日E2P,假如是RAMIB么用1.6中的對(duì)應(yīng)函數(shù)操作, 假RAMm日E2P,假如是RAMIB么用1.6中的對(duì)應(yīng)函數(shù)操作, 假Ref 地址,不是絕對(duì)物理地址。它實(shí)際上是一組宏定義,他1.10 Class 區(qū)的治理函數(shù) Code_table_init Code_alloc Code_free Code_available1.11 Heap 區(qū)的治理函數(shù) Data_table_init Data_alloc Data_free Data_available初始化 Class 區(qū)內(nèi)存治理表從 Code 區(qū)分配一塊內(nèi)存空間刪除從Code 區(qū)分配的空間返回 Code 區(qū)可用的空間初始化Data 區(qū)內(nèi)存治理表從 Data 區(qū)分配一塊內(nèi)存空間刪除從 Data 區(qū)分配的空間返回 Data 區(qū)可用的空間1.12 RTR/DTR間的治理函數(shù)這類函數(shù)要緊對(duì)RTR/DTRS行操作。RTR/DTR的治理信息放在卡注冊(cè)表中。Rtr_allocRTR空間的分配函數(shù)Dtr_allocDTR空間的分配函數(shù)Rtr_available返

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論