On Thu, Feb 6, 2014 at 1:50 PM, Ethan Dicks <ethan.dicks at gmail.com> wrote:
I recommend using that real serial port for the connection to the
PDP-8. You could ssh into the R-Pi for control or, for a follow-on
product, it's not hard to stick a textual LCD and a couple of buttons
onto the GPIO header. You can even get them as a pre-assembled
shield.
My plan was to use a USB-serial converter for the disk server, a glass
terminal (not the RPi) for TTY: (or another laptop, to make file transfers
easy), and a USB thumb drive to store the data on. Is this what you're
thinking too?
Were you saying that utilities like tcpser to link the RPi to another
machine running the server would not be a good idea?
The lack of RAM in the smaller AVR chips _is_ an
impediment. The
larger chips have 4K or even up to 8K of onboard SRAM (up from 1K or
2K), or alternately, some people have had good success with SPI or I2C
RAM. It is likely to be fast enough to buffer incoming packets at
the cost of a few bucks on top of the AVR. Consider, for example, the
ATmega644P or ATmega1284P - as seen in the Sanguino. They have 2
internal UARTs (no serial bitbanging required) and 4K of SRAM. They
come in 40-pin-DIP and 44-pin TQFP, IIRC.
On Thu, Feb 6, 2014 at 12:37 PM, David Riley <fraveydank at gmail.com> wrote:
If you're really worried about it on the Arduino (how much buffer do
you really need, anyway?), you could always try bare-metal on something
a little beefier. I highly recommend the STM32F4DISCOVERY board, which
works very nicely with the GCC ARM stack; it has a companion baseboard
which adds an RS232-converted serial port (as opposed to bare CMOS
levels), an Ethernet port and a microSD slot. I'll be glad to help you
get up and running with it; there's a great Launchpad project that
maintains Mac/Windows/Linux binaries for a targeted GCC stack plus a
micro version of Newlib, the C library. Really neat stuff.
I have quite a few development boards around here, including a Mojo FPGA
board, many Arduinos, a couple of Teensy boards, and as of two days ago, an
STM32F4DISCOVERY. The DISCOVERY is actually for my embedded systems class,
so I'll be playing with that some this semester. Sounds like a fun project
to port the server over there. But David, I think I may take up your offer
in making a version for ARM; that board is cheap enough where I think a
viable product could be made from it, and eventually a standalone board
with some added peripherals.
In related news, I revamped my server and handler...I've quite literally
more than doubled the transfer rate. BASIC used to load in 13 seconds. I
now can load it in 6.3 seconds. It turns out much of the time was spent
handshaking between page transfers. Thus, long transfers were taking almost
as long as a small sequence of short transfers. Now, the handshaking is
only done at the beginning and end of the transfer, so the entire data
stream is uninterrupted from start to finish. Much faster for 31 block
transfers, for instance.
I have no idea how this will compare to an RK05...looking forward to
hearing some results from some benchmarks. I can probably modify some of my
regression tests to be a random disk read and sequential disk read to get
an idea of transfer rates between devices.
Here's my to do list before I feel comfortable releasing DiskServer v1.0:
- Clean up code (nearly done)
- Rewrite server to use dumprest format (very easy)
- Write README and a good tutorial
- Make program to replace bootloader and handler on disk packs (very easy)
- Non-system version (may take a little time)
- Check length of disk image on start
- Grow file system as writes occur
Things I'd like to do in the near future:
- Timeout within handler and server
- emulate RK05 disk pack (requires two entry points for two disk surfaces)
- Option to zero last 128 words in half block scenario (is this really
necessary?)
- ctrl-c operation (for non-system version)
Kyle