diff options
Diffstat (limited to 'firmware')
| -rw-r--r-- | firmware/ihex2fw.c | 17 | ||||
| -rw-r--r-- | firmware/keyspan_pda/keyspan_pda.S | 2 | ||||
| -rw-r--r-- | firmware/keyspan_pda/xircom_pgs.S | 2 |
3 files changed, 16 insertions, 5 deletions
diff --git a/firmware/ihex2fw.c b/firmware/ihex2fw.c index 5a03ba8c8364..ba0cf0b601bb 100644 --- a/firmware/ihex2fw.c +++ b/firmware/ihex2fw.c @@ -55,6 +55,7 @@ static int output_records(int outfd); static int sort_records = 0; static int wide_records = 0; +static int include_jump = 0; static int usage(void) { @@ -63,6 +64,7 @@ static int usage(void) fprintf(stderr, "usage: ihex2fw [<options>] <src.HEX> <dst.fw>\n"); fprintf(stderr, " -w: wide records (16-bit length)\n"); fprintf(stderr, " -s: sort records by address\n"); + fprintf(stderr, " -j: include records for CS:IP/EIP address\n"); return 1; } @@ -73,7 +75,7 @@ int main(int argc, char **argv) uint8_t *data; int opt; - while ((opt = getopt(argc, argv, "ws")) != -1) { + while ((opt = getopt(argc, argv, "wsj")) != -1) { switch (opt) { case 'w': wide_records = 1; @@ -81,7 +83,9 @@ int main(int argc, char **argv) case 's': sort_records = 1; break; - default: + case 'j': + include_jump = 1; + break; return usage(); } } @@ -128,6 +132,7 @@ static int process_ihex(uint8_t *data, ssize_t size) { struct ihex_binrec *record; uint32_t offset = 0; + uint32_t data32; uint8_t type, crc = 0, crcbyte = 0; int i, j; int line = 1; @@ -223,8 +228,14 @@ next_record: return -EINVAL; } + memcpy(&data32, &record->data[0], sizeof(data32)); + data32 = htonl(data32); + memcpy(&record->data[0], &data32, sizeof(data32)); + /* These records contain the CS/IP or EIP where execution - * starts. Don't really know what to do with them. */ + * starts. If requested output this as a record. */ + if (include_jump) + file_record(record); goto next_record; default: diff --git a/firmware/keyspan_pda/keyspan_pda.S b/firmware/keyspan_pda/keyspan_pda.S index 418fe69aa5e0..f3acc197a5ef 100644 --- a/firmware/keyspan_pda/keyspan_pda.S +++ b/firmware/keyspan_pda/keyspan_pda.S @@ -74,7 +74,7 @@ * recognizes the new device ID and glues it to the real serial driver code. * * USEFUL DOCS: - * EzUSB Technical Reference Manual: <http://www.anchorchips.com> + * EzUSB Technical Reference Manual: <http://www.cypress.com/> * 8051 manuals: everywhere, but try www.dalsemi.com because the EzUSB is * basically the Dallas enhanced 8051 code. Remember that the EzUSB IO ports * use totally different registers! diff --git a/firmware/keyspan_pda/xircom_pgs.S b/firmware/keyspan_pda/xircom_pgs.S index 05d99dd63776..0b79bbf0ae15 100644 --- a/firmware/keyspan_pda/xircom_pgs.S +++ b/firmware/keyspan_pda/xircom_pgs.S @@ -74,7 +74,7 @@ * recognizes the new device ID and glues it to the real serial driver code. * * USEFUL DOCS: - * EzUSB Technical Reference Manual: <http://www.anchorchips.com> + * EzUSB Technical Reference Manual: <http://www.cypress.com/> * 8051 manuals: everywhere, but try www.dalsemi.com because the EzUSB is * basically the Dallas enhanced 8051 code. Remember that the EzUSB IO ports * use totally different registers! |