Browse Source

increased default delays for better stability.

added reset at end of operations.
added option to fix delay multiplier.
added instructions if something go wrong.
master
jmichault 5 years ago
parent
commit
e1067774f0
12 changed files with 68 additions and 6 deletions
  1. +2
    -0
      .gitignore
  2. +18
    -2
      CCDebugger.c
  3. +3
    -0
      CCDebugger.h
  4. +9
    -0
      README.md
  5. BIN
      cc_chipid
  6. +9
    -1
      cc_chipid.c
  7. BIN
      cc_erase
  8. +7
    -1
      cc_erase.c
  9. BIN
      cc_read
  10. +11
    -1
      cc_read.c
  11. BIN
      cc_write
  12. +9
    -1
      cc_write.c

+ 2
- 0
.gitignore View File

@@ -0,0 +1,2 @@
*.o
toto*

+ 18
- 2
CCDebugger.c View File

@@ -174,7 +174,7 @@ uint8_t cc_error()
* Delay a particular number of cycles * Delay a particular number of cycles
*/ */
struct timespec tp={0,0}; struct timespec tp={0,0};
static int cc_delay_mult=50;
static int cc_delay_mult=80;
void cc_delay( unsigned char d ) void cc_delay( unsigned char d )
{ {
volatile unsigned int i = cc_delay_mult*d; volatile unsigned int i = cc_delay_mult*d;
@@ -184,6 +184,11 @@ void cc_delay( unsigned char d )


} }


void cc_setmult(int mult)
{
cc_delay_mult=mult;
}

/* provas konsideri la rapidecon de la procesoro */ /* provas konsideri la rapidecon de la procesoro */
void cc_delay_calibrate( ) void cc_delay_calibrate( )
{ {
@@ -194,7 +199,7 @@ void cc_delay_calibrate( )
cc_delay(200); cc_delay(200);
cc_delay(200); cc_delay(200);
long time1=micros(); long time1=micros();
cc_delay_mult=cc_delay_mult*200/(time1-time0);
cc_delay_mult=cc_delay_mult*400/(time1-time0);
} }


