What would make a better first post about embedded software than a hello world project on a brand-new development board. It’s the krtkl snickerdoodle I received with much excitement last week. In these next series of articles, I’m going to explore the capabilities of the snickerdoodle as a development platform for a high-performance real-time operating system. In this first article, I’ll run µC/OS, a commercial RTOS, on the snickerdoodle.

Before going any further, I think it’s important to mention that the snickerdoodle, with various optional base boards and accessories, can still be pre-ordered from Crowd Supply. Expected shipping date is around August.

snickerdoodle in a connectors down configuration
snickerdoodle in a connectors-down configuration (Click for full size)

The snickerdoodle

The snickerdoodle — at least on the surface — is a traditional SoM, packing a Zynq 7010 SoC. Not only is it very compact and affordable (72$ USD at the time of writing), it comes standard with quite a few features. First, the board comes in two major versions, each featuring 1 GiB of LPDDR2. The first is equipped with the Zynq 7010 667Mhz dual core ARM SoC with a 17.3k LUTs FPGA. The second one dubbed the snickerdoodle black is about twice as expensive but uses the Zynq 7020 866Mhz SoC with a bigger 53.2k LUTs FPGA.

In addition, the snickerdoodle features a Wi-Fi/Bluetooth radio, microSD card slot, on-board NOR flash, USB to serial adapter, as well as an STM32 Cortex-M MCU used as a platform manager — not to mention up to 179 configurable I/Os. It includes all of the above without any shield or base board of any kind.

µC/OS on the snickerdoodle

Micrium’s µC/OS can easily be used thanks to the µC/OS BSP for the Xilinx SDK, which is available for download from the Micrium website. The download is free but registration is required. An excellent video tutorial on installing and using the BSP is available as well as a text tutorial.

Trying out the snickerdoodle

I’ve performed the usual steps to create a hardware definition for the Xilinx SDK using Vivado 2016.2. Something of note: starting with 2016.2, Vivado does not require a licence for the free WebPack edition. This greatly simplifies installation when you just want to get going with a development board like the snickerdoodle.

Since Vivado does not know about the board, it’s definition files must be installed manually. The board files for the snickerdoodle and snickerdoodle black are available on the krtkl github.

For simplicity I wanted to use the U-Boot bootloader from the Linux SD Card images, which can be downloaded from the krtkl website. This is mainly because, without any base board, there is no easy JTAG access. I noticed, however, that the UART reference clock is configured differently between U-Boot and the default FSBL. If you intend to use U-Boot to boot a bare-metal or RTOS, I recommend changing the clock right now to prevent issues in the future. To do so, navigate to the advanced clock configuration of the Zynq block from the Vivado IP integrator, and change the UART1 ref clock from 50Mhz to 100Mhz to match the U-Boot configuration.

IP Integrator clock override configuration
IP Integrator clock override configuration (Click for full size)

Having exported the hardware definition to the Xilinx SDK, installed Micrium’s BSP, and created the µC/OS-III demo application, I now am ready to see if it’ll work out of the box. For the sake of the demonstration, the basic demo was modified to make it a bit more appropriate for the occasion.

To simplify things, I copied the elf file to the Linux SD card, and used bootelf to start the application. And indeed, the snickerdoodle said hello.

Hello World!
Hello World!

Questions or comments?

Do not hesitate to contact us at blog@jblopen.com. Your questions, comments and, suggestions are appreciated.

2 thoughts on “snickerdoodle says Hello World!

    1. Other than the price difference, it really depends on the needed feature and carrier card preferences. The major differences that I would point out are the wi-fi/bluetooth combo available on the Snickerdoodle which is one of their big selling point. The picoZed, on the other hand, has an on-board eMMC which may be interesting for many developers, then again the snicker has an sd card cage on the SoM.

      Finally, it depends on the needed features from the carrier cards. The Pico carrier card is obviously centred on PMODs and FMC connectors, while the Snickerdoodle is more around bare IO and basic SBCs at a much lower cost.

      Jonathan Blanchard

Leave a Reply

Your email address will not be published. Required fields are marked *