diff options
Diffstat (limited to 'iceprog')
-rw-r--r-- | iceprog/iceprog.c | 98 |
1 files changed, 47 insertions, 51 deletions
diff --git a/iceprog/iceprog.c b/iceprog/iceprog.c index 1c2820c..ec71fd0 100644 --- a/iceprog/iceprog.c +++ b/iceprog/iceprog.c @@ -48,7 +48,8 @@ void check_rx() while (1) { uint8_t data; int rc = ftdi_read_data(&ftdic, &data, 1); - if (rc <= 0) break; + if (rc <= 0) + break; fprintf(stderr, "unexpected rx byte: %02X\n", data); } } @@ -97,8 +98,8 @@ void send_spi(uint8_t *data, int n) return; send_byte(0x11); - send_byte(n-1); - send_byte((n-1) >> 8); + send_byte(n - 1); + send_byte((n - 1) >> 8); int rc = ftdi_write_data(&ftdic, data, n); if (rc != n) { @@ -113,8 +114,8 @@ void xfer_spi(uint8_t *data, int n) return; send_byte(0x31); - send_byte(n-1); - send_byte((n-1) >> 8); + send_byte(n - 1); + send_byte((n - 1) >> 8); int rc = ftdi_write_data(&ftdic, data, n); if (rc != n) { @@ -229,7 +230,7 @@ void flash_prog(int addr, uint8_t *data, int n) if (verbose) for (int i = 0; i < n; i++) - fprintf(stderr, "%02x%c", data[i], i == n-1 || i % 32 == 31 ? '\n' : ' '); + fprintf(stderr, "%02x%c", data[i], i == n - 1 || i % 32 == 31 ? '\n' : ' '); } void flash_read(int addr, uint8_t *data, int n) @@ -246,7 +247,7 @@ void flash_read(int addr, uint8_t *data, int n) if (verbose) for (int i = 0; i < n; i++) - fprintf(stderr, "%02x%c", data[i], i == n-1 || i % 32 == 31 ? '\n' : ' '); + fprintf(stderr, "%02x%c", data[i], i == n - 1 || i % 32 == 31 ? '\n' : ' '); } void flash_wait() @@ -254,8 +255,7 @@ void flash_wait() if (verbose) fprintf(stderr, "waiting.."); - while (1) - { + while (1) { uint8_t data[2] = { 0x05 }; set_gpio(0, 0); @@ -365,18 +365,20 @@ int main(int argc, char **argv) int opt; char *endptr; while ((opt = getopt_long(argc, argv, "d:I:rR:o:cbnStv", - long_options, NULL)) != -1) - { - switch (opt) - { + long_options, NULL)) != -1) { + switch (opt) { case 'd': devstr = optarg; break; case 'I': - if (!strcmp(optarg, "A")) ifnum = INTERFACE_A; - else if (!strcmp(optarg, "B")) ifnum = INTERFACE_B; - else if (!strcmp(optarg, "C")) ifnum = INTERFACE_C; - else if (!strcmp(optarg, "D")) ifnum = INTERFACE_D; + if (!strcmp(optarg, "A")) + ifnum = INTERFACE_A; + else if (!strcmp(optarg, "B")) + ifnum = INTERFACE_B; + else if (!strcmp(optarg, "C")) + ifnum = INTERFACE_C; + else if (!strcmp(optarg, "D")) + ifnum = INTERFACE_D; else errx(EXIT_FAILURE, "`%s' is not a valid interface (must be " @@ -388,18 +390,24 @@ int main(int argc, char **argv) case 'R': read_mode = true; read_size = strtol(optarg, &endptr, 0); - if (*endptr == '\0') /* ok */; - else if (!strcmp(endptr, "k")) read_size *= 1024; - else if (!strcmp(endptr, "M")) read_size *= 1024 * 1024; + if (*endptr == '\0') + /* ok */; + else if (!strcmp(endptr, "k")) + read_size *= 1024; + else if (!strcmp(endptr, "M")) + read_size *= 1024 * 1024; else errx(EXIT_FAILURE, "`%s' is not a valid size", optarg); break; case 'o': rw_offset = strtol(optarg, &endptr, 0); - if (*endptr == '\0') /* ok */; - else if (!strcmp(endptr, "k")) rw_offset *= 1024; - else if (!strcmp(endptr, "M")) rw_offset *= 1024 * 1024; + if (*endptr == '\0') + /* ok */; + else if (!strcmp(endptr, "k")) + rw_offset *= 1024; + else if (!strcmp(endptr, "M")) + rw_offset *= 1024 * 1024; else errx(EXIT_FAILURE, "`%s' is not a valid offset", optarg); @@ -613,8 +621,7 @@ int main(int argc, char **argv) usleep(100000); - if (test_mode) - { + if (test_mode) { fprintf(stderr, "reset..\n"); set_gpio(1, 0); @@ -632,9 +639,7 @@ int main(int argc, char **argv) usleep(250000); fprintf(stderr, "cdone: %s\n", get_cdone() ? "high" : "low"); - } - else if (prog_sram) - { + } else if (prog_sram) { // --------------------------------------------------------- // Reset // --------------------------------------------------------- @@ -655,11 +660,11 @@ int main(int argc, char **argv) // --------------------------------------------------------- fprintf(stderr, "programming..\n"); - while (1) - { + while (1) { static unsigned char buffer[4096]; int rc = fread(buffer, 1, 4096, f); - if (rc <= 0) break; + if (rc <= 0) + break; if (verbose) fprintf(stderr, "sending %d bytes.\n", rc); send_spi(buffer, rc); @@ -675,9 +680,7 @@ int main(int argc, char **argv) send_byte(0x00); fprintf(stderr, "cdone: %s\n", get_cdone() ? "high" : "low"); - } - else - { + } else { // --------------------------------------------------------- // Reset // --------------------------------------------------------- @@ -698,18 +701,13 @@ int main(int argc, char **argv) // Program // --------------------------------------------------------- - if (!read_mode && !check_mode) - { - if (!dont_erase) - { - if (bulk_erase) - { + if (!read_mode && !check_mode) { + if (!dont_erase) { + if (bulk_erase) { flash_write_enable(); flash_bulk_erase(); flash_wait(); - } - else - { + } else { fprintf(stderr, "file size: %ld\n", file_size); int begin_addr = rw_offset & ~0xffff; @@ -729,7 +727,8 @@ int main(int argc, char **argv) uint8_t buffer[256]; int page_size = 256 - (rw_offset + addr) % 256; rc = fread(buffer, 1, page_size, f); - if (rc <= 0) break; + if (rc <= 0) + break; flash_write_enable(); flash_prog(rw_offset + addr, buffer, rc); flash_wait(); @@ -739,13 +738,11 @@ int main(int argc, char **argv) fseek(f, 0, SEEK_SET); } - // --------------------------------------------------------- // Read/Verify // --------------------------------------------------------- - if (read_mode) - { + if (read_mode) { fprintf(stderr, "reading..\n"); for (int addr = 0; addr < read_size; addr += 256) { uint8_t buffer[256]; @@ -753,14 +750,13 @@ int main(int argc, char **argv) fwrite(buffer, read_size - addr > 256 ? 256 : read_size - addr, 1, f); } - } - else - { + } else { fprintf(stderr, "reading..\n"); for (int addr = 0; true; addr += 256) { uint8_t buffer_flash[256], buffer_file[256]; int rc = fread(buffer_file, 1, 256, f); - if (rc <= 0) break; + if (rc <= 0) + break; flash_read(rw_offset + addr, buffer_flash, rc); if (memcmp(buffer_file, buffer_flash, rc)) { fprintf(stderr, "Found difference between flash and file!\n"); |