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;
}
}
return f;
}
+static const char *portname = "/dev/cu.usbserial-AL0254JM";
+
static void usage(const char *argv0)
{
printf("usage:\n"
"%s [options]\n"
- " -d <ttydevice> (default /dev/ttyUSB0)\n"
+ " -d <ttydevice> (default %s)\n"
" -r <file> [size] dump the cart (default 4MB)\n"
" -w <file> [size] program the flash (def. file size)\n"
" -s <file> [size] simple write (SRAM, etc, def. file size)\n"
" -8 8bit flash\n"
" -v verify written data\n"
" -i get info about the flash chip\n"
- , argv0);
+ , argv0, portname);
exit(1);
}
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;