I’m new to working with the ZCU106 (Zynq Ultrascale+ MPSoC) evaluation board and am trying to write a simple "Hello World" program (e.g., toggling a user LED) using Simulink Embedded Coder to generate code for the ARM processor (either Cortex-A53 or R5).
I have the following questions:
Can I use Simulink Embedded Coder alone to generate the necessary code for the ARM processor or do I need to install Vitis to achieve this?
In order to interact (from simulink environment) with peripherals like GPIOs on the ZCU106, do I need to install Vitis Model Composer, or are there other tools that can help with this task?
I’m primarily focused on embedded software (not FPGA programming) and would prefer to avoid FPGA-specific tools unless absolutely necessary.
-
\$\begingroup\$ Are you planning to run your application bare metal or do you want to use an OS? \$\endgroup\$nanash1– nanash12025年05月13日 08:54:54 +00:00Commented May 13 at 8:54
-
\$\begingroup\$ Thanks for your reply. At this stage, we're still in the exploration phase with the ZCU106 board, so we haven’t made a final decision yet about whether we’ll run the application bare-metal or with an OS. I’ve started experimenting with booting PetaLinux from an SD card just to get familiar with the board, so it might end up being OS-based—but we’re not 100% certain yet. Appreciate any guidance. \$\endgroup\$Niccolo.Bellaccini– Niccolo.Bellaccini2025年05月13日 09:15:37 +00:00Commented May 13 at 9:15
-
\$\begingroup\$ I don't really know the ZCU106, so I won't write an answer, but imo using a OS would probably be easier. You can then just write a linux application that interacts with the IOs from user space, see here. \$\endgroup\$nanash1– nanash12025年05月13日 09:33:14 +00:00Commented May 13 at 9:33
-
\$\begingroup\$ Thanks for the input. Just to clarify, my primary goal here is to use Simulink Embedded Coder to generate code for the ARM processor on the ZCU106 board (Cortex-A53 or R5) without relying on Vitis Model Composer. I’m trying to determine whether Simulink can handle interactions with peripherals like GPIOs on its own, or if Vitis Model Composer is mandatory as part of the model-based design workflow. While I understand cross-compiling for the target is possible, that’s not my focus at this stage. \$\endgroup\$Niccolo.Bellaccini– Niccolo.Bellaccini2025年05月13日 10:05:39 +00:00Commented May 13 at 10:05
1 Answer 1
In general1, yes - that is, you don't need Vitis.
1 I don't know anything about Simulink Embedded Coder, or what complexity integrating that adds to the picture. But in general it is possible to build baremetal and Linux firmware for the platform without Vitis.
First, you should browse through UG1137 - Zynq UltraScale+ MPSoC Software Developer Guide to understand the platform architecture and what you need to build for it. What it boils down to is that you need:
A suitable toolchain (compilers)
An FSBL which you can build from Xilinx's embeddedsw Git repository
If you're going baremetal, you'll want the peripheral drivers in the same repository under
XilinxProcessorIPLib/drivers
(you don't actually, strictly speaking, need these: you could write your own drivers, but there's no good reason to).If you're going for Linux, you could check out Petalinux for a canned Linux platform from Xilinx. Or, there are Yocto layers available. Both of these reference the Xilinx kernel fork which includes all the peripheral drivers you need for the platform.
There are a lot of moving pieces. How easy it is to integrate all of this will depend heavily on your experience level. If you've read the links above and feel confident, it is possible. If you feel lost and overwhelmed, you might reconsider how much Vitis simplifies the workflow for you. And if you get stuck and need support, you'll often face the question "why don't you just use Vitis?"
-
\$\begingroup\$ This is great, especially the software development guide, which I hadn’t found before and seems really useful. I agree with you on everything. While I'm not a beginner in embedded development, this is my first time working with this board, so there's a lot I don’t know. Regarding Simulink, I just wanted to ask if it’s possible to use a model-based approach (with MathWorks tools) for development on this board (and from what I know it should be), but I'm still a bit confused about how it works. \$\endgroup\$Niccolo.Bellaccini– Niccolo.Bellaccini2025年05月14日 06:40:16 +00:00Commented May 14 at 6:40
Explore related questions
See similar questions with these tags.