EmbeddedRelated.com
Blogs

Blocking == Technical Debt

Miro Samek October 25, 20242 comments

Blocking occurs every time a program waits in line for something to happen. For instance, the basic Arduino "Blink" example turns the LED on and calls the delay() function to wait for a timeout event in 1000 milliseconds. Then it turns the LED off and calls delay() to wait in line for another timeout event in 1000 milliseconds. Performed in a loop, this ends up blinking the LED.

Blocking in Arduino programming is accomplished by busy waiting. But it is not the only form. Blocking based...


In TCL FPGA Wizards Trust

GLENN Kirilow October 16, 2024

In TCL FPGA wizards trust. The best way to learn TCL is exposure therapy which we will be doing here using two examples: One for creation of a project with synthesis and implementation steps and another for simulation.


How 5G impacts future IoT development

John Koon October 11, 2024

The Internet of Things (IoT) applications are ubiquitous today. IoT is used in almost every industrial, commercial, and consumer market segment, including autonomous driving, smart factories, automation and preventive maintenance, smart homes, smart cities, security, asset tracking, supply chain management, agriculture, farming, healthcare, smart medicine and remote surgery, augmented reality applications, activity monitoring, and more. The three most promising uses of IoT are smart manufacturing, autonomous driving, and healthcare, particularly remote surgery.


Product quality: belief or proof?

Colin Walls October 7, 2024

Embedded software development is a challenging activity, so it is essential to have tools and IP that is of the best quality. However, assessing that quality can be, in itself, a challenge.


Picowoose: The Raspberry Pi Pico-W meets Mongoose

Sergio R Caprile October 6, 2024

This example application describes the way to adapt the George Robotics CYW43 driver, present in the Pico-SDK, to work with Cesanta's Mongoose. We are then able to use Mongoose internal TCP/IP stack (with TLS 1.3), instead of lwIP (and MbedTLS).


Simulating Your Embedded Project on Your Computer (Part 1)

Nathan Jones October 2, 20242 comments

Having a simulation of your embedded project is like having a superpower that improves the quality and pace of your development ten times over! To be useful, though, it can't take longer to develop the simulation than it takes to develop the application code and for many simulation techniques "the juice isn't worth the squeeze"! In this two-part blog series, I'll share with you the arguments in favor of simulation (so, hopefully, you too believe in its value) and I'll show you what works (and what doesn't work) to help you to simply, easily, and quickly simulate your embedded project on your computer.


How to use analog input (ADC) on NuttX RTOS

Alan C Assis September 21, 2024

In all previous tutorial about NuttX we used some type of digital interface (I2C, SPI, etc), so today we will see how to use an analog interface to read some analog sensor or other analog device. In fact we live in an analog world and sometimes we need to read some analog voltage to make sense of some external analog signal. Today we will see how to use the ADC (Analog Digital Converter) from Raspberry Pi Pico RP2040 to read analog voltages.

First let me explain what...


Understanding Yocto Project Layers: A Modular Approach to Embedded Systems Development

Aaksha Jaywant September 16, 2024

In the world of embedded systems, flexibility and modularity are key to managing complex projects efficiently. The Yocto Project, a powerful build system for creating custom Linux distributions, embraces this philosophy through the use of layers. These layers are essentially sets of repositories that contain the instructions and metadata required to build a specific target image. By leveraging layers, developers can modularize their projects, reusing and sharing previously developed metadata...


My friend, the compiler

Ido Gendel September 11, 2024

Modern compilers were given great powers, but we don't always know where and when they'll use them. This may cause us to either worry needlessly or trust unjustifiably, as demonstrated by a little example in this post.


What I Learned From Crashing and Burning in Grad School

Nathan Jones September 4, 20241 comment

Have you ever felt so consumed by something that it started to crowd other parts of your life? So obsessed with success in a particular area that you could hardly think about anything else? I found myself in exactly that spot in 2018 when I first started graduate school; I wanted to succeed so badly that I worked myself to the bone and I let even my marriage and my health suffer in service to it. This state of being is, believe it or not, NOT conducive to success, in neither the long-term nor the short-term. But it took two authors and one pivotal book for me to understand that, to see the pit I had dug for myself, and to begin the path back out. In this blog, I want to share with you my journey in the hopes that you can avoid the mistakes I made.


