From 9ad69d3e3caebbe629afeefc1bbce1e8d0874c9a Mon Sep 17 00:00:00 2001 From: David Anderson Date: Thu, 19 Sep 2024 21:25:04 -0700 Subject: [PATCH] debugger: crank the debug port up to 1.3Mbps With this, full memory read-out takes ~1s. --- debugger/serial/serial.go | 11 ++++++----- debugger/ui.go | 4 ++-- hardware/ulx3s/Top.bsv | 2 +- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/debugger/serial/serial.go b/debugger/serial/serial.go index 34a10f5..406d5db 100644 --- a/debugger/serial/serial.go +++ b/debugger/serial/serial.go @@ -13,7 +13,7 @@ import ( const ( portDev = "/dev/ttyUSB0" - portSpeed = 115_200 + portSpeed = 1_382_400 // 1.3Mbps maxAddr = 1 << 17 pingResponse = 0xEA readTimeout = 2 * time.Second @@ -26,7 +26,7 @@ type Serial struct { func Open() (*Serial, error) { mode := &serial.Mode{ - BaudRate: 115_200, + BaudRate: portSpeed, } port, err := serial.Open(portDev, mode) if err != nil { @@ -38,6 +38,7 @@ func Open() (*Serial, error) { port.Close() return nil, err } + port.SetReadTimeout(readTimeout) if _, err := io.ReadFull(port, packet[:1]); err != nil { port.Close() @@ -80,7 +81,7 @@ func encode(cmd int, addr int, data byte) [4]byte { func (d *Serial) readSlow(bs []byte, off int64) (int, error) { d.portMu.Lock() defer d.portMu.Unlock() - if off+int64(len(bs)) >= maxAddr { + if off+int64(len(bs)) > maxAddr { return 0, errors.New("OOB read") } for i := range bs { @@ -100,7 +101,7 @@ func (d *Serial) readSlow(bs []byte, off int64) (int, error) { func (d *Serial) readBurst(bs []byte, off int64) (int, error) { d.portMu.Lock() defer d.portMu.Unlock() - if off+int64(len(bs)) >= maxAddr { + if off+int64(len(bs)) > maxAddr { return 0, errors.New("OOB read") } for i := 0; i < len(bs); i += 255 { @@ -125,7 +126,7 @@ func (d *Serial) ReadAt(bs []byte, off int64) (int, error) { func (d *Serial) WriteAt(bs []byte, off int64) (int, error) { d.portMu.Lock() defer d.portMu.Unlock() - if off+int64(len(bs)) >= maxAddr { + if off+int64(len(bs)) > maxAddr { return 0, errors.New("OOB write") } for i, v := range bs { diff --git a/debugger/ui.go b/debugger/ui.go index 2cffbc3..2aa619a 100644 --- a/debugger/ui.go +++ b/debugger/ui.go @@ -82,8 +82,8 @@ func (m debugger) readFullMemory() tea.Cmd { func (m debugger) readFullMemoryCmds() []tea.Cmd { var ret []tea.Cmd - for i := 0; i < m.mem.Len(); i += 128 { - ret = append(ret, m.readMemory(i, 128)) + for i := 0; i < m.mem.Len(); i += 32 * 1024 { + ret = append(ret, m.readMemory(i, 32*1024)) } return ret } diff --git a/hardware/ulx3s/Top.bsv b/hardware/ulx3s/Top.bsv index 98675ac..60d9611 100644 --- a/hardware/ulx3s/Top.bsv +++ b/hardware/ulx3s/Top.bsv @@ -46,7 +46,7 @@ module mkTop(Top); //////////// // Debugging - let debugger <- mkUARTDebugger(25_000_000, 115_200, mem.debugger); + let debugger <- mkUARTDebugger(25_000_000, 1_382_400, mem.debugger); let blinky <- mkBlinky(25_000_000); ////////////