CherryUSB – A lightweight USB device/host stack for embedded systems

CherryUSB USB stack for embedded systems

CherryUSB is a lightweight open-source USB device/host stack for embedded systems with one or more USB interfaces. The stack implements various class drivers such as CDC, HID, MSC, audio, video, and so on. It’s apparently part of Boufallo Lab SDK (e.g. for BL702 MCU), and has been ported and tested with WCH CH32V307 RISC-V MCU, STMicro STM32F4, and Nuvoton NUC442 Cortex-M4 microcontroller, as well as a two Arm Cortex-M3 microcontrollers I’ve never heard of: EastSoft ES32F3 and MindMotion MM32L3xx. CherryUSB device stack highlights: Support for USB2.0 full and high speed Endpoint irq callback USB classes support Composite Device Communication Device Class (CDC) Human Interface Device (HID) including “Custom HID” Mass Storage Class (MSC) USB VIDEO Class (UVC1.0,UVC1.5) USB AUDIO Class (UAC1.0, UAC2.0) Device Firmware Upgrade CLASS (DFU) MIDI CLASS (MIDI) Test and Measurement CLASS (TMC) Vendor class Remote NDIS (RNDIS) support Support WINUSB 1.0,WINUSB 2.0 with BOS (Binary Device Object […]

Linux 5.18 release – Main changes, Arm, RISC-V, and MIPS architectures

Linux 5.18 release arm risc-v mips

Linux 5.18 is out! Linus Torvalds has just announced the release on lkml: No unexpected nasty surprises this last week, so here we go with the 5.18 release right on schedule. That obviously means that the merge window for 5.19 will open tomorrow, and I already have a few pull requests pending. Thank you everybody. I’d still like people to run boring old plain 5.18 just to check, before we start with the excitement of all the new features for the merge window. The full shortlog for the last week is below, and nothing really odd stands out. The diffstat looks a bit funny – unusually we have parsic architecture patches being a big part of it due to some last-minute cache flushing fixes, but that is probably more indicative of everything else being pretty small. So outside of the parisc fixes, there’s random driver updates (mellanox mlx5 stands out, […]

PikaScript – A lightweight Python implementation that runs on STM32 and other low-end MCUs

PikaScript Python STM32 MCU

PikaScript is an ultra-lightweight Python engine that can run on microcontrollers with as little as 4KB of RAM and 32KB of Flash, while the more popular MicroPython requires at least 256kB of code space and 16kB of RAM. PikaScript was initially developed to run on STM32G030C8 and STM32F103C8 MCUs, meaning, for example, it works on the BluePill board, but it has also been ported to other platforms like WCH CH582 RISC-V MCU, WinnerMicro W806 C-Sky microcontroller, as well as other like Raspberry Pi RP2040, ESP32-C3, etc… but those are not quite as well supported with some features missing. PikaScript also permits the binding C function to a Python module through Pika Pre-compiler. PikaScript can run bare metal on the microcontroller, but also supports real-time operating systems such as RT-Thread and VSF (Versaloon Software Framework), as well as Linux. Just like MicroPython, it’s using a subset of Python 3, but I’d […]

Arduino releases secure bootloader based on MCUboot

Arduino MCUboot

Arduino has released a new bootloader based on MCUBoot to increase the range of features and firmware safety of Arduino products, with the first release targetting STM32H7 based Arduino Portenta and Nicla Vision boards from the Arduino Pro family. The release focuses on Arduino Mbed OS-based boards, but MCUboot is OS agnostic, and should also work with Zephyr, Nuttx, and Apache mynewt. The company has also made sure that the transition is easy and reused the existing OTA firmware upgrade process in place on Arduino boards. MCUboot Arduino highlights: Signed and encrypted updates – MCUboot has support for encrypting/decrypting images on-the-fly while upgrading. It will also check if the computed signature is matching the one embedded in the image before booting a sketch. Confirm or revert updates – After an update, the new Sketch can update the content of the flash at runtime to mark itself as OK. If everything […]

RAKwireless adds more Wisduo and Wisblock modules, launches WisToolBox configuration tool for IoT devices

RAK3172-SIP and RAK4630 Wisduo modules

RAKwireless have launched several Wisduo wireless modules, a dozen of Wisblock modules for IoT prototyping, updated WisDM, WisGateOS, and RUI3 software, and introduced WisToolBox mobile/desktop configuration tool for IoT devices as part of their spring launch 2022 even entitled “Empowering the Innovators: Making IoT your own”. Three new Wisduo modules RAK3172-SIP WisDuo SIP based on STM32WLE5 Wireless SoC with LoRa connectivity. Compared to the original RAK3172, it offers more IO pins, integrates a TCXO, and comes in a smaller size. The module supports LoRa P2P and complies with Class A, B, & C of LoRaWAN 1.0.3 specifications. Cost: $5.99. WisDuo RAK3272-SiP – That’s a breakout board for the RAK3172-SiP System-in-a-Package module for LoRaWAN and allows easy access to all pins via 2.54mm pitch headers. RAK4630 WisDuo Stamp Module – This module supports both LoRa/LoRaWAN and BLE 5.0, and comes with RUI V3 (RUI3) firmware. It can be deployed as an […]

RoenDi is a rotary encoder with a color display (Crowdfunding)

rotary encoder display

RoenDi is a rotary encoder with an integrated round color display. Based on an STM32L4 MCU, it can be programmed with the STM32CubeIDE or the Arduino IDE, and be used as an information display, an IoT controller, a locking mechanism, as well as in audio applications. RoenDi specifications: MCU – STMicro STM32L433 Arm Cortex-M4 microcontroller @ 80 MHz with 256 KB flash memory Storage – 128 Mbit SPI NOR flash Display – Round 1.28-inch TFT LCD display with 240 x 240  resolution, up to 262K colors Rotary Encoder – 15 pulses / 30 detents USB – Micro USB connector I/Os – Breakout pads for peripherals: I2C, GPIO, PWM, CAN; 5V tolerant Debugging – Adaptor board and cable for ST-LINK Misc – BOOT boot, RTC (built-in into STM32 MCU) Power Supply – 3V to 5V DC input, 3 V, 400 mA LDO Dimensions – 40 x 40 mm (PCB) Enclosure  – […]

Portenta X8 is the first Arm Linux Arduino board

Arduino Portenta X8

In simpler times, Raspberry Pi was making Arm Linux SBC’s, and Arduino MCU boards, but after Raspberry Pi got into the MCU business last year, it’s now time for Arduino to introduce its first Arm Linux board with the Arduino Portenta X8. The new board since comes with the same STM32H7 Cortex-M7/M4 microcontroller found in the Portenta H7 boards, but add a more powerful, Linux-capable NXP i.MX 8M Mini processor with four Cortex-A53 cores and a Cortex-M4 core, coupled with 2GB RAM and a 16GB eMMC flash. Arduino Portenta X8 specifications: SoC – NXP i.MX 8M Mini Arm Cortex-A53 quad-core up to 1.8 GHz,1x Cortex-M4 real-time core up to 400MHz. Microcontroller – STMicro STM32H747AII6 Cortex-M7 @ 480 MHz + M4 @ 240 MHz MCU  with 2MB dual-bank Flash memory, 1 MB RAM, Chrom-ART graphical hardware accelerator System Memory – 2GB LPDDR4 Storage – 16GB eMMC flash Connectivity Gigabit Ethernet interface […]

Pockit modular Linux computer gets a Raspberry Pi CM4 upgrade

Pockit modular computer

We first wrote about the Pockit modular Linux computer with hot-plugging magnetic blocks about a year ago. The system was based on a STM32+ESP32 mainboard with a socket for an optional Raspberry Pi Compute Module 3 and included magnets and electrical contacts to snap and hot-plug modules/blocks while the computer is running. The developer (Anil Reddy) has made good progress with the project and added the option to use a Raspberry Pi CM4 with Pockit (provided you can find one) to improve performance, for example for computer vision. Other changes include support for AI accelerators, an improved dashboard, home automation integration, and more. Pockit now supports over 80 feature BLOCKS ranging from a rotary encoder to a microSD card reader to various camera types, an HDMI block, AI accelerators, and so on. All of which can be magnetically snapped while the computer is running, and automatically detected in the dashboard. […]

RISC-V laptop, mini PC