aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Schodet2021-10-02 00:12:31 +0200
committerNicolas Schodet2021-10-02 00:12:52 +0200
commitc5224c207169cc1065eaf6a4b7b5c38ec77eec17 (patch)
treec1d169c55c3fd8c5ee9c2f458b71b707093c7376
parenta10abff4c167422daed9b8460aa5fdc3582d1784 (diff)
Allow setting a jump address for fwexec
Add an additional parameter to use a different address to jump to. Default to the load address.
-rw-r--r--main_fwexec.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/main_fwexec.c b/main_fwexec.c
index 01941f1..a3203b9 100644
--- a/main_fwexec.c
+++ b/main_fwexec.c
@@ -77,20 +77,27 @@ int main(int argc, char *argv[])
char *firmware;
int firmware_len;
long load_addr;
+ long jump_addr;
- if (argc < 2 || argc > 3)
+ if (argc < 2 || argc > 4)
{
- printf("Syntax: %s <Firmware image to write> [load address]\n"
+ printf("Syntax: %s <Firmware image to write> [load address] "
+ "[jump address]\n"
"\n"
"Example: %s beep.bin\n"
- " %s beep.bin 0x1234\n", argv[0], argv[0], argv[0]);
+ " %s beep.bin 0x202000\n", argv[0], argv[0], argv[0]);
exit(1);
}
- if (argc == 3) {
+ if (argc >= 3) {
load_addr = strtol(argv[2], NULL, 16);
} else {
load_addr = 0x202000;
}
+ if (argc == 4) {
+ jump_addr = strtol(argv[3], NULL, 16);
+ } else {
+ jump_addr = load_addr;
+ }
get_firmware(&firmware, &firmware_len, argv[1]);
@@ -125,7 +132,7 @@ int main(int argc, char *argv[])
"Error Sending file");
printf("Firmware uploaded, executing...\n");
- NXT_HANDLE_ERR(nxt_jump(nxt, load_addr), nxt,
+ NXT_HANDLE_ERR(nxt_jump(nxt, jump_addr), nxt,
"Error jumping to C program");
NXT_HANDLE_ERR(nxt_close(nxt), NULL,