2022-09-19 02:51:11 -04:00
|
|
|
# Toolchain setup
|
|
|
|
|
|
|
|
Here are instructions for setting up the tools required to build the project.
|
|
|
|
Tested on Ubuntu 22.04 LTS.
|
|
|
|
|
|
|
|
## Gateware: icestorm toolchain
|
|
|
|
|
|
|
|
These steps are used to build and install the
|
|
|
|
[icestorm](http://bygone.clairexen.net/icestorm/) toolchain (in
|
|
|
|
`/usr/local`). Note that nextpnr replaces Arachne-PNR.
|
|
|
|
|
|
|
|
sudo apt install build-essential clang lld bison flex libreadline-dev \
|
|
|
|
gawk tcl-dev libffi-dev git mercurial graphviz \
|
|
|
|
xdot pkg-config python3 libftdi-dev \
|
|
|
|
python3-dev libboost-dev libeigen3-dev \
|
|
|
|
libboost-dev libboost-filesystem-dev \
|
|
|
|
libboost-thread-dev libboost-program-options-dev \
|
2022-09-19 09:42:04 -04:00
|
|
|
libboost-iostreams-dev cmake libhidapi-dev
|
2022-09-19 02:51:11 -04:00
|
|
|
|
|
|
|
git clone https://github.com/YosysHQ/icestorm
|
|
|
|
cd icestorm
|
|
|
|
make -j$(nproc)
|
|
|
|
sudo make install
|
|
|
|
cd ..
|
|
|
|
|
|
|
|
# Custom iceprog for the RPi 2040-based programmer (will be upstreamed).
|
|
|
|
git clone -b interfaces https://github.com/tillitis/icestorm tillitis--icestorm
|
|
|
|
cd tillitis--icestorm/iceprog
|
|
|
|
make
|
|
|
|
sudo make PROGRAM_PREFIX=tillitis- install
|
|
|
|
cd ../..
|
|
|
|
|
|
|
|
git clone https://github.com/YosysHQ/yosys
|
|
|
|
cd yosys
|
|
|
|
# Avoiding current issue with yosys & icebram, filed in:
|
|
|
|
# https://github.com/YosysHQ/yosys/issues/3478
|
|
|
|
git checkout 06ef3f264afaa3eaeab45cc0404d8006c15f02b1
|
|
|
|
make -j$(nproc)
|
|
|
|
sudo make install
|
|
|
|
cd ..
|
|
|
|
|
|
|
|
git clone https://github.com/YosysHQ/nextpnr
|
|
|
|
cd nextpnr
|
2022-09-23 05:34:39 -04:00
|
|
|
# Use nextpnr-0.4. Aa few commits later we got issues, like on f4e6bbd383f6c43.
|
|
|
|
git checkout nextpnr-0.4
|
2022-09-19 02:51:11 -04:00
|
|
|
cmake -DARCH=ice40 -DCMAKE_INSTALL_PREFIX=/usr/local .
|
|
|
|
make -j$(nproc)
|
|
|
|
sudo make install
|
|
|
|
|
|
|
|
References:
|
|
|
|
* http://bygone.clairexen.net/icestorm/
|
|
|
|
|
|
|
|
## Firmware: riscv toolchain
|
|
|
|
|
|
|
|
The Tillitis Key 1 implements a
|
|
|
|
[picorv32](https://github.com/YosysHQ/picorv32) soft core CPU, which
|
|
|
|
is a RISC-V microcontroller with the M and C instructions (RV32IMC).
|
|
|
|
You can read
|
|
|
|
[more](https://www.sifive.com/blog/all-aboard-part-1-compiler-args)
|
|
|
|
about it.
|
|
|
|
|
|
|
|
The project uses the LLVM/Clang suite, where version 14 is the latest
|
|
|
|
stable (as of writing). Usually the LLVM/Clang packages that are part
|
|
|
|
of your distro will work, if not, there are installations instructions
|
|
|
|
for "Install (stable branch)" at https://apt.llvm.org/ for Debian and
|
|
|
|
Ubuntu.
|
|
|
|
|
|
|
|
References:
|
|
|
|
* https://github.com/YosysHQ/picorv32
|
|
|
|
|
|
|
|
## Optional
|
|
|
|
|
|
|
|
These tools are used for specific sub-components of the project, and
|
|
|
|
are not required for general development
|
|
|
|
|
|
|
|
### Kicad 6.0: Circuit board designs
|
|
|
|
|
|
|
|
The circuit board designs were all created in [KiCad
|
|
|
|
6.0](https://www.kicad.org/).
|
|
|
|
|
|
|
|
### mta1-usb-v1-programmer: RPi 2040 toolchain
|
|
|
|
|
|
|
|
These tools are needed to build the programmer firmware for the
|
|
|
|
mta1-usb-v1-programmer
|
|
|
|
|
2022-09-21 08:30:16 -04:00
|
|
|
#### FW update of the programmer
|
|
|
|
The programmer runs a FW needed to program the devices, the source code
|
|
|
|
is available on Githun:
|
|
|
|
|
|
|
|
https://github.com/Blinkinlabs/ice40_flasher
|
|
|
|
|
|
|
|
There is also a pre built FW binary for the programmer:
|
|
|
|
https://github.com/Blinkinlabs/ice40_flasher/tree/main/bin
|
|
|
|
|
|
|
|
Download the file programmer FW file "main.uf2" to your host computer.
|
|
|
|
|
|
|
|
To program do the following.
|
|
|
|
|
|
|
|
1. Press the "BOOTSEL" button on the RPi2040 board while connecting the board to the host
|
|
|
|
2. Release the button after cvonnecting the board to the host. The board will now appear to the host as a USB connected storage device
|
|
|
|
3. Open the storage device and drop the FW file ("main.uf2") into the storage device
|
2022-09-19 02:51:11 -04:00
|
|
|
|
2022-09-21 08:30:16 -04:00
|
|
|
The programmer will update its FW with the file and restart itself.
|
2022-09-19 02:51:11 -04:00
|
|
|
|
|
|
|
|
|
|
|
### mta1-usb-v1: ch552 USB to Serial firmware
|
|
|
|
|
|
|
|
The USB to Serial firmware runs on the CH552 microcontroller, and
|
|
|
|
provides a USB CDC profile which should work with the default drivers
|
|
|
|
on all major operating systems.
|
|
|
|
|
|
|
|
TODO
|
|
|
|
|
|
|
|
References:
|
|
|
|
* source code: https://github.com/tillitis/tillitis-key1/tree/main/hw/boards/mta1-usb-v1/ch552_fw
|
|
|
|
* Compiler: [SDCC](http://sdcc.sourceforge.net/)
|
|
|
|
* Library: https://github.com/Blinkinlabs/ch554_sdcc
|
|
|
|
* Flashing tool: https://github.com/ole00/chprog
|