Embedded Systems Software Design

Core modules from this course are available as part of our embedded boot camp: Embedded Systems Hardware Design Boot Camp for the Zynq UltraScale+ MPSoC

This course is available as private training only.

COURSE CODE: EMBD-SW

This course introduces the concepts, tools, and techniques required for software design and development for the Zynq System on a Chip (SoC), Zynq UltraScale+ MPSoC, and the Versal adaptive SoC architectures using the Vitis unified software platform.

The focus is on:

  • Reviewing the basics of Vitis tool use
  • Customizing board support packages (BSPs) for resource access and management of the AMD Xilinx Standalone library
  • Utilizing device drivers effectively
  • Developing software applications for the available processors
  • Debugging and integrating user applications
  • Employing best practices to enable good design decisions

See Course Outline

3-Day Instructor-led CoursePrice USDTraining Credits
Hosted Online - $600/day$180018
In-Person Public Registration - $600/day$180018
Printed Course Book (A PDF book is included in the course fee)
Cannot be purchased without registration.
$1001
Private TrainingLearn MoreLearn More
CoachingLearn MoreLearn More

Scheduled Classes

No Scheduled Sessions - Contact Us to ask about setting one up!

Training Duration:

3 Days

They had answers for just about every question

Erich and Nathaniel were great, they had answers for just about every question/issue and linked relevant Xilinx/Vivado user manuals for further explanation/documentation.

– Student from Vivado Boot Camp for the FPGA User Phase 2

College course fit into 3 days

The instructor certainly knew the material and could explain the concepts as well as answer questions. Even the instructor said that this is a college course fit into 3 days.

Student from Designing with VDHL

I had a wonderful instructor

I had a wonderful instructor. His pacing throughout the course was good and made sure to allow for student questions and have conversations about related topics and experiences. I think the atmosphere was great for everyone to both learn and to share experiences, tips, and tricks about using the tool and the features discussed throughout the course.

Student from Vivado Boot Camp for the FPGA User Phase 3

Thanks for a great class!

I have attended a bunch of training courses over the years. This one was definitely one of the best I have attended. Erich did a great job, and the material is very well done. Thanks for a great class!

– Student from Vivado Boot Camp for the FPGA User Phase 1

Impressed with the effort

Glenn is a good instructor – I’m impressed with the effort he put into the presentation.
I hope I didn’t annoy him with too many questions.

– Student from Designing with Versal AI Engine 3: Kernel Programming and Optimization

My instructor took time

My instructor took time during some of the breaks to look up and distribute information about questions that he didn’t happen to know direct answers to, and I always appreciate when instructors take the time to do that.

Student from Vivado Boot Camp for the FPGA User Phase 3

Knowledgeable instructor

Elie was a knowledgeable instructor, and did a really good job of making sure students were comfortable interrupting for questions. He answered questions well and communicated very clearly.

– Student from Designing with VHDL

Labs were great

The labs were great and really reinforced the topics.

– Student from Designing with Versal AI Engine 1: Architecture and Design Flow

This one was definitely one of the best

I have attended a bunch of training courses over the years. This one was definitely one of the best I have attended. Erich did a great job, and the material is very well done. Thanks for a great class!

– Student from Vivado Boot Camp for the FPGA User Phase 1

A lot of insights beyond the course

Glenn was a great instructor and provided us with a lot of insights beyond the course material

– Student from Embedded Design with PetaLinux Tools

Can quickly and concisely answer technical questions

I really like the expertise of the presenters and that they can quickly and concisely answer technical questions, Tom did great!

– Student from Vivado Boot Camp for the FPGA User Phase 3

All in all a great experience

Tom was a great instructor, very knowledgeable and polite throughout the course. All in all a great experience.

– Student from Vivado Boot Camp for the FPGA User Phase 2

One of the best experiences for AMD Xilinx training that I’ve had

Bill was a great instructor and answered all of our questions. He went above and beyond to make this course a great experience. If/When I use BLT for Xilinx training in the future I will be on the lookout to see if he’s leading the lecture. One of the best experiences for AMD Xilinx training that I’ve had.

– Student from Designing with VHDL

The instructor was excellent

The instructor for this class, Glenn, was excellent. He presented the material with great examples and encouraged students to ask questions at any point in the course. Whenever there was a question he could not answer, he mentioned that he would bring it to his colleagues for answers, and after we came back from lunch, he had the answer.

– Student from Embedded Design with PetaLinux Tools

Expert tidbits

I liked the expert tidbits my instructor threw in to keep in mind when working on projects in the future regarding best practices. I also appreciated the questions the more experienced students asked, and how he was knowledgeable in order to address them.

Student from Designing with VHDL

My instructor was very professional

My instructor was very professional and answered all of my questions thoroughly. I enjoyed hearing about his professional experience with certain aspects of the course / labs as we went through the course.

– Student from Vivado Boot Camp for the FPGA User Phase 1

Elie was an exceptional instructor

Elie was an exceptional instructor, and I would welcome the opportunity to take another class from him and BLT in the future.

– Student from Designing with Verilog

Erich was engaging

