FreeCalypso > hg > fc-usbser-tools
changeset 26:49239efbdcc8
rm fteeprom/test/fteeprom-prog-bad
When the magic command sequence for FT232R was added to libftdi-based
fteeprom-prog, a version without this magic sequence was preserved in
fteeprom-prog-bad. However, the new minilib version of fteeprom-prog
operates without this magic sequence by default (as appropriate for
FT2232D, FT2232H etc) and needs to be run with -r option to invoke
FT232R-specific mode with the necessary magic.
Anyone who needs fteeprom-prog-bad for study or experimentation
can find it in freecalypso-hwlab Hg repository where it was originally
developed.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 09 Sep 2023 16:06:56 +0000 |
parents | 4bc0d3c01064 |
children | 2413a54a1bfc |
files | .hgignore fteeprom/test/Makefile fteeprom/test/fteeprom-prog-bad.c |
diffstat | 3 files changed, 0 insertions(+), 135 deletions(-) [+] |
line wrap: on
line diff
--- a/.hgignore Sat Sep 09 07:39:48 2023 +0000 +++ b/.hgignore Sat Sep 09 16:06:56 2023 +0000 @@ -9,4 +9,3 @@ ^fteeprom/fteeprom-erase$ ^fteeprom/fteeprom-prog$ ^fteeprom/fteeprom-read$ -^fteeprom/test/fteeprom-prog-bad$
--- a/fteeprom/test/Makefile Sat Sep 09 07:39:48 2023 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ -CC= gcc -CFLAGS= -O2 -PROGS= fteeprom-prog-bad - -all: ${PROGS} - -fteeprom-prog-bad: fteeprom-prog-bad.c - ${CC} ${CFLAGS} -o $@ $@.c -lftdi - -clean: - rm -f ${PROGS} *.o *errs *.out
--- a/fteeprom/test/fteeprom-prog-bad.c Sat Sep 09 07:39:48 2023 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,123 +0,0 @@ -/* - * This "bad" version of fteeprom-prog is being presented in order to show - * what happens on FT232R chips when a certain magic sequence is omitted. - */ - -#include <sys/types.h> -#include <ctype.h> -#include <string.h> -#include <strings.h> -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <ftdi.h> - -unsigned eeprom_size; -u_short eeprom[256]; - -read_eeprom_common(inf, filename_for_errs) - FILE *inf; - char *filename_for_errs; -{ - char linebuf[1024], *cp; - int lineno, rc; - unsigned ptr = 0, input_off; - - for (lineno = 1; fgets(linebuf, sizeof linebuf, inf); lineno++) { - for (cp = linebuf; isspace(*cp); cp++) - ; - if (*cp == '\0' || *cp == '#') - continue; - if (ptr >= 256) { - fprintf(stderr, - "%s line %d: maximum EEPROM size exceeded\n", - filename_for_errs, lineno); - exit(1); - } - rc = sscanf(linebuf, "%x: %hx %hx %hx %hx %hx %hx %hx %hx", - &input_off, eeprom + ptr, eeprom + ptr + 1, - eeprom + ptr + 2, eeprom + ptr + 3, - eeprom + ptr + 4, eeprom + ptr + 5, - eeprom + ptr + 6, eeprom + ptr + 7); - if (rc != 9 || input_off != ptr * 2) { - fprintf(stderr, "%s line %d: invalid input\n", - filename_for_errs, lineno); - exit(1); - } - ptr += 8; - } - if (ptr != 64 && ptr != 128 && ptr != 256) { - fprintf(stderr, "%s: not an EEPROM image of recognized size\n", - filename_for_errs); - exit(1); - } - eeprom_size = ptr; -} - -read_eeprom_from_file(filename) - char *filename; -{ - FILE *inf; - - inf = fopen(filename, "r"); - if (!inf) { - perror(filename); - exit(1); - } - read_eeprom_common(inf, filename); - fclose(inf); -} - -read_eeprom_from_stdin() -{ - read_eeprom_common(stdin, "stdin"); -} - -main(argc, argv) - char **argv; -{ - struct ftdi_context ftdi; - u_short modem_status; - unsigned n; - - if (argc < 2 || argc > 3) { - fprintf(stderr, "usage: %s device-selector [eeprom-image]\n", - argv[0]); - exit(1); - } - if (argv[2]) - read_eeprom_from_file(argv[2]); - else - read_eeprom_from_stdin(); - ftdi_init(&ftdi); - if (ftdi_usb_open_string(&ftdi, argv[1]) < 0) { - fprintf(stderr, "FTDI USB open failed: %s\n", ftdi.error_str); - exit(1); - } -#if 0 /* FT232R magic sequence omitted! */ - if (ftdi_usb_reset(&ftdi) < 0) { - fprintf(stderr, "ftdi_usb_reset() failed: %s\n", - ftdi.error_str); - exit(1); - } - if (ftdi_poll_modem_status(&ftdi, &modem_status) < 0) { - fprintf(stderr, "ftdi_poll_modem_status() failed: %s\n", - ftdi.error_str); - exit(1); - } - if (ftdi_set_latency_timer(&ftdi, 0x77) < 0) { - fprintf(stderr, "ftdi_set_latency_timer() failed: %s\n", - ftdi.error_str); - exit(1); - } -#endif - for (n = 0; n < eeprom_size; n++) { - if (ftdi_write_eeprom_location(&ftdi, n, eeprom[n]) < 0) { - fprintf(stderr, "EEPROM write error: %s\n", - ftdi.error_str); - exit(1); - } - } - ftdi_usb_close(&ftdi); - exit(0); -}