top of page

MicroZed Chronicles: KR260 ROS and MicroRoS on MicroBlaze

Writer's picture: Adam TaylorAdam Taylor

A few weeks ago I was on a call with a one of the industrial architects at AMD Tomas Thoresen who mentioned he was working on a series of Hackster projects which outlines how the KR260 could be used for robotic applications.

 

While predominantly focused on Robotics and the KR260 I think these projects contain great information and step by step details when working with new PL designs and Ubuntu images that a wide range of developers will find interesting. I thought I would try and summarise the projects into a blog and hopefully encourage readers to go and explore the projects.

 

What made the projects interesting to me was that over several projects Tomas has created a system which not only uses ROS2 running on the A53 cores but also leverages MicroBlazes within the programmable which perform sensor interfacing. These MicroBlazes also run MicroROS which enables them to communicate easily and effectively with the A53 processors running ROS2.  

 

As such these project covers a wide range of development on Ubuntu based SoC solutions from creating new Vitis platforms to generate the hardware, updating device trees, modifying the FIT image and of course working with remote processors within the PL.

 

All of the projects are implemented is implemented on a KR260 board as such Tomas has implemented four MicroBlazes one each for the Pmod interfaces available on the KR260.

 

His overall architecture of the solution can be seen below, using this architecture the MicroBlazes are able to connect to sensors, actuators and drives which use I2C, SPI, UART, and GPIO. This can be configured at run time thanks to the use of a IO Switch which is a custom IP component.

 

The IO Switch was originally developed as IP to support MicroBlazes within the PYNQ framework. It provides the ability to change the IO configuration between UART, I2C, SPI, and GPIO with the correct pinning for that standard on the Pmod connector.


One of the nice things about the first tutorial available here is that as the KR260 is running Ubuntu. The tutorial walks you through how to add in new custom PL to the KR260 modify the device tree as necessary and reconfigure the system such at when next booted the new device tree is used. No matter what project you have in mind this can be very useful if you are working with one of the Ubuntu distributions which are available for a range of MPSoC Boards.

 

To communicate between the A53’s which are running Ubuntu and the MicroBlazes remoteproc is used to perform life cycle management of the software running on the four MicroBlazes.

 

Once the baseline hardware and Ubuntu configuration is achieved within the first project the second project expands on this platform. Within the second project Tomas expands the software running on the MicroBlaze Processors to use MicroRos. This enables two of the MicroBlazes which are connected to the PL ethernet TEMAC to be able send data to a micro ros agent running over the network. This MicroRoS agent could be running on anything connected to the same agent for example a x86 or the Kria.

 

I think Tomas plans more projects in this series which will expand the capabilities of the base project adding more complex sensors actuators and visualisation, I will be interested to see where he takes this.

 

Both projects can be found here

 

 


Workshops and Webinars


If you enjoyed the blog why not take a look at the free webinars, workshops and training courses we have created over the years. Highlights include



Boards


Get an Adiuvo development board



Embedded System Book   


Do you want to know more about designing embedded systems from scratch? Check out our book on creating embedded systems. This book will walk you through all the stages of requirements, architecture, component selection, schematics, layout, and FPGA / software design. We designed and manufactured the board at the heart of the book! The schematics and layout are available in Altium here   Learn more about the board (see previous blogs on Bring up, DDR validation, USB, Sensors) and view the schematics here.


Comments


bottom of page