X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fslipway%2FFtdiBoard.java;h=d1c582c6b200f3374323f702453ae7fd3fae800d;hb=6e3baea580262d8ec8074350dfcc3308286ae669;hp=283a6267b62ef22cba52b71f8e21931f0788c087;hpb=3212d3617ec8c1b2dce1e8a0991f196f03236ef9;p=slipway.git diff --git a/src/edu/berkeley/slipway/FtdiBoard.java b/src/edu/berkeley/slipway/FtdiBoard.java index 283a626..d1c582c 100644 --- a/src/edu/berkeley/slipway/FtdiBoard.java +++ b/src/edu/berkeley/slipway/FtdiBoard.java @@ -1,8 +1,9 @@ package edu.berkeley.slipway; +import com.ftdi.usb.*; import com.atmel.fpslic.*; import edu.berkeley.obits.*; -import org.ibex.util.Log; +import org.ibex.util.*; import java.io.*; import java.util.*; import gnu.io.*; @@ -13,7 +14,7 @@ public class FtdiBoard extends Board { System.load(new File("build/"+System.mapLibraryName("FtdiUartNative")).getAbsolutePath()); } - private final Chip chip; + private final FpslicRaw chip; private final InputStream in; private final OutputStream out; @@ -21,7 +22,7 @@ public class FtdiBoard extends Board { public OutputStream getOutputStream() { return out; } public FtdiBoard() throws Exception { - chip = new ChipImpl(); + chip = new FpslicRaw(new FpslicPinsUsb(new FtdiUart(0x6666, 0x3133, 1500 * 1000))); String bstFile = this.getClass().getName(); bstFile = bstFile.substring(0, bstFile.lastIndexOf('.')); bstFile = bstFile.replace('.', '/')+"/slipway_drone.bst"; @@ -33,30 +34,24 @@ public class FtdiBoard extends Board { } public void reset() throws IOException { - chip.doReset(); + chip.reset(); } public void boot(Reader r) throws Exception { - Chip d = chip; - d.selfTest(); - - OutputStream os = d.getConfigStream(); + chip.selfTest(); + int total = 75090/9; + OutputStream os = new ProgressOutputStream("bootstrap bitstream:", chip.getConfigStream(), total); BufferedReader br = new BufferedReader(r); - br.readLine(); int bytes = 0; while(true) { String s = br.readLine(); if (s==null) break; - int in = Integer.parseInt(s, 2); bytes++; - os.write((byte)in); - if ((bytes % 1000)==0) { - os.flush(); - System.out.print("wrote " + bytes + " bytes\r"); - } + os.write((byte)Integer.parseInt(s, 2)); + if ((bytes % 1000)==0) os.flush(); } os.close(); }