Now it is possible to use osmoload again to flash. Flashing was successfully tested with c123 and c155. --- src/host/osmocon/osmoload.c | 2 +- src/target/firmware/apps/loader/main.c | 7 +++++-- src/target/firmware/apps/loader_mtk/main.c | 4 ++-- 3 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/src/host/osmocon/osmoload.c b/src/host/osmocon/osmoload.c index 9b64935..e83f98a 100644 --- a/src/host/osmocon/osmoload.c +++ b/src/host/osmocon/osmoload.c @@ -307,7 +307,7 @@ loader_handle_reply(struct msgb *msg) { length = msgb_pull_u8(msg); crc = msgb_pull_u16(msg); address = msgb_pull_u32(msg); - data = msgb_pull(msg, length); + data = msgb_pull(msg, length) - length; break; case LOADER_MEM_WRITE: length = msgb_pull_u8(msg); diff --git a/src/target/firmware/apps/loader/main.c b/src/target/firmware/apps/loader/main.c index 50a39dd..fd07d0f 100644 --- a/src/target/firmware/apps/loader/main.c +++ b/src/target/firmware/apps/loader/main.c @@ -273,7 +273,7 @@ static void cmd_handler(uint8_t dlci, struct msgb *msg) crc = msgb_pull_u16(msg); address = msgb_pull_u32(msg);
- data = msgb_pull(msg, nbytes); + data = msgb_pull(msg, nbytes) - nbytes;
mycrc = osmo_crc16(0, data, nbytes);
@@ -391,7 +391,7 @@ static void cmd_handler(uint8_t dlci, struct msgb *msg) chip = msgb_pull_u8(msg); address = msgb_pull_u32(msg);
- data = msgb_pull(msg, nbytes); + data = msgb_pull(msg, nbytes) - nbytes;
mycrc = osmo_crc16(0, data, nbytes);
@@ -439,6 +439,9 @@ static void key_handler(enum key_codes code, enum key_states state) puts("Resetting due to keypress.\n"); device_reset(); break; + case KEY_MENU: + device_jump((void *)0x10000); + break; default: break; } diff --git a/src/target/firmware/apps/loader_mtk/main.c b/src/target/firmware/apps/loader_mtk/main.c index 7748dc4..3a12d27 100644 --- a/src/target/firmware/apps/loader_mtk/main.c +++ b/src/target/firmware/apps/loader_mtk/main.c @@ -213,7 +213,7 @@ static void cmd_handler(uint8_t dlci, struct msgb *msg) crc = msgb_pull_u16(msg); address = msgb_pull_u32(msg);
- data = msgb_pull(msg, nbytes); + data = msgb_pull(msg, nbytes) - nbytes;
mycrc = osmo_crc16(0, data, nbytes);
@@ -331,7 +331,7 @@ static void cmd_handler(uint8_t dlci, struct msgb *msg) chip = msgb_pull_u8(msg); address = msgb_pull_u32(msg);
- data = msgb_pull(msg, nbytes); + data = msgb_pull(msg, nbytes) - nbytes;
mycrc = osmo_crc16(0, data, nbytes);