Embedded Systems Software Design


Course Description

This two-day course introduces you to software design and development for the Xilinx Zynq™ All Programmable System on a Chip (SoC) using the Xilinx Software Development Kit (SDK). You will learn the concepts, tools, and techniques required for the software phase of the design cycle.

Topics are comprehensive, covering the design and implementation of the board support package (BSP) for resource access and management of the Xilinx Standalone library. Major topics include device driver use and custom development and user application debugging and integration. Practical implementation tips and best practices are also provided throughout to enable you to make good design decisions and keep your design cycles to a minimum. You will have enough practical information to start developing software applications for the ARM® Cortex™-A9 and MicroBlaze™ processors.

Additionally, this course covers developing software applications for a Xilinx embedded system based on a MicroBlaze processor.

Level: EMB SW 3
Course Duration: 2 days
Price: $1600 or 16 Xilinx Training Credits
Course Part Number: EMBD23000-ILT
Who Should Attend?: Software design engineers interested in system design and implementation and software application development and debugging using the Xilinx Standalone library
Registration: Register online in our secure store


  • C or C++ programming experience, including general debugging techniques
  • Conceptual understanding of embedded processing systems including device drivers, interrupt routines, writing / modifying scripts, user applications, and boot loader operation 

Software Tools

  • Vivado Design or System Edition 2018.3


  • Architecture: Zynq-7000 All Programmable SoC and 7 series FPGAs*
  • Demo board: Zynq-7000 All Programmable SoC ZC702 or Zed or Kintex™-7 FPGA KC705 board*

* This course focuses on the Zynq All Programmable SoC and 7 series FPGA architectures. Contact us for the specifics of the in-class lab board or other customizations.

After completing this comprehensive training, you will have the necessary skills to:

  • Implement an effective software design environment for a Xilinx embedded system using the Xilinx SDK tools
  • Write a basic user application (under Standalone or Linux) using the Xilinx Software Development Kit (SDK) and run it on an embedded system platform
  • Use Xilinx debugger tools to troubleshoot user applications
  • Apply software techniques to improve operability
  • Maintain and update software projects with changing hardware

Course Outline

Day 1

  • Processors, Peripherals, and Tools
  • Standalone Software Platform Development
  • Linux Software Application Development
  • Lab 1: Basic System Implementation (Zynq All Programmable SoC or MicroBlaze Processor)
  • Software Development Using SDK
  • Linux Lab 1: Running a Linux Application on the Zynq All Programmable SoC
  • Writing Code in the Xilinx Standalone Environment
  • Writing Code in the Xilinx Linux Environment
  • Lab 2: Application Development
  • Address Management
  • Interrupts
  • Lab 3: Software Interrupts (Zynq All programmable SoC or MicroBlaze Processor)

Day 2

  • Software Platform Download and Boot
  • Application Debugging
  • Lab 4: Debugging
  • Application Profiling
  • Linux Lab 3: Linux Debugging
  • Application Profiling
  • Lab 5: SDK Profiling
  • Linux Lab 4: Linux SDK Profiling
  • Writing a Custom Device Driver
  • Lab 6: Writing a Device Driver
  • Advanced Services and Operating Systems
  • Project Management with the Xilinx Design Tools
  • Lab 7: File Systems

Lab Descriptions


  • Lab 1: Basic System Implementation (Zynq AP SoC or MicroBlaze Processor)-Construct the hardware and software platforms used for the course labs. Begin with  Processing System Configuration Wizard (Zynq All Programmable SoC) or Base System Builder (MicroBlaze processor). Specify a basic software platform and add a software application to the system.
  • Lab 2: Application Development – Create a simple software application project with the provided source files for a software loop-based stopwatch. Verify proper BSP settings and linker script generation. Use API documentation for the GPIO peripheral to complete the software application. Verify proper operation of the stopwatch in hardware.
  • Lab 3: Software Interrupts (Zynq AP SoC or MicroBlaze Processor) – Replace a software timing loop with an interrupt-driven timer. Add the timer software and implement an interrupt handler for the timer. Download into hardware and test the application.
  • Lab 4: Debugging – Launch the SDK debug perspective and the previous lab’s stopwatch application for debugging, setting breakpoints, calculating interrupt latency, and stepping through the program’s operation.
  • Lab 5: SDK Profiling- Profile a program, interpret reports, and verify the performance with multiple calls.
  • Lab 6: Writing a Device Driver – Create a skeleton driver framework, add an LCD device driver to the BSP, and verify proper device driver operation via a download to hardware test.
  • Lab 7: File Systems – Implement a standalone software platform that incorporates the XilMFS memory file system. Develop an application that performs file-related tasks on external memory.
  • Linux Labs
  • Lab1: Running a Linux Application on the Zynq All Progammable SoC-Create a simple hello_world application using the SDK. The evaluation board will automatically boot from an SD card with the Linux Kernal installed as part of the boot image.
  • Lab2: Linux Application Development-Access the processing system general-purpose input/output (PSGPIO) that is connected to the evaluation board.
  • Lab3: Linux Debugging- Use the SDK software debugger. The application accessing the PS GPIO created in the "Linux Application Development" lab will be set up for debugging and observations will be made using the debugger's features.
  • Lab4: Linux SDK Profiling- Profile a program, interpret reports, and verify performance with multiple function calls.
  • PDF version of this page.

Enroll Now.

Scheduled Embedded Courses

Zynq UltraScale+MPSoC-Software Developer
June 27 - June 28: 09:00 am - 05:00 pm
This two-day course is structured to provide software designers with a catalog of OS implementation...

Embedded System Design
July 11 - July 12: 09:00 am - 05:00 pm
The course is designed to bring FPGA designers up to speed on developing embedded systems using the...

Zynq UltraScale+MPSoC-System Architect
August 01 - August 02: 09:00 am - 05:00 pm
This two-day online course is structured to provide system architects with an overview of the...

Zynq UltraScale+MPSoC-Software Developer
August 20 - August 21: 09:00 am - 05:00 pm
This two-day course is structured to provide software designers with a catalog of OS implementation...

Designing FPGAs Using the Vivado Design Suite 2
August 22 - August 23: 09:00 am - 05:00 pm
v2016.3 This course shows you how to build an effective FPGA design using synchronous design...

Alternative Dates and Locations

Faster Technology is able to deliver both private classes at client sites and also public classes at alternate locations and dates.  If there are no currently scheduled classes listed above or if none of the classes are convenient, please tell us what dates and locations will meet your needs.  No obligation necessary.