Skip to content
Snippets Groups Projects
Select Git revision
  • master
1 result

README.md

Blame
  • LiteX

    FemtoRV can be used with LiteX.

    LiteX is an easy-to-use framework for creating SoCs.

    • it supports many different FPGA boards
    • it includes gateware for many different devices (SDRAM, HDMI, SDCard, SATA ...)
    • it has basic software support (a BIOS)
    • with some cores (VexRiscV) it can even run Linux (not possible with FemtoRV though)

    The remainder of this file contains the instruction to install LiteX and its dependencies.

    Install open-source FPGA development toolchain

    Before starting, you will need to install the open-source FPGA development toolchain (Yosys, NextPNR etc...), instructions to do so are given here.

    Install LiteX

    Follow setup instructions from LiteX website

    TL;DR

    $ mkdir LiteX
    $ cd LiteX
    $ wget https://raw.githubusercontent.com/enjoy-digital/litex/master/litex_setup.py
    $ chmod +x litex_setup.py
    $ ./litex_setup.py --init --install --user 
    $ pip3 install meson ninja
    $ ./litex_setup.py --gcc=riscv

    Synthesize

    Instructions to synthesize are different, depending on the board you have.

    Connect to the SoC

    Start a terminal emulator. You can use the one bundled with LiteX (lxterm). You will need to determine on which port it is plugged (one of /dev/ttyUSBnnn), use $dmesg right after plugging it (or try different values). Supposing it is ttyUSB0, do:

      $lxterm /dev/ttyUSB0

    Then press <enter>. You will see the litex> prompt.

    • As you may have guessed, do litex> help to see the possible commands.
    • Try litex> sdram_test. If everything went well, it should say Memtest OK.
    • To exit, press <ctrl><\>

    FemtoRV variants

    LiteX can use all the variants of FemtoRV, from the tiniest: femtorv-quark (RV32I) to the bigest one with an FPU: femtorv-petitbateau (RV32IMFC+irq).

    variant instruction set
    quark RV32I
    electron RV32IM
    intermissum RV32IM+irq
    gracilis RV32IMC+irq
    petitbateau RV32IMFC+irq
    $ python3 -m litex_boards.targets.radiona_ulx3s --cpu-type=femtorv --cpu-variant=petitbateau --build --load --device LFE5U-85F --sdram-module AS4C32M16

    Software

    Time to compile and install software on your SoC.

    Compiling RiscV software for the device

    See LiteX demo here

    $ cd <LiteX installation directory>
    $ litex_bare_metal_demo --build-path build/radiona_ulx3s/

    Sending software to the device

    lxterm can be used to send a binary to the device, as follows:

    $lxterm --kernel <software.bin> --speed 115200 /dev/ttyUSB0

    Notes - LiteX cheatcodes and files

    If you want to learn more about how LiteX works, reading the sourcecode is a good idea ! Some important links and files:

    • simulation: litex_sim --cpu-type=femtorv --with-sdram
    • ULX3S pins: litex-boards/litex_boards/platforms/radiona_ulx3s.py
    • ULX3S: litex-boards/litex_boards/targets/radiona_ulx3s.py
    • femtorv: litex/litex/soc/cores/cpu/femtorv/core.py
    • bios: litex/litex/soc/software/bios/main.c
    • framebuffer: litex/litex/soc/cores/video.py
    • wishbone-utils