FreeCalypso > hg > freecalypso-sw
comparison loadtools/tpinterf3.c @ 62:6fb41cfa773d
fc-loadtool: flash erase implemented, compiles
author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
---|---|
date | Thu, 27 Jun 2013 04:56:17 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
61:a10491da8c3a | 62:6fb41cfa773d |
---|---|
1 /* | |
2 * The do_r16() and do_w16() functions implemented in this module | |
3 * provide programmatic access to the r16 and w16 commands on the target. | |
4 * They will be used to implement some flash operations. | |
5 */ | |
6 | |
7 #include <sys/types.h> | |
8 #include <stdio.h> | |
9 #include <stdint.h> | |
10 #include <string.h> | |
11 #include <strings.h> | |
12 #include <stdlib.h> | |
13 | |
14 extern char target_response_line[]; | |
15 | |
16 do_r16(addr, retptr) | |
17 uint32_t addr; | |
18 uint16_t *retptr; | |
19 { | |
20 char addr_arg[10], *argv[3]; | |
21 int stat; | |
22 char *strtoul_endp; | |
23 | |
24 sprintf(addr_arg, "%lx", (u_long) addr); | |
25 argv[0] = "r16"; | |
26 argv[1] = addr_arg; | |
27 argv[2] = 0; | |
28 tpinterf_make_cmd(argv); | |
29 if (tpinterf_send_cmd() < 0) | |
30 return(-1); | |
31 stat = tpinterf_capture_output_oneline(1); | |
32 if (stat != 1) { | |
33 errout: fprintf(stderr, "error: malformed response to r16 command\n"); | |
34 return(-1); | |
35 } | |
36 if (strlen(target_response_line) != 4) | |
37 goto errout; | |
38 *retptr = strtoul(target_response_line, &strtoul_endp, 16); | |
39 if (strtoul_endp != target_response_line + 4) | |
40 goto errout; | |
41 return(0); | |
42 } | |
43 | |
44 do_w16(addr, data) | |
45 uint32_t addr; | |
46 uint16_t data; | |
47 { | |
48 char addr_arg[10], data_arg[10], *argv[4]; | |
49 | |
50 sprintf(addr_arg, "%lx", (u_long) addr); | |
51 sprintf(data_arg, "%lx", (u_long) data); | |
52 argv[0] = "w16"; | |
53 argv[1] = addr_arg; | |
54 argv[2] = data_arg; | |
55 argv[3] = 0; | |
56 tpinterf_make_cmd(argv); | |
57 if (tpinterf_send_cmd() < 0) | |
58 return(-1); | |
59 return tpinterf_pass_output(1); | |
60 } |