Erich was engaging and had good pacing during the course. Although the course was all day for 3 days I didn’t feel exhausted at the end of sessions.

– Student from Vivado Boot Camp for the FPGA User Phase 1

I gained a lot of information

The class was pretty great and I gained a lot of information from it that I will certainly be applying at my job going forward!!

– Student from Vivado Boot Camp for the FPGA User Phase 1

My instructor was very capable

My instructor was very capable of answering any of my questions even when they were an extension of the material being presented. If he wasn’t sure of an answer, he made sure to verify his thoughts before answering my question

– Student from Vivado Boot Camp for the FPGA User Phase 1

I would endorse him to teach a friend

Cole was a fantastic instructor and was very proactive in answering any questions that came up. I would endorse him to teach if a friend had to learn from this course.

– Student from Designing with Verilog

Be the first to know. Sign up for our newsletter.

Who should attend:

Software design engineers interested in system design and implementation and software application development and debugging using the AMD Xilinx Standalone library.

Software Tools

  • Vivado Design Suite
  • Vitis unified software platform

Hardware

  • Architectures: Zynq-7000 SoC (Cortex-A9 processor) and Zynq UltraScale+ MPSoC (Cortex-A53 and Cortex-R5 processor)
  • Demo board: Zynq UltraScale+ MPSoC ZCU104 or Versal ACAP VCK190 board*

* This course focuses on the Zynq-7000 SoC and the Zynq UltraScale+ MPSoC architectures.

Skills Gained

After completing this comprehensive training, you will know how to:

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

Course Outline

Day 1Day 2Day 3
Overview of Embedded Software Development
Overview of the process for building a user application. {Lecture}

Embedded UltraFast Design Methodology
Outlines the different elements that comprise the Embedded Design Methodology. {Lecture, Demo}

Zynq-7000 SoC Architecture Overview
Overview of the Zynq-7000 SoC architecture. {Lecture, Demo, Lab}

Zynq UltraScale+ MPSoC Architecture Overview
Overview of the Zynq UltraScale+ MPSoC architecture. {Lecture, Demo, Lab}

Zynq UltraScale+ MPSoC Software Environments
Describes the software development environments for Zynq UltraScale+ MPSoCs. {Lecture}

Driving the Vitis Software Development Tool
Introduces the basic behaviors required to drive the Vitis tool to generate a debuggable C/C++ application. {Lecture, Demo, Lab}

System Debugger
Describes the basics of actually running a debugger and illustrates the most commonly used debugging commands. {Lecture, Lab}
Standalone Software Platform Development and Coding Support
Covers the various software components, or layers, supplied by AMD that aid in the creation of low-level software and includes a discussion on drivers, domains, operating systems, and libraries. Also covers the basic services (libraries) available when coding in the Standalone environment. {Lecture, Demo, Lab}

FAT File System for Standalone
Introduces the FAT file system (FFS) from the Standalone/Bare-metal library. The FFS provides drivers and utilities for effectively converting a region of memory into a file system. {Lecture, Lab}

Using Linker Scripts
Overview of the purpose and typical use of a linker script. {Lecture, Lab}

Introduction to Interrupts
Introduces the concept of interrupts, basic terminology, and generic implementation. {Lecture}

Software Interrupts: Writing
Describes many of the considerations that a software coder must take into account when supporting interrupts. {Lecture, Lab}
Operating Systems: Introduction and Concepts
Introduces the concept of the operating system and provides a simplified view into the generic way that operating systems work. {Lecture}

Linux: A High-Level Introduction
Introduces the Linux operating system, a brief history, and how to use it. {Lecture}

Linux Software Application Development Overview
Highlights important parts of the underlying Linux system as it pertains to applications. {Lecture, Demo, Lab}

Driving the PetaLinux Tool
Introduces the basic concepts required to build an application using the PetaLinux tool. {Lab}

Building a Linux Application in the Vitis IDE
Provides an introduction to using the Vitis IDE tool for Linux software development. {Lecture, Demo}

Booting Overview
Describes the main points to how booting a processor is handled for Zynq SoC devices and MicroBlaze processors. {Lecture, Lab}

Software Profiling Overview
Introduces the purpose and techniques for profiling a user application. {Lecture, Demo, Lab}

Understanding Device Drivers
Explains the concept of a device driver and how it is used by embedded systems. {Lecture, Demo}

Custom Device Drivers
Describes how to successfully write a custom device driver. {Lecture, Lab}

Debugging Using Cross-Triggering
Illustrates how hardware-software cross-triggering techniques can uncover issues. {Lecture, Lab}

Please note: The instructor may change the content order to provide a better learning experience.

Prerequisites:

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

RELATED COURSES:

Updated 12-18-2023
©2023 Advanced Micro Devices, Inc. Xilinx, Inc. is now part of AMD. Xilinx, the Xilinx logo, AMD, the AMD Arrow logo, Alveo, Artix, Kintex, Kria, Spartan, Versal, Vitis, Virtex, Vivado, Zynq, and other designated brands included herein are trademarks of Advanced Micro Devices, Inc.