Vivado / SDK Snickerdoodle

Hello,
I have spent a little too much time trying to get a Hello World application to work. I have followed several video and re-read manuals to see what can be wrong. Using Snickerdoodle Prime Board & Pysmasher 4.1. I have worked with other ZYNQ boards in the past, both spartan and Zynq and can usually work through implementation of complex designs using Vivado and XSDK. However, in this case, despite a large amount of effort, I am not able to get “Hello World” working with this board. Can the 4.1 board have issue?
I am able to format SD Card with OS, get OS booted, and log in or transfer files using filezilla. That is about it though. No FPGA .bit functionality. No programming of ARM processor with C application. No running .elf files (or files with .elf removed as described in krtkl video). I have 3 projects which I am building in January and not sure how I will be able to achieve.
I would appreciate some feedback, some guidance. I am actually seeing several other posts about similar issues programming Arm with C application so I wonder if this is systemic or related to a certain rev. Below is some (short) list of steps I have taken.
Basic Issue 1: Programming FPGA with .bit file
•Vivado shows FPGA is programmed, but there is no activity on FPGA pins.
•HDMI Project from github not working with pysmasher 4.1 and Snickerdoodle Prime boards (using existing .bit file)
•Tested blinky pixel (RAVVEN) Vivado project. There are no pins “blinking” as measured with oscilloscope
•Tested programming of FPGA with Hardware Manager, SDK programming of FPGA, and even creating bit.bin file for working with OS. No dice.
•Tried different boot options (upgraded micro-controller firmware). SD Card, JTAG, even QSPI using boot select

Basic Issue 2: Programming C application
•Program FPGA first via Hardware manager or XSDK. (Software says programming is complete, but I don’t see “blinking” on configured pins
•Created simple “hello world” C-application following videos.
•Programming Zynq via SDK kit: Error message received “cannot find ARM device on the board for connection local (JTAG connected)
•.elf file: copied file to Linux OS via wireless connection. OS cannot execute .elf file
•Tried different boot options (upgraded micro-controller firmware). SD Card, JTAG, even QSPI using boot select
•Tried 2018, 2019, 2020 Vivado & SDK
https://www.elektormagazine.com/labs/snickerdoodles-with-zynq
https://www.youtube.com/watch?v=RRjtK8BYADk
https://cospandesign.github.io/linux,snickerdoodle,kernel,driver,uboot/2017/12/27/snickerdoodle-up-and-running.html

I’ve not tried the pismasher so I can’t help you there. And it does sound like you’ve tried a lot of alternatives to try to get this to work.

With prime board + headers or with prime + breakybreaky, I have been able to make the RavvenLabs tutorials work. Have you tried with a different prime board? Or different pismasher? If you’re in the NYC area, I can probably lend you for a few days a breakybreaky and prime board that worked for me.

 

Just wanted to follow up here (after responding via email). See below for a link to a good reference project that will quickly get you up and running with the snickerdoodle black + Vitis workflow. The project creation, etc. is all scripted so it should “just work”…

https://github.com/krtkl/snickerdoodle-examples/tree/snickerdoodle-black-vitis-hello-world/snickerdoodle-black/snickerdoodle-black-vitis-hello-world

We’ll put a more formal writeup/readme together, but here’s the play-by-play:

You can clone and then checkout the branch we’ve put the ‘hello world’ example in by executing the following commands:

$ git clone https://github.com/krtkl/snickerdoodle-examples.git

$ cd snickerdoodle-examples

$ git checkout snickerdoodle-black-vitis-hello-world

$ cd ./snickerdoodle-black/snickerdoodle-black-vitis-hello-world

You then can build the bit file by running this command:

$ ./build_project.sh ( or on Windows, run build_project.bat ).

Once complete, you can launch Vitis with the following command:

$ ./launch_vitis.sh ( or on Windows, run launch_vitis.bat )

There is already a debug configuration defined, all you need to do is connect your snickerdoodle black via microUSB and access the terminal (115200 8:N:1), as well as have a JTAG connection setup (either on your own custom hardware, or a krtkl baseboard).

You can launch the debug configuration by going to Debug Icon (looks like a green bug with legs…), and hitting the drop down. There should be item called ‘Debugger_helloworld-Default’ in the list. Click that and Vitis will program the FPGA and launch the application.

You should see some text on the terminal, as well as a lot of dots. Each dot represents a 0 -> 1 or 1 -> 0 transition on pin JC1.5.

Let me know if you have any questions or issues.

-RC

For the sake of resolution, using the above project and instruction was successful…eventually. It turns out an older JTAG module was being used that didn’t support Xilinx FPGA SoCs (e.g. Zynq). After upgrading to a newer module, everything went smoothly. For future reference, the JTAG options we’ve had the most luck with are the HS3 and the Platform Cable USB II. I’m sure the SmartLynq and other options will work too, but that’s probably overkill unless you’re also using it with some higher-end parts.

-Ryan