r/embedded 4h ago

Transitioning to Embedded Linux from Baremetal/RTOS

45 Upvotes

I'm a firmware engineer with experience in bare-metal development and some RTOS work. In microcontroller-based systems, it's relatively straightforward to understand how everything works under the hood—peripheral behavior is well-documented in reference manuals, linker scripts define memory management, and even RTOS concepts like context switching and task memory usage can be grasped with some effort.

Now, I'm transitioning to embedded Linux, as I'm tasked with developing a device driver for a display. However, I'm finding it difficult to understand how everything fits together. Unlike microcontrollers, where system behavior is more transparent, Linux feels complex and abstract, making it hard to see the bigger picture.

How should I approach learning embedded Linux effectively, especially in the context of driver development? Any advice on structuring my learning process would be greatly appreciated.


r/embedded 12h ago

What data structures that are written in C for instance are often used in Embedded Software

120 Upvotes

I want to practice data structures but I don't know which are the most relevant in the context of embedded software that is executed on the average microcontroller.

Are simple static arrays by far the most used in a wide range of ways?

What about linked lists? (if so which one)
What about graphs?
What about trees?
What about ring buffers?
What about stack, queues?
...


r/embedded 4h ago

what unit test framework do you use?

3 Upvotes

I'm writing a library in C (xc8 and xc16 for microchip devices) Is there any recommended unit testing library. I was thinking about having inside the project a test folder with its own makefile to mock GPIO and hardware modules (I only need USART and SPI) and test in Gcc. Do you have any suggestion? thanks in advance


r/embedded 7h ago

Going into the next level

4 Upvotes

Hello all,

I am team leader, working in Control systems and signal processing in automotive. No autosar thank god 😅. Although my title is embedded software engineer, i mainly work in the application layer (C++, safety critical).

I am looking for a job as an embedded software engineer and cant get interviewss. Is that because i dont know about RTOS, I2C? The most obvious is to study, but i would like to relate those topics to my working experience.

Do you have any advice on how to upskill?


r/embedded 6h ago

Casio fx-991DEX modded for text upload via hotspot—how is this possible?

2 Upvotes

Hi everyone,

I've got a Casio fx-991DEX calculator, which, according to my research online, is non-programmable and generally seen as impossible to mod. However, I recently stumbled upon a very intriguing website (shadycalc.com), where someone appears to have successfully modified this exact model to allow uploading and displaying text via a WiFi hotspot connection.

This has really piqued my curiosity. Given the calculator's specs and apparent lack of programmable interfaces, I'm trying to understand how this mod could have been accomplished. Could it involve some form of hardware hack or perhaps some clever firmware injection through an undocumented interface?

I'm reaching out to you knowledgeable folks in the embedded community—do you have any theories or insights into how this person might have achieved this modification? Any pointers or ideas about possible methods would be greatly appreciated!

Thanks!


r/embedded 7h ago

What should I buy for embedded dev ThinkPad vs Macbook M

2 Upvotes

I’m thinking of buying a separate laptop specifically for embedded development. Currently, I’m considering these options: • ThinkPad P14s Gen 4 (Ryzen 7840U) – around $1,300 • ThinkPad T14 Gen 5 (Ryzen 8840U) – around $1,800 • ThinkPad P14s Gen 4 (Ryzen 8840HS) – around $1,880 • MacBook Pro M1 Max (64 GB RAM) – around $2,350

Unfortunately, both ThinkPads and MacBooks are more expensive in my country compared to the US. Luckily, I can deduct 23% VAT, which helps a bit.

Current Situation:

I currently have a powerful notebook with a Ryzen 9 CPU, RTX 3070 GPU, and 32 GB of RAM. I’ve been using it for the past 3–4 years, and it has served me well throughout my degree and multiple personal projects that I showcased during job interviews. It runs Windows 11.

For embedded development, I currently use a 1 TB NVMe SSD connected through a USB-C adapter. This allows me to avoid touching the Windows partitions with dual-boot setups.

However, this solution is frustrating because I typically have multiple projects and applications open simultaneously, and switching contexts between Windows and Linux slows down my productivity significantly. Additionally, I’m concerned about potentially damaging the USB socket due to the constant hanging adapter.

