Skip to content

Commit b6c078e

Browse files
committed
Add capabiity to load .hex firmware
1 parent 6a4a20f commit b6c078e

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

Diff for: examples/board_ayab/ayab.c

+9-7
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
#include "avr_adc.h"
3232
#include "avr_twi.h"
3333
#include "sim_elf.h"
34+
#include "sim_hex.h"
3435
#include "sim_gdb.h"
3536
#include "sim_vcd_file.h"
3637
#include "uart_pty.h"
@@ -93,7 +94,7 @@ display_usage(
9394
" [--carriage <carriage>] Select K/L/G carriage (default=K)\n"
9495
" [--beltphase <phase>] Select Regular/Shifted (default=Regular)\n"
9596
" [--startside <side>] Select Left/Right side to start (default=Left)\n"
96-
" <firmware> An ELF file (can include debugging syms)\n"
97+
" <firmware> HEX or ELF file to load (can include debugging syms)\n"
9798
"\n");
9899
exit(1);
99100
}
@@ -194,11 +195,8 @@ parse_arguments(int argc, char *argv[])
194195
display_usage(basename(argv[0]));
195196
}
196197
} else if (argv[pi][0] != '-') {
197-
if (elf_read_firmware(argv[pi], &firmware) == -1) {
198-
fprintf(stderr, "%s: Unable to load firmware from file %s\n",
199-
argv[0], argv[pi]);
200-
exit(1);
201-
}
198+
uint32_t loadBase = AVR_SEGMENT_OFFSET_FLASH;
199+
sim_setup_firmware(argv[pi], loadBase, &firmware, argv[0]);
202200
printf ("%s loaded (f=%d mmcu=%s)\n", argv[pi], (int) firmware.frequency, firmware.mmcu);
203201
}
204202
}
@@ -516,7 +514,11 @@ int main(int argc, char *argv[])
516514

517515
avr = avr_make_mcu_by_name(firmware.mmcu);
518516
if (!avr) {
519-
fprintf(stderr, "%s: AVR '%s' not known\n", argv[0], firmware.mmcu);
517+
if (! strcmp(firmware.mmcu, "")) {
518+
fprintf(stderr, "%s: AVR mcu not defined\n", argv[0]);
519+
} else {
520+
fprintf(stderr, "%s: AVR '%s' not known\n", argv[0], firmware.mmcu);
521+
}
520522
exit(1);
521523
}
522524

0 commit comments

Comments
 (0)