FreeCalypso > hg > freecalypso-tools
view loadtools/tpinterf3.c @ 718:098fea21ba13
doc/Host-tools-overview: tiffs-mkfs description updated
The first version of tiffs-mkfs did not include a journal file in the created
FFS, expecting the firmware to create it on first boot. All historical
firmwares prior to a recent FC fix (2020-05) contain a bug in that code path,
thus images made with the first version of tiffs-mkfs were only acceptable to
very recent FC firmwares. tiffs-mkfs has now been extended to include an empty
journal in the created FFS, thus the restriction of working with recent fw only
has been lifted.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 23 Aug 2020 04:55:02 +0000 |
parents | e7502631a0f9 |
children |
line wrap: on
line source
/* * The do_r16() and do_w16() functions implemented in this module * provide programmatic access to the r16 and w16 commands on the target. * They will be used to implement some flash operations. */ #include <sys/types.h> #include <stdio.h> #include <stdint.h> #include <string.h> #include <strings.h> #include <stdlib.h> extern char target_response_line[]; do_r16(addr, retptr) uint32_t addr; uint16_t *retptr; { char addr_arg[10], *argv[3]; int stat; char *strtoul_endp; sprintf(addr_arg, "%lx", (u_long) addr); argv[0] = "r16"; argv[1] = addr_arg; argv[2] = 0; tpinterf_make_cmd(argv); if (tpinterf_send_cmd() < 0) return(-1); stat = tpinterf_capture_output_oneline(1); if (stat != 1) { errout: fprintf(stderr, "error: malformed response to r16 command\n"); return(-1); } if (strlen(target_response_line) != 4) goto errout; *retptr = strtoul(target_response_line, &strtoul_endp, 16); if (strtoul_endp != target_response_line + 4) goto errout; return(0); } do_w16(addr, data) uint32_t addr; uint16_t data; { char addr_arg[10], data_arg[10], *argv[4]; sprintf(addr_arg, "%lx", (u_long) addr); sprintf(data_arg, "%lx", (u_long) data); argv[0] = "w16"; argv[1] = addr_arg; argv[2] = data_arg; argv[3] = 0; tpinterf_make_cmd(argv); if (tpinterf_send_cmd() < 0) return(-1); return tpinterf_pass_output(1); }