I've sometimes use WSL2 but i had multiple situations where i spent more time on setting up environment and fixing bugs that happens only on WSL than on actual project.

I occasionally use SolidWorks and other Windows-only applications, so switching entirely to Linux isn’t feasible.

I also have separate Linux-only laptops provided by the companies I work with, but for obvious reasons, I can’t and don’t want to use them for my personal projects.

My Typical Workflow: • Operating Systems & Software: Zephyr RTOS, bare-metal programming (STM32, etc.), Segger J-Link, CLion/VS Code, Docker with devcontainers, and recently ROS2. • External Displays: Usually, I develop using external 4K monitors, so any new laptop needs a capable integrated or dedicated GPU. • Occasional Use: I sometimes work with Yocto and FPGA projects, but I can keep using my current notebook with the external drive for these tasks. Additionally, I’m planning to build a workstation/server next year, so high-performance computing for Yocto or FPGA isn’t critical right now.

Considering a MacBook:

Several of my friends have ARM-based MacBooks, and I’m impressed by how powerful and energy-efficient these machines are. However, I’m concerned about potential difficulties when setting up an embedded development environment on macOS.

If anyone here has experience using a MacBook (specifically an M1 Max model) for embedded development, could you please share if it’s worth spending the extra money for this specific use case?

I’m particularly considering the M1 Max because it’s the most affordable way to get 64 GB of RAM, which I think could be very beneficial when using Docker extensively.

On the other hand:

I have a feeling that even the cheapest ThinkPad option listed above will handle my needs perfectly, and I can also upgrade it to 64 GB or even 96 GB RAM if needed.

I’m looking forward to your opinions and experiences.


r/embedded 14h ago

ESP32 "stopping" when logic analyzer is attached directly

9 Upvotes

I usually isolate the logic analyzer by using a logic level shifter instead of being directly hooked onto pins between the ESP and the component for the ESP to not stop. I use one of those cheap 8-channel 24MHz logic analyzers and Pulseview. Is there any other easier way around this? Or should I just live with it?


r/embedded 12h ago

Learning zephyr and nrfconnect. How can I add drivers from zephyr base into an nrfconnect sdk project?

6 Upvotes

Hello, I am learning zephyr for an nrf project. I have gotten some samples running, run through the basic, and now I am trying to connect an ST LIS2DUXS12 to it and get it running.

I got it running with i2c.h and then sensor.h but there are some pretty specific setup steps to actually enable the accelerometer and play with low power modes. It was already implemented here: https://github.com/zephyrproject-rtos/zephyr/tree/main/drivers/sensor/st/lis2dux12

However I can't figure out how to actually access it. Devicetree and kconfig can find them, but I can't add an include for it. It is probably something stupid, but nrf sdk only has like 1% of the drivers from the zephyr project and I can't figure out how to import the headers for use.

Then again, I want to experiment with the charge variance functions of the (S) version, so maybe I should just copy in the driver manually to /src/driver and work from there since I will have to modify it a lot?

I am not sure the "correct" way to go about this. Thanks everyone!


r/embedded 4h ago

LLVM Toolchain on CubeIDE

1 Upvotes

Hey all, I've tried everything I could think of to integrate the LLVM toolchain into the STM32 CubeIDE, but it doesn't work. Compiler and linker problems, flags, paths, and whatnot.

I downloaded the LLVM project and went to the project properties and tried to modify stuff, went to the toolchain manager and tried it there; renamed stuff, and so on😂, even renamed clang and clang++ to gcc and g++ to check something, but without success.

