PicoLibC is a Lightweight C library for Embedded Systems

PicolibC

Well-known developer,  Keith Packard has recently announced the launch of “picolibc” through his blog.  Picolibc is a C Library for embedded systems which  is suitable for small micro-controllers, and this standard C library API’s allows to run even in low memory (RAM) devices. This is an upgraded version of “newlib-nano” with few interesting changes which includes replacement of “stdio” lib with ATMEL-specific printf code adopted from avrlibc. As part of this library, Keith also launched picocrt,  which is responsible for initializing memory and invoking various constructors before calling its own C program, the main function. Features picolibc is a revised version of newlibc, without full-fledged stdio lib and uses lightweight stdio lib from avrlibc, which is more suitable to low memory embedded devices. Meson build-system eases the build process of picolibc source tree for various target platform and hardware. Updated the math test suite to use Glibc as a reference The library is BSD licensed, and non-BSD components were removed …

Support CNX Software – Donate via PayPal or become a Patron on Patreon

PiCAN3 Board for the Raspberry Pi 4 adds CAN Capabilities plus a Real-Time Clock

PiCAN3 CAN Bus Board for Raspberry Pi 4 with 3A SMPS And RTC

Copperhill Technologies has recently announced the release of its PiCAN3 CAN-Bus Board for the Raspberry Pi 4. The PiCAN3 adds Controller Area Network capabilities plus a real-time clock to the new Raspberry Pi SBC. The Controller Area Network (CAN Bus) is a robust and common industrial communication bus used mostly in the automotive industry. CAN supports long travel distance, medium communication speed, and quite reliable. One of the most significant advantage with CAN-BUS is that it connects any number of ECUs (or microcontrollers) in your car through the two-wire bus, CAN High and CAN Low, reducing the weight of wires that could be gained by using point-to-point communication between ECUs. CAN bus is one of five protocols used in the on-board diagnostics (c)-II vehicle diagnostics standard. Although it is popular in the automotive industry, the Raspberry Pi doesn’t provide an off the shelf support for working with CAN-BUS. Users interested in trying out CAN will have to result to using HATs like the …

Support CNX Software – Donate via PayPal or become a Patron on Patreon

Linaro Connect San Diego 2019 Schedule – IoT, AI, Optimizations, Compilers and More

Linaro Connect San Diego 2019

Linaro has recently released the full schedule of Linaro Connect San Diego 2019 that will take place on  September 23-27. Even if you can’t attend, it’s always interested to check out the schedule to find out what interesting work is done on Arm Linux, Zephyr OS, and so on. So I’ve created my own virtual schedule with some of the most relevant and interesting sessions of the five-day event. Monday, September 23 14:00 – 14:25 – SAN19-101 Thermal Governors: How to pick the right one by Keerthy Jagadeesh, Software Engineer, Texas Instruments With higher Gigahertz and multiple cores packed in a SoC the need for thermal management for Arm based SoCs gets more and more critical. Thermal governors that define the policy for thermal management play a pivotal role in ensuring thermal safety of the device. Choosing the right one ensures the device performs optimally with in the thermal budget. In this presentation Keerthy Jagadeesh, co-maintainer of TI BANDGAP AND …

Support CNX Software – Donate via PayPal or become a Patron on Patreon

Group Theoretic Cryptography (GTC) Offers an Alternative to TLS’s ECC/RSA Security for Microcontrollers

SecureRF Group Theoretic Cryptography

The Transport Layer Security (TLS), sometimes incorrectly referred as its predecessor: Secure Sockets Layer (SSL), helps securing messages over the network using symmetric cryptography, and optionally public-key cryptography (aka asymmetric cryptography). This works well in servers and computers, but with the Internet of Things, even low-power sensor nodes would benefit from secure communication. The trouble is that today’s commonly-implemented RSA- and Diffie-Hellman-type public-key protocols have a memory footprint that will not fit on resource-constrained microcontrollers systems, e.g. Arm Cortex-M0 based ones, and power consumption may also be an issue since many of those are battery-powered. I’m writing about this topic today, as there may be a better alternative for resource-constrained microcontrollers which I noticed in Arm Techcon 2019 schedule, with SecureRF Corporation’s session entitled “When it comes to connect IoT devices, how small is small?” that will present an alternative to TLS’s ECC and RSA based security that relies on in “Group Theoretic Cryptography (GTC)” designed specifically for low resource …

