I work building open-source cybersecurity solutions for wolfSSL. These solutions often involve embedded environments, which is why we attended Embedded World in Nuremberg this March. We showcased several embedded security demos running on development boards. It got me thinking: what if we made our own development board?
The people at wolfSSL, including me, are extremely passionate about what we do. The work often extends into our hobbies. As such, I have already made a port of wolfCrypt to the Commodore Amiga.
At Embedded World, I decided that if we were going to demonstrate our software, we should be doing it on hardware we designed ourselves.
One of the demos was one I had brought along, an STM32MP257-DK running a slide show and wolfCrypt’s benchmark.
Here you can see the development board inside a custom-designed 3D-printed case I made. The case locked in the SD card to prevent removal and blocked access to the buttons. I even used a combined printer-cutter machine to produce the label.
I wasn’t asked to do any of that — I just wanted something that looked good while protecting the buttons and SD card from tampering.
I had some general ideas for what I wanted the wolfSSL development board to be:
Before I had even left Embedded World, I had started designing the board. Two weeks later, I had the first revision 0.1 PCBs in my hands.
I built a few of them and sent a couple of them off to colleagues. Based on their feedback and some issues I found myself, I made a lot of changes. Most changes were to component positioning, but I also simplified the mikroBUS sockets down to shared SPI, I²C, and UART lines (with separate CS pins). This freed up enough IO for a UART on the USB-C connector which could be used to program the board or just for logging.
This brings us to final version, seen here running a PWM demo with the LEDs.
The board is made up of:
I then took an SVG of the PCB design and used Tinkercad to make a back plate for it.
Why? Well, partly because I thought it would look good — but also because I’d messed up the transistor wiring for the LEDs in revision 1.0. The backplate neatly hides that patchwork. And finally, it protected the components on the underside. Adding some non-slip pads to the bottom of that board meant that it sat on display stands nicely.
Of course, it wouldn’t be one of my PCBs without at least one easter egg.
Well, one of the primary functions is to run many of the wolfSSL projects. I chose the STM32U585 because it is very capable, 2MB of flash and 768K RAM is buckets of room. Also, this chips has some nice hardware crypto acceleration for AES and SHA-256 which we can use. Here is a wolfCrypt demo connected to the UART.
I then extended this to calculate the heap and stack usage of each algorithm, and finally added a Python script for the PC side which takes the live log lines and converts them into something more presentable.
The ML-KEM results look a little worse here for speed because I optimised the settings for memory usage rather than performance in this benchmark. There are also more algorithms enabled now.
I also have some TPM modules for the mikroBUS sockets to demo wolfTPM — including a custom-designed Click Board for the ST33K TPM.
If you want to find out more, check out the wolfSSL blog about it, which also contains links to the board files and example code. You can also visit us at upcoming expos, where we’ll likely have one on display. I’m manufacturing and distributing them to the wolfSSL engineering team now!
I often see on places such as Facebook that an Amiga owner will show a…
I have been a full time KDE Plasma user for quite a while now. Whilst…
The firmware in my RAMCHECK is very old, there were many updates since then. Unfortunately,…
Whilst repairing vintage machines, a lot of RAM passes by my benches. Most of it…
According to some, the ARK1000VL is considered the fastest VLB graphics card chip you can…
If, like me, you have a newer Intel hybrid CPU, with P-Cores and E-Cores, you…