diff --git a/src/cmd.c b/src/cmd.c index 01204ed..b21e9e1 100644 --- a/src/cmd.c +++ b/src/cmd.c @@ -261,7 +261,7 @@ void parse_command(const uint8_t *s, uint8_t n) break; #ifdef HAVE_FPGA case 'O': - r = fpga_status(); + r = fpga_power(); if (bflg & 1) // "O1" power off fpga_power_off(); diff --git a/src/dose.py b/src/dose.py index 2707e61..e08cbe7 100755 --- a/src/dose.py +++ b/src/dose.py @@ -1,6 +1,6 @@ #! /usr/bin/ipython3 --profile=thhor -import sys, os, time, getopt, fileinput, struct +import sys, time, getopt, fileinput, struct import uart from base85 import base85_encode, base85_decode from map import memmap @@ -383,21 +383,18 @@ class dose_cmd(uart.uart): self.cmd(c, page[16*i:16*(i+1)]) return self.cmd("B4 t+timeout: - if self._verbose: - print(f"write_pipe timeout {i=} {b=}", file=sys.stderr) - break - time.sleep(s) - s *= 2 - if s > 1: - s = 1 - if nn: - break - if parity and b==7: - self.cmd("B@4", page[8]) - if b >= len(page): - break - for j in range(4): - self.cmd(f"B{j}", page[b][16*j:16*(j+1)]) - if self._verbose >= 2: - self.peek("pipe", 11) - i += 1 - if n and i >= n: - break - if n and i >= n: - break - if nn: - break - if f: - f.close() - return i - - def fpga_config_p(self, filename="../fpga/quartus/thhor_crs.rbf"): - self.fpga_reset() - n = (os.stat(filename).st_size + 63) // 64 - self.pipe("CMD", "CONFIG", n=n*64) - self.write_pipe(filename, n=n) - def fix_page(self, page): if self.load_galois(): page = bch.fix_page(page) diff --git a/src/fpga.c b/src/fpga.c index 9204ce5..fc01a79 100644 --- a/src/fpga.c +++ b/src/fpga.c @@ -30,7 +30,7 @@ void fpga_reset() nCONFIG_VPORT.OUT &=~ (1<> 3, FS_Read|FS_528); + flash_start_stream(page, count>>8, FS_Read|FS_528); } diff --git a/src/fpga.h b/src/fpga.h index 86096d2..0e24b32 100644 --- a/src/fpga.h +++ b/src/fpga.h @@ -27,11 +27,7 @@ void fpga_config(uint16_t page, uint16_t count); static inline uint8_t fpga_power() { return !!(PEN_VPORT.IN & (1<