element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Path to Programmable
  • Challenges & Projects
  • Design Challenges
  • Path to Programmable
  • More
  • Cancel
Path to Programmable
Blog Path to Programmable Blog 8 - Developing Zynq Software
  • Blog
  • Forum
  • Documents
  • Polls
  • Files
  • Events
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
  • Share
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: avnrdf
  • Date Created: 11 Dec 2018 5:22 PM Date Created
  • Views 925 views
  • Likes 5 likes
  • Comments 0 comments
  • soc
  • path to programmable
  • zynq
  • xilinx
  • fpga
  • avnet minized
  • zynq-7000
  • xilinx zynq
  • programmable logic
  • minized
Related
Recommended

Path to Programmable Blog 8 - Developing Zynq Software

avnrdf
avnrdf
11 Dec 2018

In Path to Programmable Blog 6 - Hardware Debugging & some more TCL I finished Module 1 of Path the Programmable - Developing Zynq Hardware. Module 1 was centered around designing peripherals in the PL and interfacing them with the PS using Vivado, and now we move on to the software that will run on the PS.

 

Module 2 - Developing Zynq Software

image

 

Chapter 1 Video - Zynq System Architecture Basics

 

The introductory video went over the overall flow of software development for Zynq. As shown, software development starts after the hardware platform file that is exported from Vivado is imported into Xilinx SDK. In Vivado, the hardware designer creates peripherals in the PL that are connected to the PS, and accessible as memory mapped locations. The software designer uses the peripherals via registers - just like microcontroller peripherals are controlled using registers mapped to memory locations.

 

imageimage

 

Lab 1 - Explore a Zynq Hardware Platform

 

This lab had a look at the hardware wrapper file that is exported from Vivado (system_wrapper.hdf). This is a compressed file that contains all the data required to start software development, and since it is the only file that a software developer needs, hardware developers need to transfer this only this file over to software developers. The .hdf file contains these files:

image

Chapter 2 Video - Xilinx SDK Overview

 

The chapter 2 video introduced Xilinx SDK features: GCC toolchain, C/C++ code editor, BSP generator, debugger, hardware/software downloader, cross-probing with the Vivado Analyzer in hardware, multiprocessor debugging (for the higher end Zynq parts with multiple ARM cores), boot image creation, flash programming and so on. Xilinx SDK is based on Eclipse, so the next couple of slides were a quick review of Eclipse perspectives, workspaces etc. Additionally, Xilinx includes a couple of plugins for programming the FPGA, Flash, generating a BSP etc.

 

Lab 2 - Importing the Hardware Platform into SDK

 

Instructions for this lab were to open Xilinx SDK, create a workspace and create a new project using the provided .hdf (hardware wrapper exported from Vivado). The .hdf file is the file we created at the end of Module 1 i.e. Developing Zynq Hardware, but a .hdf file was provided along with this lab for users who hadn't completed the 'hardware' course.

Opening the .hdf file reveals the entire address map, and the IP blocks in the design. For example, the AXI_GPIO0 block that was implemented in the PL, and connected to the PS over AXI has these registers:

 

 

imageimage

 

Chapter 3 Video - Standalone Board Support Package

 

Xilinx SDK can generate a BSP (Board Support Package) based on the info it receives in the hardware wrapper. For example, if a UART peripheral is enabled in Vivado, the BSP generator will detect this and add Xilinx header files for the specific peripheral. The drivers include functions that users can invoke to interact with the hardware, just like HALs provided by microcontroller vendors.

  imageimage

 

Lab 3 - Bare Metal Board Support Package

 

This lab included instructions for generating a BSP, which was very similar to what we did in Module 1. The wizard that generates the BSP is easy to use, and includes a couple of settings - like which UART instance to use, where to direct stdin & stdout etc.

 

imageimage

The required files are included, along with documentation. The documentation for the GPIO was in the form of HTML files, and SDK also allows you to import examples without much of a hassle.

imageimage

The rest of the lab involved going through the generated files, with a brief explanation of what each of them did.

 

Progress:

 

image Chapter 1 Video - Zynq System Architecture Basics

image Lab 1 - Explore a Zynq Hardware Platform

image Chapter 2 Video - Xilinx SDK Overview

image Lab 2 - Importing the Hardware Platform into SDK

image Chapter 3 Video - Standalone Board Support Package

image Lab 3 - Bare Metal Board Support Package

  • Sign in to reply
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube