Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 217516
b: refs/heads/master
c: 2473238
h: refs/heads/master
v: v3
  • Loading branch information
Mark Brown authored and Linus Torvalds committed Oct 26, 2010
1 parent d1ca78c commit c7b4be0
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 4 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: b6777c40c79168d938c30b5b7471fbd64bca109c
refs/heads/master: 2473238eac95ba6dd2c4ba19cc36aaf01465076b
17 changes: 14 additions & 3 deletions trunk/firmware/ihex2fw.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
Expand All @@ -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;
}

Expand All @@ -73,15 +75,17 @@ 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;
break;
case 's':
sort_records = 1;
break;
default:
case 'j':
include_jump = 1;
break;
return usage();
}
}
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -223,8 +228,14 @@ static int process_ihex(uint8_t *data, ssize_t size)
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:
Expand Down

0 comments on commit c7b4be0

Please sign in to comment.