/*********************************************************************** Copyright © 2019 Jean Michault. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . *************************************************************************/ #include #include #include #include #include #include #include #include "CCDebugger.h" void writeHexLine(FILE * fic,uint8_t *buf, int len,int offset) { int i=0; for(i=0 ; i>8)&0xff); fprintf(fic,":%02X%04X00",len,offset); for(int i=0 ; i= argc ) { helpo(); exit(1); } FILE * ficout = fopen(argv[optind],"w"); if(!ficout) { fprintf(stderr," Can't open file %s.\n",argv[optind]); exit(1); } // initialize GPIO ports cc_init(rePin,dcPin,ddPin); if(setMult>0) cc_setmult(setMult); // enter debug mode cc_enter(); // get ChipID : uint16_t ID; ID = cc_getChipID(); printf(" ID = %04x.\n",ID); uint16_t offset=0; uint8_t bank=0; int progress=1; // int nbread=0; for( bank=0 ; bank<8 ; bank++) { printf(".");fflush(stdout); if(! (bank&1)) { uint8_t sum=2+4+(bank/2); fprintf(ficout,":02000004%04X%02X\n",bank/2,(-sum)&255 ); } offset=0; int len=0; uint8_t buf[17]; for ( uint16_t i=0 ; i<32 ; i++ ) { do { read1k(bank,i*1024, buf1); read1k(bank,i*1024, buf2); // nbread++; //if(memcmp(buf1,buf2,1024)) // {printf("x");fflush(stdout);} } while(memcmp(buf1,buf2,1024)); for(uint16_t j=0 ; j<64 ; j++) writeHexLine(ficout,buf1+j*16, 16,(bank&1)*32*1024+ i*1024+j*16); printf("\r reading %dk/256k",progress++);fflush(stdout); } } // fprintf(stderr,"nbread=%d\n",nbread); fprintf(ficout,":00000001FF\n"); // exit from debug cc_setActive(false); // reboot cc_reset(); fclose(ficout); }