From 244eb667bb037139bc27f229ca3761567c7507e1 Mon Sep 17 00:00:00 2001 From: adam Date: Mon, 28 Jan 2008 07:09:20 +0100 Subject: [PATCH] checkpoint --- Makefile | 10 ++- ships/Memory.ship | 22 +++++- ships/Stack.ship | 5 +- src/edu/berkeley/fleet/fpga/Server.java | 116 +++++++++++++------------------ src/edu/berkeley/fleet/fpga/main.v | 4 +- 5 files changed, 83 insertions(+), 74 deletions(-) diff --git a/Makefile b/Makefile index d0f496f..6446b41 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ ## Fleeterpreter ############################################################################## -cp = -cp fleet.jar +cp = -cp fleet.jar:lib/RXTXcomm.jar java = java -Xmx500m run: fleet.jar; $(java) $(cp) $(interpreter_class) @@ -15,12 +15,12 @@ endif fleet.jar: $(shell find src -name \*.java) $(shell find ships -name \*.ship) src/edu/berkeley/fleet/assembler/fleet.g mkdir -p build/class/edu/berkeley/fleet/assembler/ cp src/edu/berkeley/fleet/assembler/fleet.g build/class/edu/berkeley/fleet/assembler/ - javac -classpath lib/edu.berkeley.sbp.jar -d build/class/ $(shell find src -name \*.java) + javac -classpath lib/RXTXcomm.jar:lib/edu.berkeley.sbp.jar -d build/class/ $(shell find src -name \*.java) cd build/class/; jar xf ../../lib/edu.berkeley.sbp.jar for A in `find ships -name \*.ship`;\ do java -cp build/class edu.berkeley.fleet.Main expand $$A;\ done - javac -classpath build/class${ps}lib/edu.berkeley.sbp.jar -d build/class/ `find build/java -name \*.java` + javac -classpath lib/RXTXcomm.jar:build/class${ps}lib/edu.berkeley.sbp.jar -d build/class/ `find build/java -name \*.java` echo 'Main-Class: edu.berkeley.fleet.Main' > build/class/manifest cd build/class/; jar cmf manifest ../../$@ . @@ -68,8 +68,12 @@ runfpga: fleet.jar program: upload ssh root@goliath.megacz.com 'cd /afs/megacz.com/work/ml410/; ./program.sh ./main.bit' +runserver: + java -Djava.library.path=lib -cp lib/RXTXcomm.jar:fleet.jar edu.berkeley.fleet.fpga.Server + upload: fleet.jar build/fpga/main.bit mkdir -p build + rsync -are ssh --progress --verbose ./ root@goliath:fleet/ rsync -zare ssh --progress --verbose build/fpga/main.bit root@goliath.megacz.com:/afs/megacz.com/work/ml410/ uploadtest: diff --git a/ships/Memory.ship b/ships/Memory.ship index bfe28c5..e9f1e51 100644 --- a/ships/Memory.ship +++ b/ships/Memory.ship @@ -258,7 +258,24 @@ module memory (clk, rst, some_bram mybram(clk, rst, write_flag, in_addr, current_instruction_read_from, write_data, not_connected, ramread); assign out_d_ = ramread; - always @(posedge clk) begin + always @(posedge clk /*or negedge rst*/) begin + + if (!rst) begin + ihorn_full <= 0; + dhorn_full <= 0; + command_valid <= 0; +/* + preload_size <= 0; +*/ + launched <= 0; + command_valid_read <= 0; + write_flag <= 0; + + dhorn_r <= 0; + ihorn_r <= 0; + out_r <= 0; + + end else begin write_flag <= 0; @@ -343,6 +360,9 @@ module memory (clk, rst, end end end + + end + end end endmodule diff --git a/ships/Stack.ship b/ships/Stack.ship index 1143c5b..3e9871f 100644 --- a/ships/Stack.ship +++ b/ships/Stack.ship @@ -54,7 +54,9 @@ the arbitration issues. reg skip; initial depth = 0; - always @(posedge clk) begin + always @(posedge clk or negedge rst) begin + if (!rst) depth <= 0; + else begin skip = 0; if (depth > 0) begin `onwrite(pop_r, pop_a) @@ -72,6 +74,7 @@ the arbitration issues. depth <= depth + 1; end end + end end diff --git a/src/edu/berkeley/fleet/fpga/Server.java b/src/edu/berkeley/fleet/fpga/Server.java index dfc8b22..7f1fbfd 100644 --- a/src/edu/berkeley/fleet/fpga/Server.java +++ b/src/edu/berkeley/fleet/fpga/Server.java @@ -1,5 +1,6 @@ package edu.berkeley.fleet.fpga; +import gnu.io.*; import java.io.*; import java.net.*; import java.util.*; @@ -8,45 +9,54 @@ public class Server { public static ServerSocket ss; public static void main(String[] args) throws Exception { + System.err.println("programming..."); + Process proc = Runtime.getRuntime().exec(new String[] { + "/afs/megacz.com/work/ml410/program.sh", + "/afs/megacz.com/work/ml410/main.bit" + }); + BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream())); + String str = null; + while((str = br.readLine()) != null) { + System.err.println(" " + str); + } + int ret = proc.waitFor(); + if (ret != 0) { + System.err.println("programming error: " + ret); + return; + } + System.err.println("done programming."); ss = new ServerSocket(3133); - /* - new Listener(3).start(); - new Listener(4).start(); - new Listener(1).start(); - new Listener(2).start(); - */ - new Listener(0).start(); + while(true) { + try { + Socket s = ss.accept(); + new Handler(s).start(); + } catch (Exception e) { + e.printStackTrace(); + } + } } public static String pass_string = "password=security_is_for_wimps "; - static class Listener extends Thread { - private int devnum; - public Listener(int devnum) { this.devnum = devnum; } + static class Handler extends Thread { + private Socket socket; + boolean closed = false; + private SerialPort sp; + public Handler(Socket s) { this.socket = s; this.sp = sp; } public void run() { - while(true) { + synchronized(Server.class) { try { - Socket s = null; - synchronized(Server.class) { - System.err.println("thread " + devnum + " listening"); - s = ss.accept(); - System.err.println("connection"); + this.sp = new RXTXPort("/dev/ttyS0"); + //sp.sendBreak(500); + try { + _run(); + } finally { + sp.close(); } - new Handler(s, devnum).run(); } catch (Exception e) { throw new RuntimeException(e); } - try { Thread.sleep(1000); } catch (Exception e) { } } } - } - - static class Handler extends Thread { - private Socket socket; - boolean closed = false; - private int devnum; - public Handler(Socket s, int devnum) { this.socket = s; this.devnum = devnum; } - public void run() { - RandomAccessFile raf = null; - FileInputStream fis = null; + public void _run() { try { final InputStream is = socket.getInputStream(); byte[] buf = new byte[1024]; @@ -59,42 +69,18 @@ public class Server { } System.err.println("login string: " + sb.toString()); if (!sb.toString().startsWith(pass_string)) return; - String file = sb.toString().substring(pass_string.length()).trim(); - System.err.println("programming..."); - Process proc = Runtime.getRuntime().exec(new String[] { "/afs/megacz.com/work/ml410/program.sh", "/afs/megacz.com/work/ml410/main.bit" }); - BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream())); - String s = null; - while((s = br.readLine()) != null) { - System.err.println(" " + s); - } - int ret = proc.waitFor(); - if (ret != 0) { - System.err.println("programming error: " + ret); - return; - } - /* - System.err.println("programming..."); - ret = Runtime.getRuntime().exec(new String[] { - "/usr/bin/user_program", ""+devnum, "/var/slipway/"+file }).waitFor(); - if (ret != 0) { - System.err.println("programming error: " + ret); - return; - } - */ - System.err.println("done programming."); - try { Thread.sleep(2000); } catch(Exception e) { } + //try { Thread.sleep(2000); } catch(Exception e) { } final OutputStream os = socket.getOutputStream(); System.err.println("sending instructions..."); - raf = new RandomAccessFile("/dev/ttyS"+devnum, "rw"); + sp.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); + final OutputStream fos = sp.getOutputStream(); + final InputStream fis = sp.getInputStream(); - final RandomAccessFile raf2 = raf; new Thread() { public void run() { - FileOutputStream fos = null; try { - fos = new FileOutputStream(raf2.getFD()); byte[] buf = new byte[1024]; while(true) { int numread = is.read(buf, 0, buf.length); @@ -104,18 +90,14 @@ public class Server { } } catch (Exception e) { throw new RuntimeException(e); } finally { - if (raf2 != null) { - System.err.println("closing..."); - closed = true; - try { raf2.close(); } catch (Throwable t) { t.printStackTrace(); } - try { fos.close(); } catch (Throwable t) { t.printStackTrace(); } - } + System.err.println("closing..."); + closed = true; + try { fos.close(); } catch (Throwable t) { t.printStackTrace(); } } } }.start(); System.err.println("reading back..."); - fis = new FileInputStream(raf.getFD()); while(true) { long result = 0; int val = 0; @@ -148,11 +130,11 @@ public class Server { } catch (Exception e) { throw new RuntimeException(e); } finally { try { - if (raf != null) { - System.err.println("closing..."); - raf.close(); - } + System.err.println("closing..."); + /* + fis.close(); if (fis != null) fis.close(); + */ } catch (Throwable t) { t.printStackTrace(); } } } diff --git a/src/edu/berkeley/fleet/fpga/main.v b/src/edu/berkeley/fleet/fpga/main.v index cd05049..9c6fcb8 100644 --- a/src/edu/berkeley/fleet/fpga/main.v +++ b/src/edu/berkeley/fleet/fpga/main.v @@ -19,7 +19,7 @@ module main assign clk = sys_clk_pin; wire break; wire rst; - assign rst = sys_rst_pin || break; + assign rst = sys_rst_pin; wire data_to_host_full; wire data_to_host_write_enable; @@ -69,7 +69,7 @@ module main wire [7:0] root_in_d; - root my_root(clk, rst, + root my_root(clk, rst && !break, root_in_r, root_in_a, root_in_d, root_out_r, root_out_a, data_to_host); /* -- 1.7.10.4