X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=flashkit.c;h=00819c460ae2350ebdc6f95a2f3a3f07d3b477b1;hb=af236294d24fb1bff39ee38bb15dca6d732d0f95;hp=1dc54d930a45df82409d6038d8e2546aeb8951f2;hpb=78ad81397a40de75d279d6a17969d04a2503785c;p=flashkit-mdc.git diff --git a/flashkit.c b/flashkit.c index 1dc54d9..00819c4 100644 --- a/flashkit.c +++ b/flashkit.c @@ -406,17 +406,23 @@ static void read_info(int fd) static uint32_t get_block_addr(uint32_t addr, uint32_t blk_offset) { - uint32_t i; + uint32_t i, base, faddr; assert(info.region_cnt); + assert(info.size); + + // get a flash address to allow mapper hardware + faddr = addr & (info.size - 1); + base = addr & ~(info.size - 1); + for (i = 0; i < info.region_cnt; i++) { - if (info.region[i].start <= addr - && addr < info.region[i].start + info.region[i].size) + if (info.region[i].start <= faddr + && faddr < info.region[i].start + info.region[i].size) { - uint32_t blk = (addr - info.region[i].start) + uint32_t blk = (faddr - info.region[i].start) / info.region[i].block_size + blk_offset; - return info.region[i].start + return base + info.region[i].start + blk * info.region[i].block_size; } } @@ -460,11 +466,13 @@ static FILE *open_prep_read(const char *fname, long *size) return f; } +static const char *portname = "/dev/cu.usbserial-AL0254JM"; + static void usage(const char *argv0) { printf("usage:\n" "%s [options]\n" - " -d (default /dev/ttyUSB0)\n" + " -d (default %s)\n" " -r [size] dump the cart (default 4MB)\n" " -w [size] program the flash (def. file size)\n" " -s [size] simple write (SRAM, etc, def. file size)\n" @@ -473,7 +481,7 @@ static void usage(const char *argv0) " -8 8bit flash\n" " -v verify written data\n" " -i get info about the flash chip\n" - , argv0); + , argv0, portname); exit(1); } @@ -498,7 +506,6 @@ static uint8_t g_block2[0x10000]; int main(int argc, char *argv[]) { - const char *portname = "/dev/ttyUSB0"; const char *fname_w = NULL; const char *fname_r = NULL; const char *fname_ws = NULL;