EmbeddedRelated.com

Working with Strings in Embedded C++

Niall Cooling June 1, 20233 comments

This article discusses the use of strings in embedded systems. It explains how the need for and use of strings in embedded systems has changed with the advent of cheaper, full graphic displays and the growth of the ‘Internet of Things’ (IoT). The article also covers character literals, C-Strings and string literals, and the difference in memory models between them. It also highlights the safety and security issues that arise from using strings in embedded systems. Finally, it explains how C++11 introduced a Raw string literal type that is useful for storing file paths or regular expressions.


Return of the Delta-Sigma Modulators, Part 1: Modulation

Jason Sachs May 28, 2023

About a decade ago, I wrote two articles:

Each of these are about delta-sigma modulation, but they’re short and sweet, and not very in-depth. And the 2013 article was really more about analog-to-digital converters. So we’re going to revisit the subject, this time with a lot more technical depth — in fact, I’ve had to split this...


C to C++: Bridging the Gap from C Structures to Classes

Jacob Beningo May 23, 20238 comments

In our last post, C to C++: Proven Techniques for Embedded Systems Transformation, we started to discuss the different ways that C++ can be used to write embedded software. You saw that there is no reason to be overwhelmed by trying to adopt complex topics like metaprogramming out of the gate. An important concept to understand is that you can make the transition gradually into C++ while still receiving the many benefits that C++ has to offer.

One of the first...


The Missing Agile Conversation

Steve Branam May 15, 2023

In this article, we learn about Agile practices and how they use stories as units of development. Stories consist of a brief description, one to a few sentences. They don’t contain details sufficient to allow a developer to implement them. The Agile practice is to defer details as long as possible because conditions may change. When a developer takes on a story to implement, that’s the time for them to perform the work that has been deferred. They do this by having a conversation, a series of specific discussions working closely with the various SME’s (Subject Matter Experts) who have information relevant to the story.


STM32 B-CAMS-OMV Walkthrough

Peter McLaughlin April 30, 20231 comment

The STM32 B-CAMS-OMV camera module offers an accessible way to get started with embedded vision. Coupled with the STM32H747I-DISCO discovery kit and the FP-AI-VISION1 function pack, it's possible to be up and running in minutes.

This video describes the camera connection interface to the discovery kit and the key software functions required to control the camera and process its data. We review the ISP (Image Signal Processor) interface with examples of image processing...


Free Sessions @ the 2023 Embedded Online Conference

Stephane Boucher April 21, 2023

Although the 2023 Embedded Online Conference will officially start only on Monday 04/24, today we are pre-releasing all Theatre Talks and Demos in order to give attendees a headstart over the weekend on a very busy program.

The good news is, you don't need a paid registration to access theatre talks and demos.  All you have to do is create an account on the EOC website and skip the payment part.  

Here are the 37 sessions that you can watch for...


STM32 VS Code Extension Under The Hood

Peter McLaughlin April 21, 2023

VS Code is becoming the "go to" environment for many developers. Increasingly, toolchain providers are publishing VS Code extensions and ST has recently followed suit. Additionally, CMake is significantly growing in popularity, with many projects adopting it for its ease of use and flexibility. This video shows how the STM32 VS Code extension works under the hood and how to get more out of it.

Specifically, we'll review the CMake files generated by the VS Code extension and how to modify...


Getting Started With Zephyr: West Manifest Customization

Mohammed Billoo April 4, 2023
Introduction

