RISC-V/minichlink/3564ce8b030428153a53003d6be79729463fa63b.patch

50 lines
2.3 KiB
Diff
Raw Normal View History

2025-02-05 15:55:13 +01:00
diff -Naurw ./old/microgdbstub.h ./new/microgdbstub.h
--- ./old/microgdbstub.h 2025-02-05 14:31:54.679397633 +0100
+++ ./new/microgdbstub.h 2025-02-05 12:22:13.979925751 +0100
@@ -286,6 +286,7 @@
int mslen = strlen( MICROGDBSTUB_MEMORY_MAP ) + 32;
char map[mslen];
struct InternalState * iss = (struct InternalState*)(((struct ProgrammerStructBase*)dev)->internal);
+ printf("flash=0x%X, ss=%d, ram=0x%X\n", iss->flash_size, iss->sector_size, iss->ram_size);
snprintf( map, mslen, MICROGDBSTUB_MEMORY_MAP, iss->flash_size, iss->sector_size, iss->ram_size );
SendReplyFull( map );
}
diff -Naurw ./old/minichlink.c ./new/minichlink.c
--- ./old/minichlink.c 2025-02-05 14:31:54.683397570 +0100
+++ ./new/minichlink.c 2025-02-05 13:59:27.185611922 +0100
@@ -78,7 +78,7 @@
struct InternalState * iss = calloc( 1, sizeof( struct InternalState ) );
((struct ProgrammerStructBase*)dev)->internal = iss;
iss->ram_base = 0x20000000;
- iss->ram_size = 2048;
+ iss->ram_size = 4*0x400; // minimal size for CH32V003
iss->sector_size = 64;
iss->flash_size = 16384;
iss->target_chip_type = 0;
diff -Naurw ./old/pgm-wch-linke.c ./new/pgm-wch-linke.c
--- ./old/pgm-wch-linke.c 2025-02-05 14:31:54.683397570 +0100
+++ ./new/pgm-wch-linke.c 2025-02-05 13:40:17.011872846 +0100
@@ -413,7 +413,8 @@
fprintf( stderr, "Error: could not get part status\n" );
return -1;
}
- fprintf( stderr, "Flash Storage: %d kB\n", (rbuff[2]<<8) | rbuff[3] ); // Is this Flash size?
+ const uint32_t flskb = ((uint32_t)rbuff[2]<<8) | rbuff[3];
+ fprintf( stderr, "Flash Storage: %d kB\n", flskb ); // Is this Flash size?
fprintf( stderr, "Part UUID : %02x-%02x-%02x-%02x-%02x-%02x-%02x-%02x\n", rbuff[4], rbuff[5], rbuff[6], rbuff[7], rbuff[8], rbuff[9], rbuff[10], rbuff[11] );
fprintf( stderr, "PFlags : %02x-%02x-%02x-%02x\n", rbuff[12], rbuff[13], rbuff[14], rbuff[15] );
fprintf( stderr, "Part Type (B): %02x-%02x-%02x-%02x\n", rbuff[16], rbuff[17], rbuff[18], rbuff[19] );
@@ -431,7 +432,11 @@
fprintf(stderr, "Read protection: disabled\n");
}
- iss->flash_size = ((rbuff[2]<<8) | rbuff[3])*1024;
+ iss->flash_size = flskb * 0x400u;
+ if (chip == CHIP_CH32V20x) { // diferent version chip
+ if (flskb > 32u) iss->ram_size = 20u * 0x400u; // 64K
+ else iss->ram_size = 10u * 0x400u; // 32K
+ }
return 0;
}