在開發一些微控制器程式時,寫應用的人常常會用到讀寫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...