Support CNX Software – Donate via PayPal or become a Patron on Patreon

Semtech Releases Open Source Software for LoRa Gateways & Devices

Lora Basic Station

Semtech has released open source software for LoRa-based gateways including LoRa Basic Station packet forwarder for Linux-based gateways, LoRa Basic MAC implementation of the LoRa Alliance’s LoRaWAN specification, and LoRa Basic loader bootloader capable of handling firmware updates. All three components are available for free under a revised 3-Clause BSD license. LoRa Basic Station supports LoRaWAN Classes A, B, and C, presents a unified radio abstraction layer supporting Concentrator Reference Designs v1.5 and v2, and implements various backend protocols. Apart from mbedTLS and libloragw/-v2, it does not rely on external dependencies, the code is written in C language only, and easily portable to Linux gateways and embedded systems. LoRa Basic MAC is a fork of IBM’s LMiC library, also implemented in C language,  supports multiple regions selectable at compile and/or run time, and can handle Class A, Class B, and Class C devices. Basic MAC uses LoRa Basic loader to load its firmware, and to support firmware updates over-the-air (FOTA). …

Support CNX Software – Donate via PayPal or become a Patron on Patreon

Eclipse IoT Survey Report Reveals Arm & Linux Dominate, Security Concerns

Constrained devices Arm IoT

The Eclipse IoT Working Group has just released a report asking the global IoT developer community to share their perceptions, requirements, and priorities. And with over 1,700 individuals taking the survey between February and March 2019, the key findings are interesting: IoT drives real-world, commercial outcomes today. 65% of respondents are currently working on IoT projects professionally or will be in the next 18 months. IoT developers mostly use C, C++, Java, JavaScript, and Python AWS, Azure, and GCP are the leading IoT cloud platforms Top three industry focus areas remain the same as last year: IoT Platforms, Home Automation, and Industrial Automation / IIoT. MQTT remains the dominant IoT communication protocol leveraged by developers The Eclipse Desktop IDE is the leading IDE for building IoT applications The last point may be slightly biased because the survey was done by the Eclipse IoT Working Group, so most respondents were already familiar with the Eclipse IDE. Security concerns dropped slightly compared …

Support CNX Software – Donate via PayPal or become a Patron on Patreon

A Tale of Many Divisions – Naive Prime Factorization Across a Handful of Architectures

Compiler Explorer Dissassembly

CNXSoft: Another guest post by blu where he looks at how a small piece of code involving divisions behaves on different architectures. Once upon a time (i.e. the other week) I was giving tips to my 5th-grader how to efficiently compute least common multiples, when it struck me I could do better ‒ I could write a prime factorizer that could be useful to the elementary-school-goers in this house, as well as to the people checking the formers’ homeworks. Moreover, a naive prime factorizer could show kids how computers would carry out algorithms taught in class. There was also a bit of curiosity involved ‒ last time I wrote a prime factorizer I was in high school, and the language was Applesoft BASIC, so 30 years later, armed with a modern C++ arsenal and a supercomputer (by late ‘80s standards), I wondered what one might come up with today, approaching the problem from first principle (sorry, no Euler today). The …

Support CNX Software – Donate via PayPal or become a Patron on Patreon

Zero-overhead Destructors in C

CNXSoft: This is another guest by Blu, this time about C programming, and specifically destructors in C programming language If you asked seasoned C++ developers what their favorite features in the C++ language might be, chances are that destructors would be on everybody’s shortlist. As many other C++ developers, I too tend to do my occasional share of C, and if there’s one feature I dearly miss in C that is destructors ‒ precisely in their capacity of automating the release of resources at the right moment. But first a disclaimer is in order: many people call simple application of destructors ‘RAII’ ‒ ‘Resource Acquisition Is Initialization’; I find this acronym unnecessarily awkward and obfuscating an otherwise straightforward concept, so you won’t see this acronym through the end of this text. Instead, I’ll be using ‘end-of-scope’ action. Traditionally, in the language of C end-of-scope (more often end-of-function) actions are achieved via deliberate arrangement of the control flow, often via goto’s …

Support CNX Software – Donate via PayPal or become a Patron on Patreon