JavaStation Espresso; Books; Music


JavaStation Espresso

After a long break ( July, 2006!), I decided to look at my JavaStation Espresso again. The Espresso was a development of the JavaStation Krups that we already support, but wasn't produced in quantity. It adds internal IDE, USB, 1 ISA slot, and 2 PCI slots (1 physically shared with ISA) to the Krups design.

My Espresso has a Sun X1032A/501-5656 ethernet/SCSI card in, so I thought that it would be good to have that working, and also look at USB support. The first hurdle with supporting the ethernet/SCSI card is that the OFW in the Espresso doesn't set up PCI devices when it starts up. Only the built-in devices are set up, although we already have to work around the lack of interrupt information by hard-coding it. Also, as noted by Pete Zaitcev, it has a hardware bug with the IDE interrupt line.

The first step was to understand PCI set up, and the PCI Architecture Specification and PCI Bridge Architecture Specification were useful here. After a lot of trial and error, I added PCI fixup support for sparc PCI. It was also necessary to work out which interrupt lines the PCI devices were connected to. The only way that I could see to try this was to adjust the hard-coded values in pci_machdep.c, re-compile and boot the new kernel. In this way, I was able to find out some of the values. The X1032A card has both devices on the same interrupt line, so I also tested with a Sun X6540A/375-0005 PCI dual SCSI card, where the two controllers are on different interrupt lines. Unfortunately, enabling an interrupt line shared with the IDE controllers causes a continuous stream of interrupts on line 5, and it looks like this line is used for some of the PCI lines and maybe the USB too. This means that those devices are not usable without hardware modifications. The boot output with PCI fixup and with the X1032A installed is:

Type 'i' to interrupt stand-init sequence
First stand-init:
Saving Context Table Pointer
Opening the physical memory package
Initializing Dictionary pointers
Opening the virtual memory package
Initializing Breakpoint Trap Handler
Mapping Counter/Timer Registers
Initializing Trap Table
Mapping PCIC Registers
Calibrating ms Factor
Installing Simple Ticker
Installing FLASH/IGS Segment Driver
Mapping FLASH PROM
Audio chip INIT SKIPPED FOR SPEED
Version
Clock Node
Probing Main Memory
Network
Creating idprom property
Creating C Stack
Keyboard overrides
Executing NVRAMRC

JavaStation
OpenBoot 3.12.FW14, 96 MB memory installed, Serial #9778686.
Ethernet address 08:00:20:95:35:fe, Host ID: 809535fe.



>> NetBSD/sparc Secondary Boot, Revision 1.15 (Sun Mar 24 06:10:47 GMT 2013)
Patching OFW for SUNW,JSIIep
sound device node: ok
Booting netbsd
Trying BOOTP protocol... ip address: 192.168.13.113, hostname: espresso, netmask: 255.255.255.0, gateway: 192.168.13.1
root addr=192.168.13.100 path=/export/espresso/root
4372736+130872 [211424+208043]=0x4b23c4
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
    2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
    The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California.  All rights reserved.

NetBSD 6.99.18 (ESPRESSO) #29: Mon Apr 15 17:13:13 BST 2013
        root@orion.coris.org.uk:/usr/obj/sparc/usr/src/sys/arch/sparc/compile/ESPRESSO
