#include #include #include #include #include #include #define ROMSIZE 24*1024*1024 int main() { unsigned char *virt; int fd; int out; int written; int i; fd = open("/dev/mem", O_RDWR); virt = mmap(NULL, ROMSIZE, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_SHARED, fd, 0x00000); if (virt == MAP_FAILED) { printf("mmap failed"); exit(1); } out = open("rom", O_RDWR | O_CREAT); written = 0; while(written < ROMSIZE) { i=write(out,virt+written,ROMSIZE-written); if(i<0) { perror("error writing"); exit(1); } written += i; fprintf(stderr,"written: %d\n",written); } close(out); close(fd); printf("%d bytes written\n",written); exit(0); }