Tuesday, January 24, 2012

Tue., Jan. 24th

Today, Darryl, David, & Michael Dean are here.

I asked Darryl to do a new output stub to stream all 7 bytes of the timing-sync edge individually to the scope.  That will give us an independent way to verify the results from the new, more simplified datapath.  (I couldn't really look at the results with the existing stub because it always just produced 1,0.)

Meanwhile, David & Michael Dean are working together on the additional simplifications to the timing-sync datapath (removing the code dealing with the "number of levels crossed" stuff).

Juan will hopefully be here tomorrow to work on the C code (firmware changes).

Meanwhile, I am contemplating writing a new module in the C code to route all output to STDOUT through the main loop so that we no longer have to worry about the re-entrant versions of the newlib routines (which don't seem to work anyway without uC/OS-II).

The ELF linker says that we have 62K available working memory.  If we set aside 20K for the stack+heap, that leaves 42K.  If we reserve half of that for the pulse buffer and half for the STDOUT buffer, that is 21K each, or 21,504 bytes.  In terms of lines, suppose we limit the line length to 128 characters.  Then that is 168 lines of text, or in other words a couple of screenfuls.  Hopefully that will be sufficient.  Working on the new module now.  Created new files stdout_buf.h, stdout_buf.c, and memory.h.

Meanwhile, the students finished their changes to the datapath and I integrated them into Q:\.  Then we tested with the scope, but the datapath got stalled - some change in one of the later modules caused them to never return the handshake back up the pipe.  We found a couple of bugs in Darryl's state machine and fixed them.  Now it no longer hangs, but the output sequence doesn't make sense in some ways.  Bytes seem out of order.  There is more work to do.

No comments:

Post a Comment