+static void usage(char *argv0)
+{
+ fprintf(stderr, "Usage: %s <port> [-b] image.elf [image.elf...]\n\n", argv0);
+ fprintf(stderr, "\t-b\tEnable flashing of bootloader area (DANGEROUS)\n\n");
+ //Is the example below really true? /Martin
+ fprintf(stderr, "Example:\n\n\t %s path/to/osimage.elf path/to/fpgaimage.elf\n", argv0);
+ fprintf(stderr, "\nExample (Linux):\n\n\t %s /dev/ttyACM0 armsrc/obj/fullimage.elf\n", argv0);
+ fprintf(stderr, "\nExample (OS) :\n\n\t %s /dev/cu.usbmodem1451 armsrc/obj/fullimage.elf\n", argv0);
+ fprintf(stderr, "\nNote (Linux): if the flasher gets stuck in 'Waiting for Proxmark to reappear on <DEVICE>',\n");
+ fprintf(stderr, " you need to blacklist proxmark for modem-manager - see wiki for more details:\n");
+ fprintf(stderr, " old ref --> http://code.google.com/p/proxmark3/wiki/Linux\n\n");
+ fprintf(stderr, " new refs --> ");
+ fprintf(stderr, " https://github.com/Proxmark/proxmark3/wiki/Gentoo Linux\n\n");
+ fprintf(stderr, " https://github.com/Proxmark/proxmark3/wiki/Ubuntu Linux\n\n");
+ fprintf(stderr, " https://github.com/Proxmark/proxmark3/wiki/OSX\n\n");
+}
+
+#define MAX_FILES 4
+
+int main(int argc, char **argv)
+{
+ int can_write_bl = 0;
+ int num_files = 0;
+ int res;
+ flash_file_t files[MAX_FILES];
+
+ memset(files, 0, sizeof(files));
+
+ if (argc < 3) {
+ usage(argv[0]);
+ return -1;