mirror of
https://github.com/Proxmark/proxmark3.git
synced 2025-07-13 08:43:01 -07:00
fast flash mode (button already held down) and both (os & fpga) flashing mode
This commit is contained in:
parent
ddbe6ff42e
commit
431ae7e0eb
2 changed files with 36 additions and 15 deletions
|
@ -117,43 +117,61 @@ static void LoadFlashFromSRecords(char *file, int addr)
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
unsigned int addr = 0;
|
unsigned int addr = 0;
|
||||||
|
BOOL fastflash = 0, flashboth = 0;
|
||||||
UsbCommand c;
|
UsbCommand c;
|
||||||
|
|
||||||
if (argc != 3) {
|
if (argc != 3 && ! ((argc == 4 && *argv[3] == 'f') || (argc == 5 && *argv[4] == 'f'))) {
|
||||||
fprintf(stderr,"Usage: %s {bootrom|os|fpga} image.s19\n", argv[0]);
|
fprintf(stderr,"Usage: %s {bootrom|os|fpga} image.s19 [f]ast\n", argv[0]);
|
||||||
|
fprintf(stderr," %s {both} osimage.s19 fpgaimage.s19 [f]ast\n", argv[0]);
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!strcmp(argv[1],"bootrom")) {
|
if (!strcmp(argv[1],"bootrom")) {
|
||||||
addr = 0;
|
addr = 0;
|
||||||
} else if (!strcmp(argv[1],"os")) {
|
} else if (!strcmp(argv[1],"os")) {
|
||||||
addr = 0x10000;
|
addr = FLASH_ADDR_OS;
|
||||||
} else if (!strcmp(argv[1],"fpga")) {
|
} else if (!strcmp(argv[1],"fpga")) {
|
||||||
addr = 0x2000;
|
addr = FLASH_ADDR_FPGA;
|
||||||
|
} else if (!strcmp(argv[1],"both")) {
|
||||||
|
flashboth = 1;
|
||||||
} else {
|
} else {
|
||||||
fprintf(stderr,"Unknown action '%s'!\n", argv[1]);
|
fprintf(stderr,"Unknown action '%s'!\n", argv[1]);
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if((argc == 4 && *argv[3] == 'f') || (argc == 5 && *argv[4] == 'f')) {
|
||||||
|
fastflash= 1;
|
||||||
|
fprintf(stderr,"Fastflash - device already in FLASH mode...\n");
|
||||||
|
}
|
||||||
|
|
||||||
usb_init();
|
usb_init();
|
||||||
|
|
||||||
fprintf(stderr,"Waiting for Proxmark to appear on USB...\n");
|
fprintf(stderr,"Waiting for Proxmark to appear on USB...\n");
|
||||||
while(!(devh=OpenProxmark(0))) { sleep(1); }
|
while(!(devh=OpenProxmark(0))) { sleep(1); }
|
||||||
fprintf(stderr,"Found...\n");
|
fprintf(stderr,"Found...\n");
|
||||||
|
|
||||||
fprintf(stderr,"Entering flash-mode...\n");
|
if(!fastflash){
|
||||||
bzero(&c, sizeof(c));
|
fprintf(stderr,"Entering flash-mode...\n");
|
||||||
c.cmd = CMD_START_FLASH;
|
bzero(&c, sizeof(c));
|
||||||
SendCommand(&c, FALSE);
|
c.cmd = CMD_START_FLASH;
|
||||||
CloseProxmark();
|
SendCommand(&c, FALSE);
|
||||||
sleep(1);
|
CloseProxmark();
|
||||||
|
sleep(1);
|
||||||
|
|
||||||
fprintf(stderr,"Waiting for Proxmark to reappear on USB...\n");
|
fprintf(stderr,"Waiting for Proxmark to reappear on USB...\n");
|
||||||
fprintf(stderr,"(Press and hold down button NOW if your bootloader requires it)\n");
|
fprintf(stderr,"(Press and hold down button NOW if your bootloader requires it)\n");
|
||||||
while(!(devh=OpenProxmark(0))) { sleep(1); }
|
while(!(devh=OpenProxmark(0))) { sleep(1); }
|
||||||
fprintf(stderr,"Found...\n");
|
fprintf(stderr,"Found...\n");
|
||||||
|
}
|
||||||
|
|
||||||
LoadFlashFromSRecords(argv[2], addr);
|
if(!flashboth)
|
||||||
|
LoadFlashFromSRecords(argv[2], addr);
|
||||||
|
else {
|
||||||
|
fprintf(stderr,"Flashing os...\n");
|
||||||
|
LoadFlashFromSRecords(argv[2],FLASH_ADDR_OS);
|
||||||
|
fprintf(stderr,"Flashing fpga...\n");
|
||||||
|
LoadFlashFromSRecords(argv[3],FLASH_ADDR_FPGA);
|
||||||
|
}
|
||||||
|
|
||||||
bzero(&c, sizeof(c));
|
bzero(&c, sizeof(c));
|
||||||
c.cmd = CMD_HARDWARE_RESET;
|
c.cmd = CMD_HARDWARE_RESET;
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
#define PROXPROMPT "proxmark3> "
|
#define PROXPROMPT "proxmark3> "
|
||||||
|
|
||||||
|
#define FLASH_ADDR_OS 0x10000
|
||||||
|
#define FLASH_ADDR_FPGA 0x2000
|
||||||
|
|
||||||
extern usb_dev_handle *devh;
|
extern usb_dev_handle *devh;
|
||||||
extern unsigned char return_on_error;
|
extern unsigned char return_on_error;
|
||||||
extern unsigned char error_occured;
|
extern unsigned char error_occured;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue