From 0deedb9858a17d9a9bca4cd57b32bdc560c5e5f8 Mon Sep 17 00:00:00 2001 From: Zack Buhman Date: Mon, 4 Mar 2024 16:44:03 +0800 Subject: [PATCH] serial_transfer: increase serial line speed to 312500 bps Interestingly, this did not cause a perceptible improvement in the overall data transfer rate. --- client.py | 11 ++++++----- example/serial_transfer.cpp | 11 ++--------- serial_load.cpp | 2 +- 3 files changed, 9 insertions(+), 15 deletions(-) diff --git a/client.py b/client.py index 2708406..516745d 100644 --- a/client.py +++ b/client.py @@ -8,7 +8,7 @@ dest = 0xac02_0000 ret = [] -def sync(ser, b, wait=0.5): +def sync(ser, b, wait=0.1): l = [] for i, c in enumerate(b): if i % 32 == 0 and i != 0: @@ -17,11 +17,11 @@ def sync(ser, b, wait=0.5): ser.write(bytes([c])) time.sleep(1000 / 1000000) if ser.in_waiting == 0: - time.sleep(0.01) + time.sleep(0.001) while ser.in_waiting > 0: res = ser.read(ser.in_waiting) l.extend(res) - time.sleep(0.01) + time.sleep(0.001) time.sleep(wait) res = ser.read(ser.in_waiting) @@ -42,7 +42,7 @@ def symmetric(ser, b): if len(l) + 8 >= i: break else: - time.sleep(0.001) + time.sleep(0.0001) ser.write(bytes([c])) @@ -98,7 +98,8 @@ def console(ser): with open(sys.argv[1], 'rb') as f: b = f.read() -with serial.Serial('/dev/ttyUSB0', 120192, timeout=1) as ser: +#with serial.Serial('/dev/ttyUSB0', 120192, timeout=1) as ser: +with serial.Serial('/dev/ttyUSB0', 312500, timeout=1) as ser: #console(ser) print("waiting: ", end=' ') sys.stdout.flush() diff --git a/example/serial_transfer.cpp b/example/serial_transfer.cpp index 1c9b375..c95b6c6 100644 --- a/example/serial_transfer.cpp +++ b/example/serial_transfer.cpp @@ -2,7 +2,7 @@ #include "sh7091/sh7091.hpp" #include "sh7091/sh7091_bits.hpp" -#include "sh7091/cache.hpp" +#include "sh7091/serial.hpp" #include "serial_load.hpp" @@ -11,14 +11,7 @@ extern uint32_t __bss_link_end __asm("__bss_link_end"); void main() { - cache::init(); - - uint32_t * start = &__bss_link_start; - uint32_t * end = &__bss_link_end; - while (start < end) { - *start++ = 0; - } - + serial::init(4); load_init(); while (1) { diff --git a/serial_load.cpp b/serial_load.cpp index 31bda3c..d76564c 100644 --- a/serial_load.cpp +++ b/serial_load.cpp @@ -120,8 +120,8 @@ void load_recv(uint8_t c) debug("prejump\n"); holly.VO_BORDER_COL = (31 << 11); void (*fptr)(void) = (void (*)(void))state.addr1; - holly.VO_BORDER_COL = (63 << 5) | (31 << 0); fptr(); + holly.VO_BORDER_COL = (63 << 5) | (31 << 0); debug("postjump\n"); return; break;