diff --git a/minichlink/minichlink.c b/minichlink/minichlink.c index 2fc7d32f0d245947d385df17ecb5e05cc024bb22..905fd6c035462e549705a43b71b19c62e3ea6a9b 100644 --- a/minichlink/minichlink.c +++ b/minichlink/minichlink.c @@ -375,8 +375,6 @@ keep_going: return -9; } - // Round up amount. - amount = ( amount + 3 ) & 0xfffffffc; FILE * f = 0; int hex = 0; if( strcmp( fname, "-" ) == 0 ) @@ -662,67 +660,6 @@ static int DefaultWaitForDoneOp( void * dev, int ignore ) { int r; uint32_t rrv; - uint32_t temp; - - //Debug regdump pre-command - #if 0 - MCF.ReadReg32(dev, DMDATA0, &temp); - fprintf(stderr, "Pr-DMDATA0: %08x\n", temp); - - MCF.ReadReg32(dev, DMDATA1, &temp); - fprintf(stderr, "Pr-DMDATA1: %08x\n", temp); - - MCF.ReadReg32(dev, DMCONTROL, &temp); - fprintf(stderr, "Pr-DMCONTROL: %08x\n", temp); - - MCF.ReadReg32(dev, DMSTATUS, &temp); - fprintf(stderr, "Pr-DMSTATUS: %08x\n", temp); - - MCF.ReadReg32(dev, DMHARTINFO, &temp); - fprintf(stderr, "Pr-DMHARTINFO: %08x\n", temp); - - MCF.ReadReg32(dev, DMABSTRACTCS, &temp); - fprintf(stderr, "Pr-DMABSTRACTCS: %08x\n", temp); - - MCF.ReadReg32(dev, DMCOMMAND, &temp); - fprintf(stderr, "Pr-DMCOMMAND: %08x\n", temp); - - MCF.ReadReg32(dev, DMABSTRACTAUTO, &temp); - fprintf(stderr, "Pr-DMABSTRACTAUTO: %08x\n", temp); - - MCF.ReadReg32(dev, DMPROGBUF0, &temp); - fprintf(stderr, "Pr-DMPROGBUF0: %08x\n", temp); - - MCF.ReadReg32(dev, DMPROGBUF1, &temp); - fprintf(stderr, "Pr-DMPROGBUF1: %08x\n", temp); - - MCF.ReadReg32(dev, DMPROGBUF2, &temp); - fprintf(stderr, "Pr-DMPROGBUF2: %08x\n", temp); - - MCF.ReadReg32(dev, DMPROGBUF3, &temp); - fprintf(stderr, "Pr-DMPROGBUF3: %08x\n", temp); - - MCF.ReadReg32(dev, DMPROGBUF4, &temp); - fprintf(stderr, "Pr-DMPROGBUF4: %08x\n", temp); - - MCF.ReadReg32(dev, DMPROGBUF5, &temp); - fprintf(stderr, "Pr-DMPROGBUF5: %08x\n", temp); - - MCF.ReadReg32(dev, DMPROGBUF6, &temp); - fprintf(stderr, "Pr-DMPROGBUF6: %08x\n", temp); - - MCF.ReadReg32(dev, DMPROGBUF7, &temp); - fprintf(stderr, "Pr-DMPROGBUF7: %08x\n", temp); - - MCF.ReadReg32(dev, DMCPBR, &temp); - fprintf(stderr, "Pr-DMCPBR: %08x\n", temp); - - MCF.ReadReg32(dev, DMCFGR, &temp); - fprintf(stderr, "Pr-DMCFGR: %08x\n", temp); - - MCF.ReadReg32(dev, DMSHDWCFGR, &temp); - fprintf(stderr, "Pr-DMSHDWCFGR: %08x\n", temp); - #endif do { @@ -731,66 +668,6 @@ static int DefaultWaitForDoneOp( void * dev, int ignore ) } while( rrv & (1<<12) ); - //Debug regdump post-command - #if 0 - MCF.ReadReg32(dev, DMDATA0, &temp); - fprintf(stderr, "Po-DMDATA0: %08x\n", temp); - - MCF.ReadReg32(dev, DMDATA1, &temp); - fprintf(stderr, "Po-DMDATA1: %08x\n", temp); - - MCF.ReadReg32(dev, DMCONTROL, &temp); - fprintf(stderr, "Po-DMCONTROL: %08x\n", temp); - - MCF.ReadReg32(dev, DMSTATUS, &temp); - fprintf(stderr, "Po-DMSTATUS: %08x\n", temp); - - MCF.ReadReg32(dev, DMHARTINFO, &temp); - fprintf(stderr, "Po-DMHARTINFO: %08x\n", temp); - - MCF.ReadReg32(dev, DMABSTRACTCS, &temp); - fprintf(stderr, "Po-DMABSTRACTCS: %08x\n", temp); - - MCF.ReadReg32(dev, DMCOMMAND, &temp); - fprintf(stderr, "Po-DMCOMMAND: %08x\n", temp); - - MCF.ReadReg32(dev, DMABSTRACTAUTO, &temp); - fprintf(stderr, "Po-DMABSTRACTAUTO: %08x\n", temp); - - MCF.ReadReg32(dev, DMPROGBUF0, &temp); - fprintf(stderr, "Po-DMPROGBUF0: %08x\n", temp); - - MCF.ReadReg32(dev, DMPROGBUF1, &temp); - fprintf(stderr, "Po-DMPROGBUF1: %08x\n", temp); - - MCF.ReadReg32(dev, DMPROGBUF2, &temp); - fprintf(stderr, "Po-DMPROGBUF2: %08x\n", temp); - - MCF.ReadReg32(dev, DMPROGBUF3, &temp); - fprintf(stderr, "Po-DMPROGBUF3: %08x\n", temp); - - MCF.ReadReg32(dev, DMPROGBUF4, &temp); - fprintf(stderr, "Po-DMPROGBUF4: %08x\n", temp); - - MCF.ReadReg32(dev, DMPROGBUF5, &temp); - fprintf(stderr, "Po-DMPROGBUF5: %08x\n", temp); - - MCF.ReadReg32(dev, DMPROGBUF6, &temp); - fprintf(stderr, "Po-DMPROGBUF6: %08x\n", temp); - - MCF.ReadReg32(dev, DMPROGBUF7, &temp); - fprintf(stderr, "Po-DMPROGBUF7: %08x\n", temp); - - MCF.ReadReg32(dev, DMCPBR, &temp); - fprintf(stderr, "Po-MCPBR: %08x\n", temp); - - MCF.ReadReg32(dev, DMCFGR, &temp); - fprintf(stderr, "Po-DMCFGR: %08x\n", temp); - - MCF.ReadReg32(dev, DMSHDWCFGR, &temp); - fprintf(stderr, "Po-DMSHDWCFGR: %08x\n", temp); - #endif - if( (rrv >> 8 ) & 7 ) { if( !ignore ) @@ -807,6 +684,7 @@ static int DefaultWaitForDoneOp( void * dev, int ignore ) default: errortext = "Other Error"; break; } + uint32_t temp; MCF.ReadReg32( dev, DMSTATUS, &temp ); fprintf( stderr, "Fault writing memory (DMABSTRACTS = %08x) (%s) DMSTATUS: %08x\n", rrv, errortext, temp ); } @@ -1345,8 +1223,7 @@ static int DefaultReadWord( void * dev, uint32_t address_to_read, uint32_t * dat } MCF.WriteReg32( dev, DMDATA1, address_to_read ); - //MCF.WriteReg32( dev, DMCOMMAND, 0x00241000 ); // Only execute. //AH removed as part of CH32V307 discussion - MCF.WriteReg32( dev, DMCOMMAND, 0x00261000 ); //AH replacement based on that discussion + MCF.WriteReg32( dev, DMCOMMAND, 0x00241000 ); iss->statetag = STTAG( "RDSQ" ); iss->currentstateval = address_to_read; diff --git a/minichlink/pgm-wch-linke.c b/minichlink/pgm-wch-linke.c index c07468846d57a5dd83deb1bbe79bc1b38c985322..2a3e516906f7ca4593bda13fc0cbd99a82d303d6 100644 --- a/minichlink/pgm-wch-linke.c +++ b/minichlink/pgm-wch-linke.c @@ -17,8 +17,8 @@ struct LinkEProgrammerStruct }; // For non-ch32v003 chips. -static int LEReadBinaryBlob( void * d, uint32_t offset, uint32_t amount, uint8_t * readbuff ); -static int InternalLinkEHaltMode( void * d, int mode ); +//static int LEReadBinaryBlob( void * d, uint32_t offset, uint32_t amount, uint8_t * readbuff ); +//static int InternalLinkEHaltMode( void * d, int mode ); //static int LEWriteBinaryBlob( void * d, uint32_t address_to_write, uint32_t len, uint8_t * blob ); #define WCHTIMEOUT 5000 @@ -232,12 +232,6 @@ static int LESetupInterface( void * d ) } uint32_t target_chip_type = ( rbuff[4] << 4) + (rbuff[5] >> 4); fprintf(stderr, "Chip Type: %03x\n", target_chip_type); - if( target_chip_type == 0x307 ) - { - fprintf( stderr, "CH32V307 Detected. Allowing old-flash-mode for operation.\n" ); - //MCF.WriteBinaryBlob = LEWriteBinaryBlob; - MCF.ReadBinaryBlob = LEReadBinaryBlob; - } // For some reason, if we don't do this sometimes the programmer starts in a hosey mode. MCF.WriteReg32( d, DMCONTROL, 0x80000001 ); // Make the debug module work properly. @@ -245,8 +239,7 @@ static int LESetupInterface( void * d ) MCF.WriteReg32( d, DMCONTROL, 0x80000001 ); // No, really make sure. MCF.WriteReg32( d, DMABSTRACTCS, 0x00000700 ); // Ignore any pending errors. MCF.WriteReg32( d, DMABSTRACTAUTO, 0 ); - //MCF.WriteReg32( d, DMCOMMAND, 0x00261000 ); // Read x0 (Null command) //AH changed as part of CH32V307 discussion - MCF.WriteReg32( d, DMCOMMAND, 0x00221000 ); // Read x0 (Null command) //AH replacement based on that discussion + MCF.WriteReg32( d, DMCOMMAND, 0x00221000 ); // Read x0 (Null command) with nopostexec (to fix v307 read issues) int r = 0; @@ -414,6 +407,7 @@ const uint8_t * bootloader = (const uint8_t*) int bootloader_len = 512; #endif +#if 0 static int InternalLinkEHaltMode( void * d, int mode ) { libusb_device_handle * dev = ((struct LinkEProgrammerStruct*)d)->devh; @@ -438,7 +432,9 @@ static int InternalLinkEHaltMode( void * d, int mode ) } return 0; } +#endif +#if 0 static int LEReadBinaryBlob( void * d, uint32_t offset, uint32_t amount, uint8_t * readbuff ) { libusb_device_handle * dev = ((struct LinkEProgrammerStruct*)d)->devh; @@ -496,6 +492,7 @@ static int LEReadBinaryBlob( void * d, uint32_t offset, uint32_t amount, uint8_t return 0; } +#endif #if 0 static int LEWriteBinaryBlob( void * d, uint32_t address_to_write, uint32_t len, uint8_t * blob )