FreeCalypso > hg > freecalypso-sw
comparison target-utils/libload/cmd_memload.c @ 43:eee03b6ac615
loadagent: buglet in the ML command was breaking fc-xram; fixed
author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
---|---|
date | Mon, 17 Jun 2013 07:28:51 +0000 |
parents | 9b4c5ce3db8b |
children |
comparison
equal
deleted
inserted
replaced
42:5da0cbee2b89 | 43:eee03b6ac615 |
---|---|
13 void | 13 void |
14 cmd_memload(argbulk) | 14 cmd_memload(argbulk) |
15 char *argbulk; | 15 char *argbulk; |
16 { | 16 { |
17 char *argv[2], *s; | 17 char *argv[2], *s; |
18 u8 srecbin[256]; | 18 u8 srecbin[256], cksum; |
19 int len, i, c; | 19 int len, i, c; |
20 u32 addr; | 20 u32 addr; |
21 | 21 |
22 if (parse_args(argbulk, 1, 1, argv, 0) < 0) | 22 if (parse_args(argbulk, 1, 1, argv, 0) < 0) |
23 return; | 23 return; |
34 if (decode_hex_digits(s, 2, &c) < 0) | 34 if (decode_hex_digits(s, 2, &c) < 0) |
35 goto inv; | 35 goto inv; |
36 s += 2; | 36 s += 2; |
37 srecbin[i] = c; | 37 srecbin[i] = c; |
38 } | 38 } |
39 c = 0; | 39 cksum = 0; |
40 for (i = 0; i <= len; i++) | 40 for (i = 0; i <= len; i++) |
41 c += srecbin[i]; | 41 cksum += srecbin[i]; |
42 if (c != 0xFF) { | 42 if (cksum != 0xFF) { |
43 printf("ERROR: bad ML S-record checksum\n"); | 43 printf("ERROR: bad ML S-record checksum\n"); |
44 return; | 44 return; |
45 } | 45 } |
46 len -= 5; | 46 len -= 5; |
47 addr = ((u32)srecbin[1] << 24) | | 47 addr = ((u32)srecbin[1] << 24) | |