Pico Ice

The game has to run on some kind of hardware so I bought two Pico Ice boards. They were held-up in customs for a while but luckily they arrived in the end.

The server

This is a really nice platform. It consists of a RaspberryPi Pico MCU and a Lattice iCE40UP5K FPGA. Both have good tool support and easily available documentation. All pins of the MCU and FPGA are available via the headers which will be helpful turning it into a game console.

Did some tests on the first board to see if it was alive.

$ lsusb

Bus 001 Device 007: ID 1209:b1c0 Generic pico-ice

It shows up as a drive, which can be used as one of the ways to program the FPGA.

$ cat /var/log/syslog

Sep  2 16:59:01 mungus kernel: [   42.266458] scsi 2:0:0:0: Direct-Access     Adafruit UF2 Bootloader   1.0  PQ: 0 ANSI: 2
Sep  2 16:59:01 mungus kernel: [   42.267026] sd 2:0:0:0: Attached scsi generic sg2 type 0
Sep  2 16:59:01 mungus kernel: [   42.267459] sd 2:0:0:0: [sdb] 65801 512-byte logical blocks: (33.7 MB/32.1 MiB)
Sep  2 16:59:01 mungus kernel: [   42.267876] sd 2:0:0:0: [sdb] Write Protect is off
Sep  2 16:59:01 mungus kernel: [   42.267885] sd 2:0:0:0: [sdb] Mode Sense: 03 00 00 00
Sep  2 16:59:01 mungus kernel: [   42.268244] sd 2:0:0:0: [sdb] No Caching mode page found
Sep  2 16:59:01 mungus kernel: [   42.268416] sd 2:0:0:0: [sdb] Assuming drive cache: write through
Sep  2 16:59:01 mungus kernel: [   42.287676]  sdb:
Sep  2 16:59:01 mungus kernel: [   42.298387] sd 2:0:0:0: [sdb] Attached SCSI removable disk

And it adds two serial devices

$ ls /dev/ttyA*

crw-rw-rw-+  1 root  dialout   166,   1 Sep  2 16:59 ttyACM1
crw-rw-rw-+  1 root  dialout   166,   0 Sep  2 16:59 ttyACM0

One for communicating with the Pico, and one for communicating with the FPGA.

It also provides a dfu interface

$ ./dfu-util -l
dfu-util 0.9

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2020 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

Found DFU: [1209:b1c0] ver=0100, devnum=7, cfg=1, intf=5, path="1-3", alt=1, name="iCE40 DFU (CRAM)", serial="DE62A43543271431"
Found DFU: [1209:b1c0] ver=0100, devnum=7, cfg=1, intf=5, path="1-3", alt=0, name="iCE40 DFU (flash)", serial="DE62A43543271431"

Which is the second way to program the FPGA.

Next: Top level design