Skip to content

HowTo Linux on Pano Logic G2

Skip Hansen edited this page Apr 14, 2020 · 12 revisions

Linux on Pano Logic G2

Introduction

This how-to guide is for people who want to run Linux on Pano Logic G2 devices using LiteX BuildEnv.

You will need:

  • A second generation Panologic thin client (the one with a DVI port). Currently only the XC6SLX150 based versions are supported.

  • A PC running Linux natively or in a VM.

  • Xilinx ISE with support for the XC6SLX100/XC6SLX150 chip, there are three ways to obtain it (all of them involve a valid Xilinx account):

    • download a VM image from the Xilinx website
    • get the Xilinx ISE for Windows 10 with the free Webpack license
    • get the Xilinx ISE for Linux with a regular (non-free) Xilinx license

    All of these options should come with a valid license for the FPGA part on the Pano Logic G2. Note that a standard Webpack ISE download for Linux will most probably not support this part (please use the VM instead). Note the large download size (e.g. the VM is 6.9 GB).

  • JTAG adapter

  • USB-UART adapter.

All shell commands in this guide use bash.

Gateware and Firmware

To build Gateware for the board you need to use the pano_logic_g2 platform and the base target of LiteX BuildEnv. On top of that you should use VexRiscv Soft CPU with CPU_VARIANT=linux and BUILD_BUILDROOT=1 exported.

After building the Gateware you can use ./scripts/build-linux.sh to build a custom RootFS and Linux kernel for the board.

The Linux build script requires the device tree compiler (dtc) which you may need to install if you don't already have it.
For Ubuntu: sudo apt install device-tree-compiler

That should generate the following files:

  • <build_dir>/software/linux/firmware.bin
  • <build_dir>/software/linux/riscv32-rootfs.cpio
  • <build_dir>/software/linux/rv32.dtb
  • <build_dir>/emulator/emulator.bin

Accessing the serial port

To access the serial console and upload the Linux image you will need to use a USB-UART adapter. UART can be accessed via 2 DDC pins on the DVI connector, RX is attached to DDC Data and TX is on DDC Clock.

Loading Linux

You can load files generated by build-linux.sh by creating an image.json file similar to this one:

{
        "build/pano_logic_g2_base_vexriscv.linux/software/linux/firmware.bin": "0xc0000000",
        "build/pano_logic_g2_base_vexriscv.linux/software/linux/riscv32-rootfs.cpio": "0xc0800000",
        "build/pano_logic_g2_base_vexriscv.linux/software/linux/rv32.dtb": "0xc1000000",
        "build/pano_logic_g2_base_vexriscv.linux/emulator/emulator.bin": "0x50000000"
}

And then using lxterm --speed <configured_baud_rate> /dev/ttyUSB0 --images <path_to_created_image_json_file> you should be able to load the Linux kernel and the RootFS image into the DDR memory, and shortly after it finishes uploading, a Linux prompt should appear.

Clone this wiki locally