Introduction to Microcontrollers - Beginnings

Mike Silva August 20, 201313 comments

Welcome to this Introduction to Microcontroller Programming tutorial series. If you are looking to learn the basics of embedded programming for microcontrollers (and a bit of embedded hardware design as well), I hope these tutorials will help you along that journey. These are my first postings here, and I am writing this tutorial series because over the years I have seen countless newbies asking the same questions and tripping over the same stumbling blocks, and I thought I might be able to...


MSP430 Launchpad Tutorial - Part 2 - Interrupts and timers

Enrico Garante June 17, 201342 comments

What is an "interrupt"? It is a signal that informs our MCU that a certain event has happened, causing the interruption of the normal flow of the main program and the execution of an "interrupt routine", that handles the event and takes a specified action.

Interrupts are essential to avoid wasting the processor's valuable time in polling loops, waiting for external events (in fact they are used in Real-Time Operating Systems,


VHDL tutorial - A practical example - part 3 - VHDL testbench

Gene Breniman June 25, 20118 comments

In part 1 of this series we focused on the hardware design, including some of the VHDL definitions of the I/O characteristics of the CPLD part.  In part 2, we described the VHDL logic of the CPLD for this design.  In part 3, we will show the entire VHDL design and the associated tests used to prove that we have, in fact, designed what we started out to design.

First, let's pull all of the pieces of the prior design together into a...


Analyzing the Linker Map file with a little help from the ELF and the DWARF

Govind Mukundan December 27, 201524 comments

When you're writing firmware, there always comes a time when you need to check the resources consumed by your efforts - perhaps because you're running out of RAM or Flash or you want to optimize something. The map file generated by your linker is a useful tool to aid in the resource analysis. I wanted to filter and sort the data generated in an interactive way so I wrote a C# WinForms application that reads the data from the map and presents it in a list view (using the awesome


How FPGAs work, and why you'll buy one

Yossi Kreinin June 20, 201315 comments

Today, pretty much everyone has a CPU, a DSP and a GPU, buried somewhere in their PC, phone, car, etc. Most don't know or care that they bought any of these, but they did.

Will everyone, at some future point, also buy an FPGA? The market size of FPGAs today is about 1% of the annual global semiconductor sales (~$3B vs ~$300B). Will FPGA eventually...


MSP430 LaunchPad Tutorial - Part 4 - UART Transmission

Enrico Garante July 3, 201320 comments

Today we are going to learn how to communicate using UART with the Launchpad. For this purpose I will replace the default microcontroller that comes with the board with the MSP430G2553. It is the most powerful device in the MSP430 Value Line and it comes with an integrated hardware UART module, along with 16 Kb of Flash memory, 512 bytes of SRAM and an 8-channel, 10 bit ADC.

UART communication can be useful when dealing with sensors: as a basic example, we could...


Chebyshev Approximation and How It Can Help You Save Money, Win Friends, and Influence People

Jason Sachs September 30, 201220 comments

Well... maybe that's a stretch. I don't think I can recommend anything to help you win friends. Not my forte.

But I am going to try to convince you why you should know about Chebyshev approximation, which is a technique for figuring out how you can come as close as possible to computing the result of a mathematical function, with a minimal amount of design effort and CPU power. Let's explore two use cases:

  • Amy has a low-power 8-bit microcontroller and needs to compute \( \sqrt{x} \)...

How to Read a Power MOSFET Datasheet

Jason Sachs September 15, 20159 comments

One of my pet peeves is when my fellow engineers misinterpret component datasheets. This happened a few times recently in separate instances, all involving power MOSFETs. So it’s time for me to get on my soapbox. Listen up!

I was going to post an article on how to read component datasheets in general. But MOSFETs are a good place to start, and are a little more specific. I’m not the first person to write something about how to read datasheets; here are some other good...


Understanding and Preventing Overflow (I Had Too Much to Add Last Night)

Jason Sachs December 4, 2013

Happy Thanksgiving! Maybe the memory of eating too much turkey is fresh in your mind. If so, this would be a good time to talk about overflow.

