FreeCalypso > hg > fc-usbser-tools
diff cp2102/intel_hex_out.c @ 53:d4d3531d342a
cp2102-read-eeprom program written, compiles
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 11 Sep 2023 18:49:07 +0000 |
parents | |
children | 842cff427588 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cp2102/intel_hex_out.c Mon Sep 11 18:49:07 2023 +0000 @@ -0,0 +1,45 @@ +/* + * This module implements a function for writing out the same Intel HEX + * format as used by cp210x-program-1.0, the Python-language tool from 2014. + */ + +#include <sys/types.h> +#include <string.h> +#include <strings.h> +#include <stdio.h> +#include <stdlib.h> +#include "cp210x_defs.h" + +void +intel_hex_out(eeprom, outf) + u_char *eeprom; + FILE *outf; +{ + unsigned linecnt, bytecnt; + unsigned addr; + u_char *sp; + u_char record[21], *dp, csum; + + sp = eeprom; + addr = EEPROM_START_ADDR; + for (linecnt = 0; linecnt < 64; linecnt++) { + dp = record; + *dp++ = 0x10; + *dp++ = addr >> 8; + *dp++ = addr; + *dp++ = 0x00; + for (bytecnt = 0; bytecnt < 16; bytecnt++) + *dp++ = *sp++; + csum = 0; + for (bytecnt = 0; bytecnt < 20; bytecnt++) + csum = record[bytecnt]; + csum = 0x100 - csum; + record[20] = csum; + putc(':', outf); + for (bytecnt = 0; bytecnt < 21; bytecnt++) + fprintf(outf, "%02X", record[bytecnt]); + putc('\n', outf); + addr += 16; + } + fputs(":00000001FF\n", outf); +}