採用檔案對映的方式模擬flash的讀寫

2021-09-13 15:23:31 字數 1970 閱讀 3995

在開發一些微控制器程式時,寫應用的人常常會用到讀寫flash的介面,一些微控制器除錯的時候並不是很方便,而寫應用的人一般不了解flash的底層驅動,這就給除錯造成了困難;另外寫驅動和寫應用為了能同步進行,一般寫驅動的人應提供給寫應用的人標準的介面。

為了能使寫應用的人能在整合ide下開發**,並且不受硬體的限制,本文寫了一段以檔案對映的方式來模擬flash讀寫的**,當然大家也可以以讀寫檔案的方式來模擬flash的讀寫操作。

以下**僅供學習交流,**並不太規範,不喜勿噴。

#include #include #include #include #include #include #include unsigned int eep_begin;

#define eep_init_val 0xff

#define eep_page_len 0x200

#define eep_page_coun 128

#define eep_len (eep_page_len*eep_page_coun)

#define setword(buffer, val) \

do \

while(0)

#define setdword(buffer, val) \

do \

while(0)

unsigned int _filesize;

static void hextostr(const unsigned char *buf,int len, char *ptr)

}static void arraytostr(const unsigned char *buf, int len, char *str)

unsigned char i;

memset(buf, eep_init_val, 16);

for(i=0;i((unsigned int)eep_begin+eep_len)) //

return;

fileaddr = getpos(addr);

if(fileaddr == 0)

unsigned char i;

for(i=0;i((unsigned int)eep_begin + eep_len))

return;

unsigned int fileaddr = getpos(addr);

unsigned char i;

unsigned char tbuf[16];

for(i=0;iint main(int argc, char *ar**)

if(creatflashfile(ar**[1])<0)

if(initflashfile(ar**[1])<0)

unsigned char buf[eep_page_len];

unsigned char rbuf[eep_page_len];

unsigned int i;

for(i=0; ibuf[i] = i;

writeflashpage(eep_begin+eep_page_len, buf);

readflashpage(eep_begin+eep_page_len, rbuf);

if(memcmp(buf, rbuf, eep_page_len) != 0)

eraseflashpage(eep_begin+eep_page_len);

readflashpage(eep_begin+eep_page_len, rbuf);

for(i=0; iif(rbuf[i] != 0xff)

printf("%s\n", "init flash success.");

if(munmap((char*)eep_begin, _filesize) < 0)

exit(exit_success);

}

Python記憶體對映檔案讀寫方式

我就廢話不多說了,還是直接看 吧!import os import time import mmap filename test.txt 如果不存在,建立。if not os.path.exists filename open filename,w print os.path.isdir filen...

搬 Linux C 記憶體對映方式讀寫檔案

5181人閱讀 2014 03 01 15 12 08 記憶體對映就是將磁碟上的檔案對映到系統記憶體中,對記憶體的修改可以同步到對磁碟檔案的修改。可以對大資料檔案處理,並且可以提高檔案的讀寫速度。include include include include include define numre...

樹莓派採用socket方式檔案傳輸(python)

兩個樹莓派,在同乙個區域網內,傳輸檔案,採用socket方式。client端 import socket import os import hashlib client socket.socket 生成socket,連線server ip port 192.168.137.210 12程式設計客棧3...