The Zephyr Project RTOS (https://zephyrproject.org/), or simply “Zephyr” as it is known colloquially, is an increasingly popular real-time operating system due to its native support for over 450 boards and countless peripherals. When starting with any embedded software project, the first task is to start from a known baseline. This can include cloning a repository from source control, which can be the case with embedded Linux, or downloading a zip file representing a...


Back from Embedded World 2023

Stephane Boucher March 23, 20231 comment

It was great to be back in Nuremberg for Embedded World after three long years. The trade show is probably the most significant event in the embedded systems industry, and it was a relief to see that it has survived the pandemic with more than 900 vendors exhibiting.

I recorded this video on the very first day when the doors opened.  What you see in the video is probably 10% or less of the full show floor.  I am always impressed by the size of...


StrangeCPU #2. Sliding Window Token Machines

Victor Yurkovsky March 5, 201313 comments
Summary:

An in-depth exploration of Sliding Window Token Machines; ARM notes.

Table of Contents:

Modern C++ in Embedded Development: (Don't Fear) The ++

Amar Mahmutbegovic June 13, 20232 comments

While C is still the language of choice for embedded development, the adoption of C++ has grown steadily. Yet, reservations about dynamic memory allocation and fears of unnecessary code bloat have kept many in the C camp. This discourse aims to explore the intricacies of employing C++ in embedded systems, negotiating the issues of dynamic memory allocation, and exploiting the benefits of C++ offerings like std::array and constexpr. Moreover, it ventures into the details of the zero-overhead principle and the nuanced distinctions between C and C++. The takeaway? Armed with the right knowledge and a careful approach, C++ can indeed serve as a powerful, safer, and more efficient tool for embedded development.


Using XML to describe embedded devices (and speak to them)

Martin Strubel October 12, 20111 comment

This article discusses one of the typical development cycles in embedded device and communication design and presents a possible, light weight solution using the free DClib/netpp framework.

The challenge

Assume we're faced with the design of an embedded device, be it a simple SoC unit or a more complex, uC controlled engine with various attached peripherals. From first prototype to the market, the following development cycle is typically walked through:


Embedded Systems Roadmaps

Nathan Jones November 9, 2023

What skills should every embedded systems engineer have? What should you study next to improve yourself as an embedded systems engineer? In this article I'll share with you a few lists from well-respected sources that seek to answer these questions, with the hope of helping provide you a path to mastery. Whether you've only just finished your first Arduino project or you've been building embedded systems for decades, I believe there's something in here for everyone to help improve themselves as embedded systems engineers.


Important Programming Concepts (Even on Embedded Systems) Part III: Volatility

Jason Sachs October 10, 2014

1vol·a·tile adjective \ˈvä-lə-təl, especially British -ˌtī(-ə)l\ : likely to change in a very sudden or extreme way : having or showing extreme or sudden changes of emotion : likely to become dangerous or out of control

Merriam-Webster Online Dictionary

Other articles in this series:


10 More (Obscure) Circuit Components You Should Know

Jason Sachs February 5, 20121 comment

The interest in my previous article on obscure but useful electronics parts, "10 Circuit Components You Should Know" was encouraging enough that I thought I would write a followup. So here are another 10:

1. "Ideal Diode" controllers

Load-sharing circuits use diodes tied together at their cathode terminal to take the most positive voltage among the sources and connect it to a load. Works great: you have a DC/DC power supply, a battery, and a solar cell, and it will use whichever output is...


Energia - program a TI MSP430 using Arduino sketches

Lonnie Honeycutt November 5, 20131 comment
TI MSP430 Launchpad

I started tinkering with microcontroller a couple of years ago with an Arduino Uno.  I had a little experience with C, so programming in the Arduino environment has been relatively easy and straightforward for me.  My code is not necessarily elegant or efficient, but I can usually figure out how to make an Arduino do what I want it to do eventually.  A lot of credit to the Arduino userbase, as it is very easy to figure most things out with a quick Google...


Real-time clocks: Does anybody really know what time it is?

Jason Sachs May 29, 20118 comments

We recently started writing software to make use of a real-time clock IC, and found to our chagrin that the chip was missing a rather useful function, namely elapsed time in seconds since the standard epoch (January 1, 1970, midnight UTC).Let me back up a second.A real-time clock/calendar (RTC) is a micropower chip that has an oscillator on it that keeps counting time, independent of main system power. Usually this is done with a lithium battery that can power the RTC for years, so that even...


Someday We’ll Find It, The Kelvin Connection

Jason Sachs July 28, 20142 comments

You’d think it wouldn’t be too hard to measure electrical resistance accurately. And it’s really not, at least according to wikiHow.com: you just follow these easy steps:

  • Choose the item whose resistance you wish to measure.
  • Plug the probes into the correct test sockets.
  • Turn on the multimeter.
  • Select the best testing range.
  • Touch the multimeter probes to the item you wish to measure.
  • Set the multimeter to a high voltage range after finishing the...

Discrete-Time PLLs, Part 1: Basics

Reza Ameli December 1, 20159 comments

In this series of tutorials on discrete-time PLLs we will be focusing on Phase-Locked Loops that can be implemented in discrete-time signal proessors such as FPGAs, DSPs and of course, MATLAB.