total memory = 97080 KB
avail memory = 90104 KB
bootpath: /pci@0,300c0000/network@0,1
mainbus0 (root): SUNW,JSIIep: hostid 809535fe
cpu0 at mainbus0: MB86904 @ 100 MHz, on-chip FPU
cpu0: 16K instruction (32 b/l), 8K data (16 b/l): cache enabled
msiiep0 at mainbus0 addr 0x300c0000
timer0 at msiiep0: delay constant 48
mspcic0 at msiiep0: Sun Microsystems microSPARC IIep PCI: clock = 33.333 MHz
pci0 at mspcic0: model SUNW,375-0059: interrupt wiring known
ebus0 at pci0 dev 0 function 0: Sun Microsystems PCIO Ebus2, revision 0x01
com0 at ebus0 bar 14 offset 0x3002f8 line 0: ns16550a, working fifo
com0: console
com1 at ebus0 bar 14 offset 0x3003f8 line 0: ns16550a, working fifo
rtc0 at ebus0 bar 14 offset 0x300070: time-of-day clock
parallel at ebus0 bar 14 offset 0x3003bc line 4 not configured
pckbc0 at ebus0 bar 14 offset 0x300060, bar 14 offset 0x300060 line 0: selftest ok
flashprom at ebus0 bar 10 offset 0x0 not configured
audiocs0 at ebus0 bar 14 offset 0x200000 line 3: CS4231A
audio0 at audiocs0: full duplex, playback, capture
gpio at ebus0 bar 14 offset 0x300078 not configured
gpio at ebus0 bar 14 offset 0x300079 not configured
hme0 at pci0 dev 0 function 1: Sun Happy Meal Ethernet, rev. 1
hme0: interrupting at line 1 (pil 6)
hme0: Ethernet address 08:00:20:95:35:fe
qsphy0 at hme0 phy 1: QS6612 10/100 media interface, rev. 1
qsphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
igsfb0 at pci0 dev 1 function 0: Integraphics Systems CyberPro 2000 (rev. 0x01)
igsfb0: 2MB, 1024x768, 8bpp
igsfb0: using 8bpp for X
wsdisplay0 at igsfb0 kbdmux 1
ppb0 at pci0 dev 2 function 0: Digital Equipment DC21152 PCI-PCI Bridge (rev. 0x02)
pci1 at ppb0 bus 1
Sun Microsystems PCIO Ebus2 (miscellaneous bridge, revision 0x01) at pci1 dev 0 function 0 not configured
hme1 at pci1 dev 0 function 1: Sun Happy Meal Ethernet, rev. 1
hme1: interrupting at line 7 (pil 7)
hme1: Ethernet address 08:00:20:95:35:fe
nsphy0 at hme1 phy 1: DP83840 10/100 media interface, rev. 1
nsphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
isp0 at pci1 dev 4 function 0: QLogic 1020 Fast Wide SCSI HBA
isp0: interrupting at line 6 (pil 5)
isp0: invalid NVRAM header
Acer Labs M1533 PCI-ISA Bridge (ISA bridge, revision 0x08) at pci0 dev 7 function 0 not configured
aceride0 at pci0 dev 16 function 0: Acer Labs M5229 UDMA IDE Controller (rev. 0x20)
aceride0: using line 5 (pil 0) for native-PCI interrupt
atabus0 at aceride0 channel 0
atabus1 at aceride0 channel 1
alipm0 at pci0 dev 17 function 0alipm0: SMBus disabled
Acer Labs M5237 USB 1.1 Host Controller (USB serial bus, interface 0x10, revision 0x03) at pci0 dev 20 function 0 not configured
scsibus0 at isp0: 16 targets, 8 luns per target
scsibus0: waiting 2 seconds for devices to settle...
sd0 at scsibus0 target 2 lun 0:  disk fixed
sd0: fabricating a geometry
sd0: 17274 MB, 17274 cyl, 64 head, 32 sec, 512 bytes/sect x 35378533 sectors
sd0: async, 8-bit transfers
root on hme0
nfs_boot: trying DHCP/BOOTP
nfs_boot: DHCP next-server: 192.168.13.100
nfs_boot: my_name=espresso
nfs_boot: my_domain=coris.org.uk
nfs_boot: my_addr=192.168.13.113
nfs_boot: my_mask=255.255.255.0
nfs_boot: gateway=192.168.13.1
root on 192.168.13.100:/export/espresso/root
root file system type: nfs
WARNING: clock lost 4854 days
WARNING: using filesystem time
WARNING: CHECK AND RESET THE DATE!
/etc/rc.conf is not configured.  Multiuser boot aborted.
Enter pathname of shell or RETURN for /bin/sh: 
Terminal type is wsvt25.                                                
We recommend that you create a non-root account and use su(1) for root access.
espresso#
    

and it's possible to check the disk and configure the ethernet:

espresso# disklabel sd0
# /dev/rsd0c:
type: SCSI
disk: MAA3182S SUN18G 
label: fictitious
flags:
bytes/sector: 512
sectors/track: 248
tracks/cylinder: 19
sectors/cylinder: 4712
cylinders: 7508
total sectors: 35378533
rpm: 7200
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0           # microseconds
track-to-track seek: 0  # microseconds
drivedata: 0 

