EmbeddedRelated.com
Using (Apache) NuttX Buttons Subsystem

Using (Apache) NuttX Buttons Subsystem

Alan C Assis
Still RelevantIntermediate


Simple C++ State Machine Engine

Simple C++ State Machine Engine

Massimiliano Pagani
Still RelevantIntermediate

When implementing state machines in your project it is an advantage to rely on a tried and tested state machine engine. This component is reused for every kind of application and helps the developer focus on the domain part of the software. In this article, the design process that turns a custom C++ code into a finite-state machine engine is fully described with motivations and tradeoffs for each iteration.


Getting Started With CUDA C on an Nvidia Jetson: Hello CUDA World!

Getting Started With CUDA C on an Nvidia Jetson: Hello CUDA World!

Mohammed Billoo
Still RelevantIntermediate

In this blog post, I introduce CUDA, which is a framework designed to allow developers to take advantage of Nvidia's GPU hardware acceleration to efficiently implement certain type of applications. I demonstrate an implementation to perform vector addition using CUDA C and compare it against the traditional implementation in "regular" C.


Getting Started with the Microchip PIC® Microcontroller

Getting Started with the Microchip PIC® Microcontroller

Luther Stanton
Still RelevantBeginner

This first post of a five part series looks at the available hardware options for getting started with Microchip 8-bit PIC® Microcontroller, explores the MPLAB® X Integrated Development Environment and walks through setting up a project to expose the configured clock to an external pin and implement a single output GPIO to light an LED.


BusyBox; The Swiss Army Knife of Embedded Linux

BusyBox; The Swiss Army Knife of Embedded Linux

George Emad
Still RelevantIntermediate

In this article we cover the BusyBox, how it's designed to be optimized for embedded targets, and how to configure and build it in different ways, we also covered the license and limitation, which led to the development of ToyBox, I hope you enjoyed the article, please leave a comment for any correction or suggestions.


Creating a GPIO HAL and Driver in C

Creating a GPIO HAL and Driver in C

Jacob Beningo
TimelessIntermediate

Creating a GPIO Hardware Abstraction Layer (HAL) in C allows for flexible microcontroller interfacing, overcoming the challenge of variability across silicon vendors. This method involves reviewing datasheets, identifying features, designing interfaces, and iterative development, as detailed in the "Reusable Firmware" process. A simplified approach prioritizes essential functions like initialization and read/write operations, showcased through a minimal interface example. The post also highlights the use of AI to expedite HAL generation. A detailed GPIO HAL version is provided, featuring extended capabilities and facilitating driver connection through direct assignments or wrappers. The significance of a configuration table for adaptable peripheral setup is emphasized. Ultimately, the blog illustrates the ease and scalability of developing a GPIO HAL and driver in C, promoting hardware-independent and extensible code for various interfaces, such as SPI, I2C, PWM, and timers, underscoring the abstraction benefits.


The RTOS minefield

The RTOS minefield

Colin Walls
Still RelevantIntermediate

Choosing an RTOS is challenging both technically and when assessing suppliers.


You Don't Need an RTOS (Part 1)

You Don't Need an RTOS (Part 1)

Nathan Jones
Still RelevantIntermediate

In this first article, we'll compare our two contenders, the superloop and the RTOS. We'll define a few terms that help us describe exactly what functions a scheduler does and why an RTOS can help make certain systems work that wouldn't with a superloop. By the end of this article, you'll be able to: - Measure or calculate the deadlines, periods, and worst-case execution times for each task in your system, - Determine, using either a response-time analysis or a utilization test, if that set of tasks is schedulable using either a superloop or an RTOS, and - Assign RTOS task priorities optimally.


Using (Apache) NuttX USERLED Subsystem

Using (Apache) NuttX USERLED Subsystem

Alan C Assis
Still RelevantIntermediate


3D printing for embedded development

3D printing for embedded development

Ido Gendel
Still RelevantIntermediate

Used mostly for creating little plastic objects, the desktop 3D printer is not an obvious addition to the embedded developer's toolbox. However, if you're looking for more reasons to get one, or already have one that's mostly gathering dust, here are a couple of embedded-related ways to get more value out of it.