diff options
author | Nao Pross <naopross@thearcway.org> | 2017-10-05 12:17:37 +0200 |
---|---|---|
committer | Nao Pross <naopross@thearcway.org> | 2017-10-05 12:17:37 +0200 |
commit | f000d406809d8a7a0e71c388ebfb15d7564728e4 (patch) | |
tree | 2284c66b0459e9456fb451feaa4290e5d99e4349 /sw/programmer/linux/src/main.c | |
parent | Merge remote-tracking branch 'origin/atlas' into naopross (diff) | |
download | z80uPC-f000d406809d8a7a0e71c388ebfb15d7564728e4.tar.gz z80uPC-f000d406809d8a7a0e71c388ebfb15d7564728e4.zip |
Test units are now in their own folder 'z80_test', add programmer cli interface
Diffstat (limited to 'sw/programmer/linux/src/main.c')
-rw-r--r-- | sw/programmer/linux/src/main.c | 58 |
1 files changed, 56 insertions, 2 deletions
diff --git a/sw/programmer/linux/src/main.c b/sw/programmer/linux/src/main.c index 769992a..1bfd359 100644 --- a/sw/programmer/linux/src/main.c +++ b/sw/programmer/linux/src/main.c @@ -4,10 +4,64 @@ #include <stdio.h> #include <stdlib.h> #include <stdbool.h> +#include <unistd.h> +#include <errno.h> + +void out(const char *msg) +{ + printf("%s", msg); +} int main(int argc, char *argv[]) { - ui_init(&argc, &argv); + int opt; + int use_ui = 0; + + unsigned long baudrate; + char *file, *device, *baud; + + file = device = baud = NULL; + + while ((opt = getopt(argc, argv, "gf:d:b:")) != -1) { + switch (opt) { + case 'g': + use_ui = 1; + break; + case 'f': + file = optarg; + break; + case 'd': + device = optarg; + break; + case 'b': + baud = optarg; + break; + } + } + + if (use_ui) { + ui_init(&argc, &argv); + return 0; + } + + if (file == NULL || device == NULL || baud == NULL) { + perror("Missing argument\n"); + return -1; + } + + baudrate = strtoul(baud, NULL, 0); + if (errno == ERANGE) { + perror("Invalid baudrate\n"); + return -1; + } + + if (flash_open(device, baudrate) < 0) { + perror("Failed to open device\n"); + return -2; + } + + flash_write(file, out); + flash_close(); + return 0; } - |