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) | |