In the world of floating-point arithmetic, overflow is possible but not particularly common. You can get it when numbers become too large; IEEE double-precision floating-point numbers support a range of just under 21024, and if you go beyond that you have problems:

for k in [10, 100, 1000, 1020, 1023, 1023.9, 1023.9999, 1024]: try: ...

MSP430 Launchpad Tutorial - Part 1 - Basics

Enrico Garante June 14, 201320 comments

TI's LaunchPad is a complete MSP430 development environment: all you have to do is download and install CCS IDE (login required), connect your G2231-ready LaunchPad to your computer with the included mini-usb cable, and you are ready to code!

Texas Instrument MSP430 LaunchPad

So, let's see how to start a new project in Code Composer Studio. This IDE is derived from Eclipse, so if you used it before you shouldn't have much problems.

We'll write a simple program that will...


2024 Embedded Online Conference's Schedule

Stephane Boucher April 25, 2024

Welcome to the 2024 Embedded Online Conference! Like with previous years, this year's event will be a mix of pre-recorded on-demand sessions and live Zoom sessions. We've carefully curated the schedule to ensure that you have access to a wealth of valuable content throughout the week.

Most talks will be released on-demand, while most workshops and keynotes will be done live on Zoom. There will also be multiple live 20-minute-long Q&A sessions happening throughout the week, providing you...


EOC 2024 - I Will Attend Giveaways!

Stephane Boucher April 22, 20249 comments

With the Embedded Online Conference just around the corner, we are very excited to announce an opportunity for you to win one of many amazing prizes, thanks to the generous contributions of DigiKey, Jetperch and Saleae!

For a chance to win one of the following prizes, all you have to do is help us with spreading the word about the conference.

Prize: LulzBot Mini...

Call for Bloggers!

Stephane Boucher July 12, 2023

Are you passionate about embedded systems? Do you have valuable insights, tips, or stories to share with the embedded community? Do you want to reach a large and engaged audience of embedded enthusiasts and professionals? We are currently looking at adding a few more inspired writers to our team of bloggers.


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...


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...


What to See at Embedded World 2023

Stephane Boucher March 6, 2023

Embedded World 2023 is just around the corner, and I am thrilled to be attending this year's edition in Nuremberg, Germany. The last time I was there was three years ago, and the world was on the cusp of a major pandemic. It was a surreal experience as many booths and exhibits were empty and cordoned off by security tape due to last-minute cancellations. It was clear that something big was happening. 

But with more than 900 vendors exhibiting this year, I'm glad to see that Embedded...


Favorite Software AND Hardware Tools for Embedded Systems Development

Stephane Boucher October 5, 2022

Last year, at the Embedded Online Conference, we interviewed the speakers and asked them what were some of their favorite software and hardware tools for Embedded development.  

We aggregated all their answers in one insightful video that you can watch here.

Although you should really watch the video in order to get the full picture, I've compiled the following non-exhaustive list for the fun of it (again, I cannot overstate enough how much valuable...


A New Related Site!

Stephane Boucher September 22, 20222 comments

We are delighted to announce the launch of the very first new Related site in 15 years!  The new site will be dedicated to the trendy and quickly growing field of Machine Learning and will be called - drum roll please - MLRelated.com.

We think MLRelated fits perfectly well within the “Related” family, with:

  • the fast growth of TinyML, which is a topic of great interest to the EmbeddedRelated community
  • the use of Machine/Deep Learning in Signal Processing applications, which is of...

New Promo Video for the 2022 Embedded Online Conference

Stephane Boucher April 19, 2022

Less than a week to go before the conference! Check out our 2022 Embedded Online Conference promo video, featuring (in order of appearance) Helen Leigh, Peter McLaughlin, Jack Ganssle, Tyler Hoffman, Steve Branam, Colin O'Flynn, Miro Samek, Henk Muller, Jacob Beningo, Harrison Donahue, Kate Stewart, Clive (Max) Maxfield, Don Wilcher, Adam Taylor, and Jean Labrosse.

If you haven't registered for the conference yet, please consider doing so today.  Make sure to use the...