Skip to content

A set of simple example projects aimed at streamlining the development process of a complex design for Xilinx SoCs. It utilizes custom FPGA IPs with interrupts, linux kernel with real-time patch, custom kernel modules and an app taking advantage of CPU isolation.

License

Notifications You must be signed in to change notification settings

DmitryAndSoCs/Cora_Z7_RT_Linux_example

Repository files navigation

Cora_Z7_10 project

Project is going to use Digilent's Cora Z7-10. (which is no longer produced). The process is the same for more common Z7-7S version but it has only 1 ARM core. CPU isolation approach would not be acceptable for that.

This project is aimed at creating a streamlined example of numerous techniques that would let the users create complex designs based on Xilinx SoC chips. It is intended to use a developement board, but the process for the custom board is not going to be much different.

Key features:

  • Linux Real-time patch, CPU1 is isolated for the user application to run there
  • Kernel module that fetches the interrupts from FPGA IP and passes it to a userspace app as a signal SIGUSR1
  • Golang application takes advantage of the kernel features.

    It blinks LEDs, but the approch would be the same for more complex applications.

All the necessary changes for custom boards are necessary at HDL stage and we'll try to cover those where it might be needed.

  • Check Releases for the Cora Z7-10 loadable BOOT.BIN. Blink application is ~/blinkapp/blink.run (on the dev board after boot).

    • To launch is use
    ~/blinkapp/blink.run # OR
    ~/blinkapp/blink.run --timer 39999999 # adjust the cycles number addording to the formula: period = 10 ns * (cycles +1)

The build instructions that contain the description of the techniques and step-by-step guides:

The project is under development. Updates are happening when I have time.

Tools

This project uses Vivado/Vitis 2021.2 and corresponding petalinux version (2021.2). For some endgoal applications that would be written in Golang this project is going to use Go (1.20) and VSCode go extention.

Instructions

The detailed instructions are going to be in the docs folder. They are written in markdown and rendered as PDFs with pandoc.

Links

Tools

I would suggest sticking to a not-so-recent versions as there are many examples and forum discussions for earlier versions. Sometimes there are problems between versions bcause something has changed somewhere and you may end up figuring out what the differences are between versions of Xilinx tools and how to fix those. (Like, there are A LOT of small but confusing changes between 2019.1 - 2019.2 (Vitis), 2019.2 - 2020.1 (petalinux) and so on) Xilinx Vitis/Vivado 2021.2 Petalinux tools 2021.2 Golang in VSCode quickstart Reference designs for Cora Z7 <- not needed but might be useful

You will need a Xilinx (AMD) with a form filled to be able to download Xilinx tools.

About

A set of simple example projects aimed at streamlining the development process of a complex design for Xilinx SoCs. It utilizes custom FPGA IPs with interrupts, linux kernel with real-time patch, custom kernel modules and an app taking advantage of CPU isolation.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published