Linux 5.15 LTS release – Main Changes, Arm, RISC-V and MIPS architectures

Linux 5.15

Linus Torvalds released Linux 5.15, an LTS version, this past Sunday: It’s been calm, and I have no excuse to add an extra rc, so here we are, with v5.15 pushed out, and the merge window starting tomorrow. Which is going to be a bit inconvenient for me, since I also have some conference travel coming up. But it’s only a couple of days and I’ll have my laptop with me. Sometimes the release timing works out, and sometimes it doesn’t.. Anyway, the last week of 5.15 was mainly networking and gpu fixes, with some random sprinkling of other things (a few btrfs reverts, some kvm updates, minor other fixes here and there – a few architecture fixes, couple of tracing, small driver fixes etc). Full shortlog appended. This release may have started out with some -Werror pain, but it calmed down fairly quickly and on the whole 5.15 was […]

Raspberry Pi 4 achieves Vulkan 1.1 conformance, gets up to 60% GPU performance boost

Vulkan 1.1 Raspberry Pi 4

Khronos has just granted Vulkan 1.1 conformance to Raspberry Pi 4 SBC, and following the implementation of various optimizations and new features such as geometry shaders, the v3dv Mesa driver delivers up to 60% higher GPU performance in Unreal Engine 4. Iglia started Vulkan driver work for Raspberry Pi 4 almost two years ago, with the triangle demo showcased in February 2020, followed by Vulkan 1.0 conformance in November 2020, and now the driver is certified conformant to Vulkan 1.1. While many GPUs are conformant, the Raspberry Pi 4 is only joined by a couple of complete platforms including several NVIDIA Jetson modules (Vulkan 1.2),  and possibly some Intel and Google platforms shown as “Confidential” at this time. Alex Bate, Digital Content Manager for the Raspberry Pi Foundation, explains the driver changes for Vulkan 1.1 conformance have already been merged in the upstream v3dv Mesa driver, and should soon become […]

Smart Power 3 – A $45 smart power analysis tool for embedded systems developers

Smart Power 3

Hardkernel has launched a number of popular Arm SBC’s with the ODROID family over the years, but the Smart Power 3 is a different type of product, as the ESP32-based smart power meter can help embedded systems engineers optimize their hardware and software power consumption and/or check for spurious power peaks during boot up or shutdowns. In the past, we’ve reviewed relatively expansive tools like Qoitech Otii Arc or gone the DIY route,  but at $45, Hardkernel offers a power monitoring solution that’s both inexpensive and easy to use, albeit with fewer features than Qoitech’s device. Smart Power 3 specifications: MCU – ESP32 dual-core microcontroller via ESP32-WROOM-32E module Output Channels – 2x output channels (Max 50W + 50W) via 2x 4mm banana jacks each Output Voltage – 3V DC to input voltage – 1V Output Current – 3A max per channel Measurement Voltage, Current, Power Maximum sampling rate: 200Hz (5msec […]

Getting Started with the Yocto Linux BSP for Polarfire SoC FPGA Icicle Kit

Getting Started Guide PolarFire SoC FPGA Icicle Kit

Last month I received Microchip PolarFire SoC FPGA Icicle development kit that features PolarFire SoC FPGA with a Penta–core 64-bit RISC-V CPU subsystem and an FPGA with 254K LE, and booted it into the pre-installed Linux operating systems based on OpenEmbedded. Today, I’ll show how to get started with the Yocto BSP and run the EEMBC CoreMark benchmark, and I’ll check out the FPGA with Libero SoC Design Suite in a couple of weeks. Operating Systems supported by PolarFire SoC FPGA My initial idea was to focus this part of the review on Linux on RISC-V status, checking some system information, running some benchmarks (e.g. SBC-Bench), compiling the Linux kernel, and installing services like a LEMP stack (Linux, Nginx (pronounced Engine-X), MySQL, PHP) which could be used for WordPress hosting for instance. But then I looked at the operating systems supported with Microchip PolarFire SoC FPGA. There’s a Yocto Linux […]

Heatshrink – An ultra-lightweight compression library for embedded systems

Heatshrink

When I wrote about Bangle.js 2 JavaScript smartwatch yesterday, I noticed they used “Heatshrink compression” in ESPruino firmware.  I can’t remember ever reading about Heatshrink before, and indeed there are no results while searching on CNX Software. Heatshrink is an open-source data compression library designed for resources-constrained embedded systems that works with as little as 50 bytes of RAM. That’s impressive, so let’s investigate. The library is written in C language and was released about 8 years ago on Github with the following key features: Low memory usage – As low as 50 bytes with specific parameters, and usually under 300 bytes are needed. Incremental, bounded CPU use – Input data is processed in tiny bites Static or dynamic memory allocation Released under an ISC license which allows you to use the library freely, even in commercial products. The internal workings of the library are explained as follows: Heatshrink is […]

Customize GStreamer build with only the features needed for your application

Gstreamer customize

Thanks to a partnership between Collabora and Huawei is now possible to build Gstreamer with just the features required for a specific application, reducing the binary size for space-constrained embedded systems. Gstreamer is a very popular open-source multimedia framework used in a wide variety of projects and products, and with an impressive number of features spread over 30 libraries and more than 1600 elements in 230 plugins. This is not a problem on desktop PC and most smartphones, but the size of the binary may be too large for some systems, and until recently it was no easy way to customize GStreamer build for a specific application. But Collabora changed the code to allow gst-build to generate a minimal GStreamer build. The company built upon a new feature from GStreamer 1.18, released in September 2020, that makes it possible to build all of GStreamer into a single shared library named […]

ArduinoShrink library slashes code size, boosts speed of Arduino AVR firmware

ArduinoShrink

Arduino AVR Core is supposed to be already efficient, as the resulting code will run on AVR ATmega168 and ATmega328 MCUs with just 16 to 32KB of internal flash storage and 8 to 16 MHz clock speeds. But Nerd Ralph felt there was space for improvement as for instance the Blink sample takes 924 bytes of flash storage when compiled for the Arduino Uno.  So he developed ArduinoShrink library with the same functions as Arduino AVR Core but enabling smaller and faster firmware files. The result is pretty impressive as we can see from the screenshot above with the Blink sample now taking just 196 bytes or an almost 80% reduction in size. So how was this feat achieved exactly? Ralph explains it in details in a blog post, but in a nutshell, the following main two steps were taken: Writing modular, self-contained code instead of providing a single static […]

Android 12 developer preview released – What’s New?

Android 12 developer preview

Google releases a new version of Android every year, and the company is now usually releasing a developer preview in February to allow feedback and testing from app developers. So here we are with the Android 12 developer preview having just been released by Google with changes ranging from trust and safety to media transcoding to support for AVIF image format. Android 12 highlights: Performance Improved Binder IPC calls – Google engineers have had a look at latency and workload distribution, and made optimizations that reduce the median experience. This has yielded roughly a 2x performance increase on Binder calls overall, and up to a 47x improvement in refContentProvider(), 15x in releaseWakeLock(), and 7.9x in JobScheduler.schedule(). Foreground service optimizations – To ensure a better experience for users, foreground service starts from the background will be blocked for apps that are targeting the new platform. Android 12 will also delay the […]