Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
Baremetal programming esentials for the AMD Zynq-7000 SoC
Rating: 3.4 out of 5(3 ratings)
17 students

Baremetal programming esentials for the AMD Zynq-7000 SoC

FPGA Zynq baremetal ARM
Last updated 10/2026
English
English

What you'll learn

  • Clarity about the digital architecture proposed by AMD for baremetal application development
  • Clearly distinguish the elements that make up AMD’s proposed PL‑PS system
  • Understand the steps involved in the Zynq SoC bootloader execution process
  • Acquire a basic understanding of AXI‑4 interface interconnections
  • Use Vivado and Vitis to develop baremetal programming projects
  • Understand how to navigate the standalone peripheral‑driver documentation
  • Know how to create block designs manually and understand Vivado’s automatic connection features
  • Correctly use pointers to peripheral‑instance structures
  • Understand how to profile any function with execution times of 1 microsecond or longer
  • Understand how to initialize driver instances
  • Use the graphical debug mode and gain an initial introduction to command‑line debugging using the XSDB tool
  • Work with various GPIO I/O types: buttons, switches, LEDs, RGB LEDs, and header pins
  • Use the default and automatic sequencer modes of operation from the XADC peripheral
  • Perform data acquisition using the XADC, the DMA, and external DDR3 RAM
  • Use the I2C protocol via the IicPs and XIic drivers
  • Foundations of the SoC’s interrupts, timers, watchdogs and resets
  • Add a baremetal application to the FSBL bootloader, to create a boot image stored in Flash memory
  • Understanding UART and SPI protocols
  • Foundations of the available UART and SPI IP cores that can be used
  • Introduction to using PS-to-PL or PL-to-PS cross-triggering

Course content

10 sections • 61 lectures • 6h 59m total length
  • Excerpt 11:29
  • Excerpt 21:52

    Build the block diagram by adding key IP cores: Zynq processor, processor system reset, AXI direct memory access, AXI4-Stream subset converter, XADC, AXI interconnects, AXI GPIO.

  • Excerpt 30:38

    Implement two high-level gpio configuration functions for single or dual channel gpio, initialize with XGpio_Initialize() with the correct parameters, check status, run XGpio_SelfTest(), and set data direction.

  • Excerpt 41:11

    Experiment with prepped color combinations to reveal vibrant, dynamic RGB LEDs while running the project, and explore your own color variations for further possibilities.

  • Excerpt 51:31

    Observe the header file for definitions and functions and the MLX90393 C file for implementations, with gpio_i2c_int guiding the super loop and interrupt service, watching magnet axes change.

Requirements

  • Having a board that has the AMD Zynq-7000 SoC, like: Digilent Arty Z7, Pynq Z1, Zybo, Zedboard, Eclypse; Avnet Microzed and AMD ZC702
  • Knowledge of theory and implementation of digital electronics, regarding combinatorial logic and sequential logic, either with VHDL or Verilog
  • Basic previous experience at programming microcontrollers and microprocessors. Doesn't matter if you come from programming with Arduino IDE or platformio in VSCode. You'll learn a lot here!

Description

Baremetal applications run without an OS, i.e. a scheduler or virtual memory, so your code’s behavior is fully determined by what you write. This makes them ideal when “missing a time deadline” is unacceptable.

Learning baremetal programming on the Zynq-7000 SoC is the foundation for deterministic, high-performance, and deeply understood AMD embedded systems that use the PS-PL platforms.

Learning to program at the standalone (baremetal) level on the PS helps you understand the PS–PL interconnect, AXI protocols, and driver design before layering on an OS.

In addition, the resulting codes between C and C++, as well as standalone and Linux builds, are similar between them.


Other reasons for taking this course:

  • In this course, you’ll get verified, clearly explained, and accurate code that works for this SoC.

  • Tired of unanswered forum questions? I’ve gathered some of the most common pitfalls and answered them here.

  • Every project done on this course is broken down step-by-step, guided by both the official documentation and my real-world experience.

  • It’s the very hands-on, practical course I wish I had seen around when I first got my Arty Z7 board.


Join me on this baremetal journey with the AMD Zynq-7000 SoC. Enroll now and build something amazing!


Important note (Aug 2026): This course is designed exactly for the Digilent Arty Z7 board. If you have another board like Digilent Zybo, Zedboard, Eclypse; Avnet Microzed and AMD ZC702; I cannot guarantee that the exact examples and practices will synthesize, implement, build and run correctly, since hardware-to-software handoffs may vary. Even so, you're welcome to take the course. You can DM me and ask questions in each lesson about how to make them work perfectly on your board.

Who this course is for:

  • Undergraduate students familiar with FPGA basics but new to ARM Cortex processors
  • FPGA Hobbyists who want to master the standalone library and drivers
  • Young FPGA developers weighing their niche
  • FPGA veterans transitioning from legacy Xilinx tools
  • IP design and verification engineers who want to learn how to use AMD Zynq SoCs
  • Embedded systems engineers who see in FPGAs a tool to achieve a deeper understanding of the field