This page is about the "production" version of the setup described in ICE40_based_passive_tap.
It is a bi-directional, high-impedance passive tap for E1 (PRI/S2M) tracing. It traces both directions of a link simultaneously via two LIU (Line Interface Units) attached to an iCE40 FPGA with E1 framer + USB softcores.
The traces are sent as isochronous USB transfers to the host PC, where they can (for example) be stored on disk.
Hardware files can be found at: http://git.osmocom.org/osmo-e1-hardware/tree/hardware/e1-tracer and are available as Open Source Hardware.
We originally started with a prototype from an iCE40 evaluation board plus two osmo-e1-xcvr and one e1-tap as described in ICE40_based_passive_tap.Meanwhile, we have designed a fully integrated board. Design files are part of the
- Board layout
- Bill of Materials
gateware + firmware¶
The FPGA gateware and RISC-V softcore firmware are found in the
osmo-e1-hardware.git repository, under the
firmware/ice40-riscv/e1-tracer directories respectively.
to bring up the board after manufacturing there are 2 steps:
- flash the padded bootloader into spi flash
- flashing the runtime gateware and application via dfu
flashing the bootloader¶
this involves pulling the _CRESET line on the spi programming header next to ground (the next pin nex to it) to keep the fpga in reset while we access the flashchip.
the board can be powered via usb for this, but the spi programming cable should not have a vcc line connected then.
the 1M0xff.bin file consists of 0xFF and is used as padding for the unused flash areas.
the tool used for flashing here is flashrom via a stm32(bluepill) based adapter ("STM32 virtual serprog for flashrom") but virtually any spi programmer can be used.
cat e1tracer-bootloader-20200822.bin 1M0xff.bin > tmp dd if=tmp of=flashme1M.bin bs=1024 count=1024 rm tmp flashrom -p serprog:dev=/dev/ttyACM3:4000000 -w flashme1M.bin
flashing the runtime¶
to access the bootloader the first time, before any runtime is flashed you need to reset the board (power) while SW1 (button) is pressed to force bootloader(dfu) mode.
flashing itsel is easy since it only needs the regular userspace tool dfu-util and firmware from http://ftp.osmocom.org/binaries/e1-tracer/firmware/ (for now on https://people.osmocom.org/tnt/stuff/e1-recorder/ )
dfu-util -d 1d50:6150 -c 1 -a 0 -D riscv_usb.bin dfu-util -d 1d50:6150 -c 1 -a 1 -D fw_app.bin -R
Fully assembled products based on this hardware are going to be made available by sysmocom
The host software is found in the
e1-recorder branch of
ice40playground.git, see https://github.com/smunaut/ice40-playground/tree/e1-recorder/projects/riscv_usb/sw
There are two related programs:
main- the program used to perform recordings and store them
dump- the program to analyze recordings