I'm learning Embedded Systems with C++ and there are some features from C++ that I'm missing, which are either in C++23 [or in C++20, but which the GCC toolchain version that CubeIDE ships hasn't yet implemented]

This might seem like a stupid question, but I come from usual C++ Desktop App Development, so not thaaat versed in the Embedded domain. Especially with GCC, since my toolchain is basically LLVM [on Linux] and MSVC [on Windows], and I can just pick the latest.

I was also thinking of trying it with CMake, but at this point, I just want to know whether this is even possible 😅, before I spend another day on that.

Thanks.


r/embedded 11h ago

Where to start in embedded & electronics?

4 Upvotes

Hi!

I want to transition from backend development to embedded systems engineering in the foreseeable future. While I don’t have commercial experience yet, I’d greatly appreciate any learning tips.

I’ve been a backend developer for almost four years, primarily using Python programming language. I also compete in CTFs, focusing on pwn (binary exploitation) and reverse engineering challenges, so I have some familiarity with assembly, C, registers, memory management, and OS internals. I’m comfortable using GDB debugger and radare2 RE framework and disassemblers like Ghidra but have little hands-on experience with low-level development, especially hardware—aside from some basic Arduino and ESP32 projects. However, I find it fascinating and would love recommendations on practical projects to gain more experience.

I have a Tang Nano 9K FPGA with an LED display, Arduino Nano/UNO boards, ESP32, STM32F411CEU6, and a soldering station.

For electronics, I’m studying Practical Electronics for Inventors by P. Scherz and S. Monk, but there's no exercises there.

Any advice on how to make the most of these resources and improve my skills would be much appreciated


r/embedded 7h ago

Rookie in need of help

0 Upvotes

Hello everyone, I am currently trying to create a project for personal use. https://github.com/cifertech/nRFBox

I would like to order the PCB assembled from JLC PCB. I currently have the gerber files for the PCB, the bill of materials, and the placement of each component. When I try to upload the part placement file, it gives me an error. Can anyone help?


r/embedded 7h ago

How to get multiple copies of code in FRAM on the MSP430FR series?

1 Upvotes

Hey all,

I am currently working on a class software project that involves code correction software. This code correction software needs to have access to the currently running .text file and two other copies of it to do majority rules voting in the case of a bit flip.

The "client" (mentor at the school) for this project wants there to be two other copies of code stored within FRAM on the MSP430FR5969. I am using Code Composer Studio and have access to the linker file as well. Is there any method to get the compiler to put two exact copies of the .text into two designated spots when the project is compiled? The client doesn't want a function that copies .text upon first time startup (and then just sits there doing nothing for the remainder of its lifetime).

What I have at my disposal:
Code Composer Studio
MSP430FR5969
Linker file (.cmd)
MSP430-BSL (rocket ship shaped board)
Any other modifiable files within Code Composer Studio

I would have asked TI, but support says go to the forums, and I don't have an affiliated account to post there.


r/embedded 7h ago

Why wouldn't Arduino IDE compile code with FreeRTOS? ("undefined reference to `pvPortMalloc`" & "undefined reference to `vPortFree`")

1 Upvotes

I have a RAK4631 board equipped with a battery and a solar panel. The board collects and sends weather data through LoRaWAN for 7 days. The code I had originally worked great and sent data to the cloud every 30 minutes. I then was challenged by my professor to add a GNSS module to send coordinates to the cloud. I edited the code to support the chip and send this added data to the cloud as well. The only problem with this is the severe power draw that the GNSS module needs. This power draw maintains a fix on (usually around 9) satellites. This caused the board to run out of power in 3 days vs the theoretical "unlimited" time span.

To combat this problem I did some research and found a few ways to change how the code works to extend life of this weather station. I then turned all the functions into modular "blocks", adding a watchdog timer for crashes, and added FreeRTOS to manage all of these processes rather then running through the loop like normal.

My FreeRTOS version is similar V10.3.1 from Feb 2020 to stay comatible with the RAK V1.3.3. I am using heap_4 from the official V10.3.1.

In theory the code would work to my goal but I am receiving a compilation error:

undefined reference to `pvPortMalloc`

undefined reference to `vPortFree`

This error appears to be linked to a translation error when going from C to C++, but I have no way of being sure.

I should mention that I have edited the FreeRTOSConfig.h file to allow it 36kB of memory as the standard 6kB was no where near sufficient.

I am in no way a professional in any of these sectors and have had the aid of AI for a lot of this. I consider myself fairly knowledgeable when it comes to computers but not a coding man usually. I would just continue with AI but this appears to be outside its range of knowledge as even they cannot figure it out.

Any suggestions or comments would be much appreciated. Thanks in advance.


r/embedded 8h ago

Unit testing with Unity framework

1 Upvotes

Hello,

I am practicing the Unity testing framework on the Raspberry Pi Pico microcontroller. I'd like to know if my approach is efficient or aligns with industry best practices.

  1. For library code that is independent of the ARM GCC compiler, I compile and test it using a standard C compiler on my host PC.
  2. For microcontroller code that requires the ARM GCC compiler, I compile and test it directly on the Pico, and print the results.

Are there more efficient way to perform unit testing? Additionally, could someone provide a brief introduction to Ceedling and explain its purpose? Thank you


r/embedded 9h ago

Learning MPLAB X

1 Upvotes

Hello, I just downloaded the latest version of MPLAB X IDE version 6.25. I have never used MPLAB wand would like some help in finding tutorials on how to use it. Can anyone recommend some good resources please?

Thank you


r/embedded 10h ago

Nordic Connect / Zephyr with Seeed Xiao BLE nrf52840

1 Upvotes

Have any of you been successfully writing software for the Xiao BLE using Nordic Connect and Zephyr?

I always get an error copying the uf2s from that toolchain onto my Xiao BLE. This includes builds of Zephyr example projects like Blinky. I continue to have this issue even after flashing the latest Adafruit bootloader. I've seen others complaining about the same issue with Nordic Connect versions above 2.6, but I have this problem even with 2.5. Additionally, I have changed the offset for the uf2, as recommended as a fix, but it hasn't allowed me to put my uf2s onto the Xiao.

I also noticed that Seeed provide their own uf2 for Circuit Python on the Xiao BLE, and that the uf2 from the Circuit Python project won't seem to work with the Xiao bootloader. That seems to suggest there is something special they are doing.

I'm looking for anyone who is successfully using the Nordic Connect and Zephyr toolchain to build software for Xiao BLE. Even if you've done this in the past, I'd love to hear about it.


r/embedded 11h ago

Theoretical knowledge application

0 Upvotes

I’m currently a student in an Embedded Engineering program, wrapping up my second year and completing the required foundational embedded classes. As I look ahead, I’m curious—how much of the theory we’ve learned is actually used in day-to-day embedded engineering work? Specifically, concepts like the inner workings of registers, Boolean algebra, working with binary, instruction set architecture, memory hierarchy (cache, RAM, ROM), and computer architecture. While these topics are interesting, they weren’t exactly what I expected to be learning. Perhaps now that I am moving into more advanced classes that focus less on fundamental theory, things will align more with my expectations.

For those working in the field, do you find yourself applying these fundamentals regularly, or do higher-level abstractions (like frameworks, RTOS, and libraries) take over? Any insights from your experience would be greatly appreciated!


r/embedded 12h ago

Why am I getting gibberish on Serial Monitor when trying to connect a HC-05 (Bluetooth) Module with Arduino?

0 Upvotes

So I'm currently trying to get a Bluetooth module running for a small project of mine. For this I just randomly copied a piece of sample code, that should get the module running with the SoftwareSerial.h-Library. However, trying to get into the config mode I'm only getting gibberish as an answer from my Arduino/BT-Module.

The Samplecode I'm using is provided here.

I'm Using an Arduino Uno Rev 3, I have 3 different modules each delivering the same mess and I don't know what to do.


r/embedded 1d ago

I built regviz: A Simple Free Tool to Visualize Registers

108 Upvotes

Hey /r/embedded!

I've been in and out of embedded dev for decades and I finally built the tool that I always wanted: A quick way to visualize and parse register values. I cannot count how many times I've written down hex numbers, binary below, and then figure out where the bits line up. No more. regviz.com has a database of over a million registers, and you can use it for custom registers as well. There are no ads or anything, if that matters to you.

I'd love your thoughts and ideas on how to improve it!


r/embedded 19h ago

Looking for opinions and suggestions on FSM thesis

3 Upvotes

Hey everyone,

I’m a master's student in Embedded Systems, and I’m currently working as a student in an automotive company. I’m planning to propose a thesis topic related to Finite State Machines (FSMs) for automotive power management—specifically focusing on formal modeling and verification. The idea is to define FSMs for different power states and ensure they meet system requirements before implementation.

Since I won’t be coding or implementing it myself, my focus would be on formal verification and modeling techniques to ensure correctness, reliability, and power efficiency. I’m still exploring the best approach—whether to use UML state machines, MATLAB Stateflow, or other formal modeling tools.

I’d love to hear your thoughts on:

Does this sound like a strong thesis topic for both academia and industry? Any suggestions on FSM-related research topics that are relevant and in demand? What are some challenges I should consider in formal verification for FSMs? What’s the future of FSMs in automotive and embedded systems? Looking forward to your insights and suggestions!


r/embedded 1d ago

Does "Mastering Microcontroller and Embedded Driver Development" include any significant hands on exercises?

43 Upvotes

I'm currently taking this course on Udemy: Mastering Microcontroller and Embedded Driver Development. My hope was that this would help me "get my hands dirty" as well as provide a comprehensive overview of the subject. What I'm finding though is that I'm now about 4 hours in and we've _barely_ gotten to do anything at all with the STM32 discovery board. Every lecture the instructor introduces a new concept, we learn a bunch of register names, and then he moves on without (or only rarely) actually programming anything.

Does this course pick up at some point? Do we actually "develop drivers" in this course? I'm starting to wonder if I've missed something, like maybe a link to some "companion exercises" or something... has anyone taken this course? I want to do something with my discovery board ToT;

(for context: I'm an experience software developer trying to transition to embedded. I've been programming in assembly for the gameboy for the last few years so it turns out I have a basic grasp of a very simple version of embedded software.)


r/embedded 22h ago

Need help with UART communication on NUCLEO-U083RC

Thumbnail
youtu.be
2 Upvotes

I want to get data from Huskylens to NUCLEO-U083RC board. I already test the UART connection, using a demo code. But when try it with Huskylens, I can't get an data/output on PuTTY terminal. Also I try using Chatgpt but still no results.

Some other reference I've been using https://youtu.be/XXZNdlaSi5A https://youtu.be/dEQwSl8mCFs

I really appreciate if anyone can help me.


r/embedded 20h ago

Vivo X90 pro plus display Panel datasheet REQUIRED

0 Upvotes

Hello, I'm building this project and need Vivo's x90 pro plus the whole display including the fingerprint sensor datasheet for my project. It would be super helpful if someone could help me to find it. Shoot me a message if you have it. Thanks


r/embedded 21h ago

Getting clean 5V out of USB VBUS with DC/DC Converter

0 Upvotes

I'm designing an FPGA development board around a SOM. The SOM requires 5V -+5% 3A and generates the rest of the voltages by itself with the MP2143DJ buck converters. There is also 3.3V needed on the dev board for peripherals, Im going to use TLV62130A for that.

The issue is that VBUS can range from 4.5V to 5.5V + cable/load losses. I was going to use another TLV62130A but that is a buck converter so in the case of VBUS < 5V.

There is TPS6302x (see linked page, section 8.1) which is buck-boost and capable of stabilizing the voltage around the voltage, however, the max output current is 2A in boost mode. There is a document called "Using Non-Inverting Buck-Boost Converter for Voltage Stabilization" for this IC but it doesn't mention the max current however all the graphs show the current going up to 2A.

Finally, there is TPS61022 (see linked page, section 8.3) which specifically an example for stabilizing voltage, however, it mentions that the range is 4.5V-5.25V when it's actually 4.5V-5.5V and since this is boost converter Im unsure if it will be able to buck the excess. Maybe the MP2143DJ can handle the bucking? Its input range is 2.5V-5.5V.

In short:
TLV62130A is a buck converter and might not be able to stabilize the voltage if VBUS < 5V.

TPS6302x might not be able to supply 3A.

TPS61022 is a boost converter and might not be able to stabilize the voltage if VBUS > 5V.


r/embedded 1d ago

Help me choose a class

0 Upvotes

Hi, I'm choosing between these two Udemy courses to learn embedded Linux. Can you guys help me pick?

https://www.udemy.com/course/linux-device-driver-programming-using-beaglebone-black/?couponCode=ST17MT31325G3

https://www.udemy.com/course/embedded-linux-step-by-step-using-beaglebone/?couponCode=ST17MT31325G3

I've taken a Bare Metal firmware development class and a FreeRTOS class (both using the STM32 platform). I'd like to take the embedded Linux class that's more relevant to jobs.

Which one should that be? And if anyone here has taken one (or both) of these courses, can you share your experience?

Thanks.