3 partitions:
#        size    offset     fstype [fsize bsize cpg/sgs]
 a:  35378533         0     4.2BSD      0     0     0  # (Cyl.      0 -   7508*)
 c:  35378533         0     unused      0     0        # (Cyl.      0 -   7508*)
espresso#  ifconfig hme1 inet 81.2.110.42 netmask 0xffffffe0 up
espresso# ping -c 31 -s 4480 -i 0.2 81.2.110.41
PING 81.2.110.41 (81.2.110.41): 4480 data bytes
4480 bytes from 81.2.110.41: icmp_seq=1 ttl=255 time=7.180440 ms
4480 bytes from 81.2.110.41: icmp_seq=2 ttl=255 time=6.451840 ms
  ...
4480 bytes from 81.2.110.41: icmp_seq=30 ttl=255 time=6.781320 ms

----81.2.110.41 PING Statistics----
31 packets transmitted, 30 packets received, 3.2% packet loss
round-trip min/avg/max/stddev = 6.402320/6.552037/7.180440/0.196676 ms
    

After discovering as many of the PCI interrupt mappings as I could, the next problem came when using the devices. For some reason, the machine would lock up occasionally when using the PCI cards. This was more likely if the ethernet was stressed. I also observed crashes, more often with SCSI than with ethernet. It looks like the problem is related to repeated Delayed Transactions on the secondary bus interface. As far as I can tell, with the default PCI controller configuration, the transaction will always fail, and the PCI controller will repeat the transaction forever. A workaround is to configure the controller to only repeat the transaction a certain number of times (the real fix would be to work out why the transaction fails). However, the workaround results in the read returning all-ones. For example:

espresso# ping -c 310 -s 4480 -f 81.2.110.41
PING 81.2.110.41 (81.2.110.41): 4480 data bytes
NMI: system interrupts: 0x40000000
pio: addr=3e007008, cmd=6 stat=5022
.NMI: system interrupts: 0x40000000
pio: addr=3e000100, cmd=6 stat=5022
hme1: XXXlink status changed: cfg=100, stat 0, sm 0
NMI: system interrupts: 0x40000000
pio: addr=3e000100, cmd=6 stat=5022
hme1: XXXlink status changed: cfg=100, stat 0, sm 0
.

----81.2.110.41 PING Statistics----
310 packets transmitted, 310 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 6.343480/6.680469/30.915520/2.006845 ms
  138.2 packets/sec sent,  138.3 packets/sec received
espresso#
    

where the read after the interrupt has all bits set, and this is also probably the reason that it's not possible to use the disk:

espresso# fsck /dev/rsd0a
fsck: Cannot open `/etc/fstab': No such file or directory
fsck: Cannot open `/etc/fstab': No such file or directory
** /dev/rsd0a
fsck: /dev/rsd0a: Illegal instruction
espresso#
    

In summary, it's rather disappointing that I can't get this to work, but after two weeks, and having hit a brick wall, I've stopped working on it again. But, I did take some pictures of it before putting it away.


Books

Recent book purchases:

As a follow on to Volume 1, Volume 2 brings a more recent set of pictures of the North Wales coast. More memories of travelling on the North Wales main line, and in the time that I remember it. A generally very nice set of pictures, with some interesting angles taken by railwaymen too.

The Adventures Of The Hebe is a set of dairies of 3 voyages around the midlands canals in 1928, 1929 and 1930. Very nicely written up, with photographs too. A reflection of a simpler time.


Music

I bought The Very Best of Jeannie C. Riley after listening to Kate Campbell's Twang On A Wire covers album and after listening to the 1968 recording of Harper Valley P.T.A.. Not a bad album, but I prefer the MP3 of Harper Vally P.T.A., even though it's a bit raw.

As a fan of Emmylou Harris, I was somewhat disappointed by this album - it doesn't seem to sparkle like some of the others. The tracks are all OK, but nothing really stands out. Spanish Dancer is probably my favourite track, but even that's not much different from Patti Scialfa's version on Rumble Doll.

I much preferred Neil Young's Prairie Wind, which I'd bought on impulse. It seems more laid back than some of his earlier work, but I still like that.


-^- More notes -^-