|
31 | 31 | #include "avr_adc.h"
|
32 | 32 | #include "avr_twi.h"
|
33 | 33 | #include "sim_elf.h"
|
| 34 | +#include "sim_hex.h" |
34 | 35 | #include "sim_gdb.h"
|
35 | 36 | #include "sim_vcd_file.h"
|
36 | 37 | #include "uart_pty.h"
|
@@ -93,7 +94,7 @@ display_usage(
|
93 | 94 | " [--carriage <carriage>] Select K/L/G carriage (default=K)\n"
|
94 | 95 | " [--beltphase <phase>] Select Regular/Shifted (default=Regular)\n"
|
95 | 96 | " [--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" |
97 | 98 | "\n");
|
98 | 99 | exit(1);
|
99 | 100 | }
|
@@ -194,11 +195,8 @@ parse_arguments(int argc, char *argv[])
|
194 | 195 | display_usage(basename(argv[0]));
|
195 | 196 | }
|
196 | 197 | } 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]); |
202 | 200 | printf ("%s loaded (f=%d mmcu=%s)\n", argv[pi], (int) firmware.frequency, firmware.mmcu);
|
203 | 201 | }
|
204 | 202 | }
|
@@ -516,7 +514,11 @@ int main(int argc, char *argv[])
|
516 | 514 |
|
517 | 515 | avr = avr_make_mcu_by_name(firmware.mmcu);
|
518 | 516 | 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 | + } |
520 | 522 | exit(1);
|
521 | 523 | }
|
522 | 524 |
|
|
0 commit comments