/** /**
@@ -406,6 +411,17 @@ void cc_setDDDirection( uint8_t direction )


} }


void cc_reset()
{
pinMode(pinDC, INPUT);
pinMode(pinDD, INPUT);
pinMode(pinRST, OUTPUT);
cc_delay(200);
pinMode(pinRST, LOW);
cc_delay(500);
pinMode(pinRST, INPUT);
}

///////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////
//// HIGH LEVEL FUNCTIONS //// //// HIGH LEVEL FUNCTIONS ////


+ 3
- 0
CCDebugger.h View File

@@ -22,9 +22,12 @@


int cc_init( int pinRST, int pinDC, int pinDD ); int cc_init( int pinRST, int pinDC, int pinDD );
void cc_delay( unsigned char d ); void cc_delay( unsigned char d );
void cc_setmult(int mult);


uint8_t cc_error(); uint8_t cc_error();


void cc_reset();

//////////////////////////// ////////////////////////////
// High-Level interaction // High-Level interaction
//////////////////////////// ////////////////////////////


+ 9
- 0
README.md View File

@@ -57,6 +57,7 @@ all commands accept following arguments :
-c pin : change pin_DC (default 27) -c pin : change pin_DC (default 27)
-d pin : change pin_DD (default 28) -d pin : change pin_DD (default 28)
-r pin : change reset pin (default 24) -r pin : change reset pin (default 24)
-m : change multiplier for time delay (default auto)


the pin numbering used is that of wiringPi. Use "gpio readall" to have the layout on your pi (wPi column). the pin numbering used is that of wiringPi. Use "gpio readall" to have the layout on your pi (wPi column).


@@ -77,6 +78,14 @@ and now you can read chip id, save flash content, erase flash, and write flash w


You can also change default values in CCDebugger.h and recompile executables with make. You can also change default values in CCDebugger.h and recompile executables with make.


## what to try if it doesn't work?
### stop all other programs before flash.
### use the -m option to increase time delays used. Example :
```bash
./cc_write -m 300 CC2531ZNP-Pro.hex
```
### executables are compiled on my raspbian distribition, you can try to recompile for your distribution with make.

## License ## License


This project is licensed under the GPL v3 license (see COPYING). This project is licensed under the GPL v3 license (see COPYING).


BIN
cc_chipid View File


+ 9
- 1
cc_chipid.c View File

@@ -30,6 +30,7 @@ void helpo()
fprintf(stderr," -c : change pin_DC (default 27)\n"); fprintf(stderr," -c : change pin_DC (default 27)\n");
fprintf(stderr," -d : change pin_DD (default 28)\n"); fprintf(stderr," -d : change pin_DD (default 28)\n");
fprintf(stderr," -r : change reset pin (default 24)\n"); fprintf(stderr," -r : change reset pin (default 24)\n");
fprintf(stderr," -m : change multiplier for time delay (default auto)\n");
} }


int main(int argc,char *argv[]) int main(int argc,char *argv[])
@@ -38,10 +39,14 @@ int main(int argc,char *argv[])
int rePin=-1; int rePin=-1;
int dcPin=-1; int dcPin=-1;
int ddPin=-1; int ddPin=-1;
while( (opt=getopt(argc,argv,"d:c:r:h?")) != -1)
int setMult=-1;
while( (opt=getopt(argc,argv,"m:d:c:r:h?")) != -1)
{ {
switch(opt) switch(opt)
{ {
case 'm' :
setMult=atoi(optarg);
break;
case 'd' : // DD pinglo case 'd' : // DD pinglo
ddPin=atoi(optarg); ddPin=atoi(optarg);
break; break;
@@ -60,6 +65,7 @@ int main(int argc,char *argv[])
} }
// initialize GPIO and debugger // initialize GPIO and debugger
cc_init(rePin,dcPin,ddPin); cc_init(rePin,dcPin,ddPin);
if(setMult>0) cc_setmult(setMult);
// enter debug mode // enter debug mode
cc_enter(); cc_enter();
// get ChipID : // get ChipID :
@@ -67,4 +73,6 @@ int main(int argc,char *argv[])
res = cc_getChipID(); res = cc_getChipID();
printf(" ID = %04x.\n",res); printf(" ID = %04x.\n",res);
cc_setActive(false); cc_setActive(false);
// reboot
cc_reset();
} }

BIN
cc_erase View File


+ 7
- 1
cc_erase.c View File

@@ -30,6 +30,7 @@ void helpo()
fprintf(stderr," -c : change pin_DC (default 27)\n"); fprintf(stderr," -c : change pin_DC (default 27)\n");
fprintf(stderr," -d : change pin_DD (default 28)\n"); fprintf(stderr," -d : change pin_DD (default 28)\n");
fprintf(stderr," -r : change reset pin (default 24)\n"); fprintf(stderr," -r : change reset pin (default 24)\n");
fprintf(stderr," -m : change multiplier for time delay (default auto)\n");
} }


int main(int argc,char *argv[]) int main(int argc,char *argv[])
@@ -38,10 +39,14 @@ int main(int argc,char *argv[])
int rePin=-1; int rePin=-1;
int dcPin=-1; int dcPin=-1;
int ddPin=-1; int ddPin=-1;
while( (opt=getopt(argc,argv,"d:c:r:h?")) != -1)
int setMult=-1;
while( (opt=getopt(argc,argv,"m:d:c:r:h?")) != -1)
{ {
switch(opt) switch(opt)
{ {
case 'm' :
setMult=atoi(optarg);
break;
case 'd' : // DD pinglo case 'd' : // DD pinglo
ddPin=atoi(optarg); ddPin=atoi(optarg);
break; break;
@@ -60,6 +65,7 @@ int main(int argc,char *argv[])
} }
// initialize GPIO and debugger // initialize GPIO and debugger
cc_init(rePin,dcPin,ddPin); cc_init(rePin,dcPin,ddPin);
if(setMult>0) cc_setmult(setMult);
// enter debug mode // enter debug mode
cc_enter(); cc_enter();
// get ChipID : // get ChipID :


BIN
cc_read View File


+ 11
- 1
cc_read.c View File

@@ -66,6 +66,7 @@ void helpo()
fprintf(stderr," -c : change pin_DC (default 27)\n"); fprintf(stderr," -c : change pin_DC (default 27)\n");
fprintf(stderr," -d : change pin_DD (default 28)\n"); fprintf(stderr," -d : change pin_DD (default 28)\n");
fprintf(stderr," -r : change reset pin (default 24)\n"); fprintf(stderr," -r : change reset pin (default 24)\n");
fprintf(stderr," -m : change multiplier for time delay (default auto)\n");
} }


int main(int argc,char *argv[]) int main(int argc,char *argv[])
@@ -74,10 +75,14 @@ int main(int argc,char *argv[])
int rePin=-1; int rePin=-1;
int dcPin=-1; int dcPin=-1;
int ddPin=-1; int ddPin=-1;
while( (opt=getopt(argc,argv,"d:c:r:h?")) != -1)
int setMult=-1;
while( (opt=getopt(argc,argv,"m:d:c:r:h?")) != -1)
{ {
switch(opt) switch(opt)
{ {
case 'm' :
setMult=atoi(optarg);
break;
case 'd' : // DD pinglo case 'd' : // DD pinglo
ddPin=atoi(optarg); ddPin=atoi(optarg);
break; break;
@@ -99,6 +104,7 @@ int main(int argc,char *argv[])
if(!ficout) { fprintf(stderr," Can't open file %s.\n",argv[optind]); exit(1); } if(!ficout) { fprintf(stderr," Can't open file %s.\n",argv[optind]); exit(1); }
// initialize GPIO ports // initialize GPIO ports
cc_init(rePin,dcPin,ddPin); cc_init(rePin,dcPin,ddPin);
if(setMult>0) cc_setmult(setMult);
// enter debug mode // enter debug mode
cc_enter(); cc_enter();
// get ChipID : // get ChipID :
@@ -128,6 +134,8 @@ int main(int argc,char *argv[])
read1k(bank,i*1024, buf1); read1k(bank,i*1024, buf1);
read1k(bank,i*1024, buf2); read1k(bank,i*1024, buf2);
// nbread++; // nbread++;
//if(memcmp(buf1,buf2,1024))
// {printf("x");fflush(stdout);}
} while(memcmp(buf1,buf2,1024)); } while(memcmp(buf1,buf2,1024));
for(uint16_t j=0 ; j<64 ; j++) for(uint16_t j=0 ; j<64 ; j++)
writeHexLine(ficout,buf1+j*16, 16,(bank&1)*32*1024+ i*1024+j*16); writeHexLine(ficout,buf1+j*16, 16,(bank&1)*32*1024+ i*1024+j*16);
@@ -138,6 +146,8 @@ int main(int argc,char *argv[])
fprintf(ficout,":00000001FF\n"); fprintf(ficout,":00000001FF\n");
// exit from debug // exit from debug
cc_setActive(false); cc_setActive(false);
// reboot
cc_reset();
fclose(ficout); fclose(ficout);


} }

BIN
cc_write View File


+ 9
- 1
cc_write.c View File

@@ -223,6 +223,7 @@ void helpo()
fprintf(stderr," -c : change pin_DC (default 27)\n"); fprintf(stderr," -c : change pin_DC (default 27)\n");
fprintf(stderr," -d : change pin_DD (default 28)\n"); fprintf(stderr," -d : change pin_DD (default 28)\n");
fprintf(stderr," -r : change reset pin (default 24)\n"); fprintf(stderr," -r : change reset pin (default 24)\n");
fprintf(stderr," -m : change multiplier for time delay (default auto)\n");
} }


int main(int argc,char *argv[]) int main(int argc,char *argv[])
@@ -231,10 +232,14 @@ int main(int argc,char *argv[])
int rePin=24; int rePin=24;
int dcPin=27; int dcPin=27;
int ddPin=28; int ddPin=28;
while( (opt=getopt(argc,argv,"d:c:r:h?")) != -1)
int setMult=-1;
while( (opt=getopt(argc,argv,"m:d:c:r:h?")) != -1)
{ {
switch(opt) switch(opt)
{ {
case 'm' :
setMult=atoi(optarg);
break;
case 'd' : // DD pinglo case 'd' : // DD pinglo
ddPin=atoi(optarg); ddPin=atoi(optarg);
break; break;
@@ -256,6 +261,7 @@ int main(int argc,char *argv[])
if(!ficin) { fprintf(stderr," Can't open file %s.\n",argv[optind]); exit(1); } if(!ficin) { fprintf(stderr," Can't open file %s.\n",argv[optind]); exit(1); }
// on initialise les ports GPIO et le debugger // on initialise les ports GPIO et le debugger
cc_init(rePin,dcPin,ddPin); cc_init(rePin,dcPin,ddPin);
if(setMult>0) cc_setmult(setMult);
// entrée en mode debug // entrée en mode debug
cc_enter(); cc_enter();
// envoi de la commande getChipID : // envoi de la commande getChipID :
@@ -364,6 +370,8 @@ int main(int argc,char *argv[])


// sortie du mode debug et désactivation : // sortie du mode debug et désactivation :
cc_setActive(false); cc_setActive(false);
// reboot
cc_reset();
fclose(ficin); fclose(ficin);


} }


Loading…
Cancel
Save