A working serial driver for the UART in the 68901 MFP is now a reality:
This presentation provided a lot of valuable clues:
http://free-electrons.com/doc/serial-drivers.pdf
At it's present state my serial driver only implements the most basic functionality. The mctrl and set_termios calls are not implemented and the driver relies upon the ROM BIOS to initialize the UART.
And now we have a shell:
But Linux is not much fun without storage and networking, is it? So I have also managed to create a rudimentary SPI master driver for the TP3465 MID chip.
And with the SPI bus initialized as follows:
/*
* SD card SPI node
*/
static struct spi_board_info mmc_spi_info[] = {
{
.modalias = "mmc_spi",
.mode = SPI_MODE_0,
.max_speed_hz = 3125000,
.chip_select = 0,
},
};
/*
* Ethernet SPI node
*/
static struct spi_board_info enc28j60_spi_info[] = {
{
.modalias = "enc28j60",
.mode = SPI_MODE_0,
.irq = IRQ_USER + 15,
.max_speed_hz = 3125000,
.chip_select = 1,
},
};
we have the TP3465 driver talking to both the SD card and the ethernet module:Root filesystem on SD card:
Ethernet is working, and we can reach stuff on the internet:
Notice the very round ping times, I believe they are caused by the MFP timer driving the scheduler only having 8 bit resolution.
I have configured two GPIO lines on the MFP as interrupt inputs, one for the ENC28J60 and one for the TP3465. Ethernet interrupts are working fine, but I have not yet managed to get interrupt based SPI transfers to work even though it is supported by my SPI master driver. Right now I am unsure if it's a hardware related problem or if there's a bug in the driver.
Naturally the SPI transfer speed is very limited, and that shows particularly with the SD card device:
Ughh, painfully slow!
Trying to boot using the standard Debian based root filesystem proved a bad idea, so in order to make a somewhat usable system, I have created a very simple startup script using the busybox-based init. The script creates a tmpfs-based ramdisk at /rbin and installs a static busybox binary onto that. /rbin is then prepended to $PATH when a user logs in which results in the simple busybox versions of ls, cat etc being used.
Output from the startup script:
I have also installed the Dropbear lightweight SSH server. Once a SSH session has been established it runs fine with no noticeable lag, but the initial key exchange takes a good three minutes. Retrocomputing demands patience... :-)
And of course the lynx web browser is working with the retro-site:
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.