Global delivery from Hanoi, Vietnam ISO 9001:2015   ISO 27001:2013 [email protected] (+84) 989 324 830

What is embedded software? Definition, examples, trends, and how it gets built

A large chip with its top lifted to reveal a small gear mechanism, connected by hairlines to silhouettes of a car, a washing machine and a medical monitor
Embedded software is the program that runs inside a device and is judged by what the device does.

In short

Embedded software is the program that runs inside a device whose main purpose is not computing: the controller in a washing machine, the firmware in a heart rate monitor, the code coordinating sensors and actuators in a car. It differs from application software in four ways that shape every engineering decision: it runs on constrained hardware with fixed memory and power budgets, it frequently has hard timing requirements where a late answer is a wrong answer, it is difficult or impossible to update after shipping, and a defect can damage property or hurt people. The field is changing quickly: Linux and real-time operating systems now coexist on the same board, Rust is displacing C in new safety-sensitive code, over-the-air updates have become a baseline expectation, and machine learning inference is moving onto microcontrollers. Building embedded software well means treating hardware and software as one program, testing on real silicon early, and designing the update path before the first unit ships.

Most software people encounter runs on a computer they can see: a laptop, a phone, a server. Embedded software runs on the computers people cannot see, inside the thermostat, the insulin pump, the car door, the factory robot, the router, and the smartwatch. There are tens of billions of these devices in service, and almost every physical product with a power switch now contains one.

This article explains what embedded software is, how it differs from the application software most teams are used to, where it shows up, how the field is changing in 2026, and how a project actually moves from a hardware idea to a shipped device. It is written for product and engineering leaders deciding whether and how to build a connected product, not for firmware engineers who already live in this world.

It also names the failure patterns, because embedded projects fail differently from app projects. The same software engineering discipline applies, but the cost of a late-discovered defect is measured in recalled units rather than a hotfix, and that one difference changes how the work should be planned.

Key takeaways

  • Embedded software is defined by its constraints, not its size: fixed memory, power budgets, timing deadlines, physical consequences, and a hard or impossible update path.
  • The classic split between bare-metal firmware, RTOS, and embedded Linux is now a spectrum, and many products run two of the three on one board.
  • Rust is the most consequential language shift in the field in decades because it removes the memory bugs that have dominated embedded vulnerability reports, and it is now viable on mainstream microcontrollers.
  • Over-the-air updates changed the economics of embedded products: a device that can be patched has a different risk profile, warranty model, and revenue model than one that cannot.
  • Edge AI on microcontrollers is real but narrow: keyword spotting, anomaly detection, and simple vision run well; anything larger still needs an application processor or the cloud.
  • Projects fail on hardware and software being scheduled as separate tracks, on testing that never touches real silicon until late, and on ignoring the update and security path until after launch.

What is embedded software, precisely?

A laptop with many overlapping windows beside a sealed appliance box with one button and one light and a chip arrow pointing into it
General software runs on a machine that does many things; embedded software runs a machine built to do one thing well.

Embedded software is software written to run inside a device whose primary purpose is something other than general computing. The device has a specific job, controlling a motor, reading a sensor, managing a battery, displaying a reading, and the software exists to do that job within the physical limits of the hardware it lives on. The term covers everything from a few kilobytes of bare-metal code on an eight-bit microcontroller to a full Linux distribution on a multi-core automotive processor, and the common thread is not size but constraint.

Four constraints define the category. Resources are fixed: the memory, processing power, and energy available are decided when the hardware is designed and cannot be scaled up later. Timing often matters absolutely: an airbag controller that computes the correct answer a few milliseconds late has failed. Updates are hard: some devices can never be updated after shipping, others only through a physical connection, and even connected devices face bricking risk if an update goes wrong. Consequences are physical: a defect can burn out a component, damage what the device controls, or injure a person.

Firmware is a closely related term and the two are often used interchangeably. Strictly, firmware is the lowest layer of embedded software, stored in non-volatile memory and responsible for initializing hardware and providing the most basic services. On a small microcontroller the firmware is the entire program. On a larger system the firmware boots the device and hands control to an operating system and applications, and the whole stack is embedded software.

Embedded software against application software

DimensionApplication softwareEmbedded software
HardwareGeneral purpose, abundant, scalableSpecific, constrained, fixed at design time
TimingFast is niceDeadlines are often correctness requirements
MemoryGigabytes, garbage collectedKilobytes to megabytes, often manually managed
PowerWall or large batteryCoin cell to years on one charge in some products
UpdatesContinuous, minutes to deployDifficult, risky, sometimes impossible
FailureAn error message, a retryPhysical damage, safety incident, recall
TestingAutomated on any machineRequires the target hardware or an accurate simulation of it

The differences are constraints, not capabilities. An embedded engineer can do anything an application engineer can, within a budget the hardware fixed months earlier.

What constrains embedded software, and how hardHorizontal bar chart scoring six embedded software constraints on an illustrative severity index. Update difficulty scores about 90 and is highlighted, with the note bricking risk and no rollback. Physical consequences score about 85, noting damage, injury, and recall. Timing deadlines score about 80, noting that late is wrong. Memory and storage score about 70, noting kilobytes and fixed. Power budget scores about 65, noting years on a coin cell. Testing access scores about 60, noting the need for real silicon. The annotation states that over-the-air updates done well move the top bar the most. The values are illustrative judgments, not measurements. 0 25 50 75 100illustrative constraint severity, index Update difficulty 90 Bricking risk, no rollback Physical consequences 85 Damage, injury, recall Timing deadlines 80 Late is wrong Memory and storage 70 Kilobytes, fixed Power budget 65 Years on a coin cell Testing access 60 Needs real silicon OTA done well moves this bar most
Illustrative severity of each constraint relative to application software. The update constraint is the one that has changed most, and the one that still decides the risk profile.

Where does embedded software run? Examples across industries

Six product silhouettes in a grid, a car dashboard, an infusion pump, a robot arm, a thermostat, a drone and a payment terminal, each with a small glowing chip inside
Automotive, medical, industrial, consumer, aerospace and payments all depend on the same class of software.

Automotive is the largest single market and the one with the most demanding mix of requirements. A modern car contains dozens to over a hundred electronic control units running embedded software: engine and battery management, braking and stability, airbags, infotainment, driver assistance, body electronics. The industry has its own functional safety standard, ISO 26262, and is in the middle of a shift from many small controllers to a few powerful zonal computers, which is changing what embedded software in a car looks like.

Medical devices are the most tightly regulated corner. Infusion pumps, pacemakers, ventilators, glucose monitors, and diagnostic instruments all run embedded software whose defects can directly harm patients, and regulators require documented development processes, risk analysis, and verification evidence under IEC 62304 and national device rules. Industrial automation, from programmable logic controllers to robot arms to the sensors on a production line, sits nearby with its own standards and a long product life that can stretch to decades.

Consumer electronics and the Internet of Things are the highest-volume categories: wearables, smart home devices, appliances, cameras, routers, and the trackers on shipping containers. Constraints here are cost and power rather than safety, and the engineering challenge is doing something useful on a chip that costs a dollar and a battery that has to last a year. Fleet telematics is a concrete example this site covers in depth: the connected sensors in fleet management are embedded systems whose firmware decides what to sample, what to store, and when to transmit, and whose design determines the data quality of everything downstream.

Terms you will meet in an embedded project

MCU (microcontroller)
A single chip with processor, memory, and peripherals. Runs bare-metal code or a real-time operating system. Kilobytes to a few megabytes of memory.
MPU or SoC (application processor)
A more powerful processor, usually with external memory, capable of running Linux or Android. Used where a rich interface or heavy computation is needed.
RTOS (real-time operating system)
A small operating system that guarantees tasks run within known time bounds. FreeRTOS, Zephyr, and ThreadX are common examples.
Bare metal
Software running directly on the hardware with no operating system. Maximum control, minimum abstraction.
BSP (board support package)
The drivers and configuration that make an operating system run on one specific board. Often the hidden schedule risk.
OTA (over-the-air update)
Updating device software remotely. Requires a secure bootloader, a rollback path, and careful power-failure handling.
HIL (hardware-in-the-loop)
Testing embedded software against real hardware or simulated signals driven by a test rig, so the timing and electrical behavior are real.

The embedded software stack: bare metal, RTOS, and embedded Linux

Three block towers of increasing height on chips, the second with a clock-like scheduler disc and the third with a wide kernel slab and library boxes
More layers buy features and speed of development; fewer layers buy determinism and a smaller footprint.

Embedded software has historically been described as three tiers. Bare-metal code runs directly on a microcontroller with no operating system, giving total control over timing and memory at the cost of writing every service yourself. A real-time operating system adds task scheduling, timers, and communication primitives with guaranteed timing, and is the default for anything that has to do several things at once with deadlines. Embedded Linux brings a full operating system with networking, file systems, and a vast library ecosystem, at the cost of larger hardware, longer boot times, and no hard real-time guarantees without additional work.

The 2026 reality is that these tiers coexist on a single product. A smart appliance might run Linux on an application processor for its touchscreen and cloud connection while a separate microcontroller running an RTOS handles the motor and safety interlocks. Automotive zonal computers pair a Linux or Android instance for infotainment with a real-time core for vehicle functions, isolated by a hypervisor. Even single chips now ship with heterogeneous cores intended for exactly this split. The architecture question is no longer which tier, but how the tiers talk to each other and where the safety boundary sits.

Choosing the stack follows the requirements. Hard timing, low power, and low cost push toward a microcontroller with an RTOS or bare metal. A rich user interface, complex networking, or heavy computation pull toward Linux on an application processor. Safety requirements often mandate isolating the critical functions on their own controller regardless of what the rest of the product runs, because certifying a small RTOS image is tractable and certifying a Linux distribution is not.

Choosing a tier by requirement

Bare metalRTOSEmbedded Linux
Hard real-time deadlinesYesYesPartial
Sub-milliwatt sleep powerYesYesNo
Rich graphical interfaceNoPartialYes
Full TCP/IP, TLS, cloud SDKsNoPartialYes
Safety certification tractableYesYesNo
Unit cost under a few dollarsYesYesNo
Large third-party library ecosystemNoPartialYes
One product, two tiers: how a modern connected appliance is partitionedArchitecture diagram with three tiers. At the top, cloud and app, off the device: a fleet OTA service, telemetry, and a companion mobile app. In the middle, the application core running embedded Linux: touch interface, Wi-Fi with TLS, an OTA client, and feature logic. At the bottom, the real-time core running an RTOS on a microcontroller: motor control, sensors, safety interlocks, and a watchdog. The link between the top two tiers reads signed updates down and telemetry up over TLS. The link between the bottom two tiers reads a message protocol over a serial link, labeled as the safety boundary.Cloud andappOff the device Fleet OTA service Telemetry Companion mobile app Signed updates down, telemetry up, over TLSApplicationcoreEmbedded Linux Touch interface Wi-Fi, TLS OTA client Feature logic Message protocol over a serial link; the safety boundaryReal-timecoreRTOS on MCU Motor control Sensors Safety interlocks Watchdog
Linux on the application processor for the interface and the cloud; an RTOS on a separate microcontroller for the motor and the interlocks. The boundary between them is the safety boundary.

Languages: why C still dominates and why Rust is displacing it

A worn classic chisel beside a newer chisel with a finger guard, both pointing at the same block of material
C still owns the installed base; Rust wins new safety-critical work by making a whole class of memory bugs impossible.

C has been the language of embedded software for four decades, and it still runs most of the devices in service. It compiles to small, predictable machine code, maps directly onto hardware registers, has a toolchain for every processor ever made, and is what the existing drivers, RTOS kernels, and vendor SDKs are written in. C++ is common where the product is large enough to want abstraction, particularly in automotive and industrial systems. Neither is going away: the installed base and the vendor ecosystem guarantee that C and C++ skills remain central to embedded work for years.

The problem with C is that the bugs it permits, buffer overflows, use-after-free, null dereferences, data races, are exactly the bugs that dominate embedded security advisories and a large share of field failures. Static analysis, coding standards like MISRA, and disciplined review reduce them but do not eliminate them, and the cost of a memory-safety defect in a device that cannot be patched is severe. Rust addresses this class of bug at the language level: its compiler rejects programs that could exhibit them, without a garbage collector and with performance and footprint comparable to C.

Rust in embedded is no longer experimental. The embedded working group has stable support for the mainstream ARM Cortex-M and RISC-V microcontrollers, the Linux kernel accepts Rust drivers, major silicon vendors ship Rust HALs, and automotive and aerospace suppliers have production Rust code in flight. The realistic 2026 posture for a new product is C for the vendor-supplied layers you do not want to rewrite, and Rust for new code that handles untrusted input, parses protocols, or manages memory in ways where a mistake would be expensive. The transition cost is real, because Rust has a learning curve and the embedded ecosystem is smaller, but the cost of the alternative shows up in recall notices.

Where the embedded code lives by language, then and nowStacked share chart with three rows summing to one hundred percent across four language segments: C, C++, Rust, and other. A typical new product in 2018: C about 70 percent, C++ about 22, Rust about 1, other about 7. A typical new product in 2026: C about 45, C++ about 20, Rust about 25, other about 10. Security-sensitive new code in 2026: C about 25, C++ about 15, Rust about 55, other about 5. The chart illustrates the shift of newly written code toward Rust, concentrated in the parts that handle untrusted input or manage memory, while vendor layers remain in C. Shares are illustrative. Typical new product,2018 70% 22% 7% Typical new product,2026 45% 20% 25% 10% Security-sensitivenew code, 2026 25% 15% 55% C C++ Rust Other
Illustrative language shares in new embedded code. C remains the base for vendor layers; Rust takes the new code where a memory bug would be expensive.
A central chip with four arrows leading to a neural mesh, a padlock, a cloud with a download arrow and a stack of identical modules
On-device AI, security by regulation, over-the-air updates and modular hardware platforms are reshaping the work.

Over-the-air updates have gone from a differentiator to a baseline expectation, and they change the economics of the whole category. A device that can be updated has a security story, can receive features after purchase, can be fixed without a recall, and can support a subscription model; a device that cannot is a liability from the moment a vulnerability is found. Doing OTA well is a serious engineering problem: a secure bootloader that verifies signatures, an A/B partition scheme or equivalent so a failed update rolls back, resilience to power loss mid-write, and a fleet management backend that stages rollouts and watches for failures.

Machine learning inference is moving onto the device. Keyword spotting, gesture recognition, vibration-based anomaly detection, and simple image classification now run on microcontrollers using frameworks designed for kilobytes of memory, and application processors handle considerably more. The motivation is latency, privacy, bandwidth, and the ability to work offline. The limits are equally real: model size, power, and the difficulty of updating a model in the field, which loops back to OTA. Edge AI is best understood as a new kind of sensor processing rather than as cloud AI relocated.

Security regulation has arrived. The EU Cyber Resilience Act, national IoT security laws, and sector rules in automotive and medical now impose concrete obligations: no default passwords, a vulnerability disclosure process, security updates for a defined support period, and secure-by-default configuration. For many product companies this is the first time embedded security has been a legal requirement rather than a best practice, and it makes the update path a compliance question. Alongside these, the shift to Rust, the consolidation onto Zephyr and other open RTOS platforms, the rise of RISC-V as a credible alternative to ARM, and the automotive move to zonal architectures and software-defined vehicles round out the picture of a field changing faster than it has in decades.

Three trends, three practical consequences

OTA Updates are the security and revenue story Design the bootloader, rollback, and fleet backend before the first unit ships. Retrofitting OTA is close to impossible.
Edge AI Inference on the device, narrowly scoped Keyword spotting, anomaly detection, simple vision on microcontrollers. Larger models still need an application processor or the cloud.
Regulation Security is now a legal requirement EU Cyber Resilience Act and national IoT laws: no default passwords, disclosure process, defined support period for updates.

How embedded software gets built: hardware and software as one program

The defining feature of an embedded project is that the hardware is being designed at the same time as the software, and each constrains the other. Requirements have to cover both: what the device does, how fast, how long on a battery, in what environment, under what safety and regulatory rules. Architecture then partitions the work: which functions go on which processor, what operating system each runs, how they communicate, where the safety boundary sits, and how updates will work. Getting this wrong is expensive because changing a board after it is fabricated costs weeks and money, so the early architecture phase carries more weight than in application software.

Development proceeds in parallel tracks that must synchronize. Hardware engineers design and fabricate prototype boards in a series of revisions. Firmware engineers begin on development kits and simulators, then move onto the first boards as they arrive, and the board support package, the layer that makes the software run on this specific hardware, is often where the schedule slips, because it depends on both tracks and is nobody's favorite job. Application logic, connectivity, and any cloud or mobile companion software proceed alongside, and the mobile or web companion app frequently turns out to be a larger codebase than the firmware itself.

Testing is where embedded differs most from application software. Unit tests run on the host machine for portable logic. Integration tests run on the target hardware, because timing, peripherals, and electrical behavior cannot be faked. Hardware-in-the-loop rigs drive the device with simulated sensor signals and check its outputs, and are essential for anything safety-related. Environmental testing covers temperature, vibration, and power variation. Certification testing, for radio emissions, electrical safety, and any sector rules, runs at the end and cannot be rushed. A project plan that puts testing on real silicon in the final month has scheduled its own failure.

An embedded product program, phase by phase

  1. Requirements and feasibility4 to 8 weeks

    Function, timing, power, environment, regulatory scope, unit cost target. Processor and connectivity shortlist.

    Done when Signed requirements and a costed architecture with the safety boundary drawn.

  2. Architecture and first board8 to 14 weeks

    Partition across processors, choose OS per core, design the update path, fabricate revision A boards. Firmware starts on dev kits.

    Done when Revision A boards power on and run a bring-up image.

  3. Firmware and integration12 to 24 weeks

    BSP, drivers, application logic, connectivity, companion software, OTA. Revision B and C boards fix what A taught.

    Done when Feature-complete build on near-final hardware passing integration tests.

  4. Verification and certification8 to 16 weeks

    HIL, environmental, security review, radio and safety certification, pilot units in the field.

    Done when Certificates in hand, field pilot stable, production build frozen.

  5. Production and sustainmentProduct lifetime

    Manufacturing test, fleet monitoring, security updates for the committed support period.

    Done when End of support communicated and honored.

Durations are typical for a connected consumer or industrial device of moderate complexity. Safety-certified products run longer at every phase.

Hardware, firmware, and companion software as parallel tracks that must meetSwimlane diagram with three lanes across four time periods spanning twelve months. Hardware: requirements, processor choice and schematic; revision A fabricated and brought up; revisions B and C fixing what A taught; design frozen with manufacturing test. Firmware: architecture, development kits and secure boot design; board support package and drivers on revision A; application logic, OTA and a hardware-in-the-loop rig running; verification, security review and certification. Cloud and app: data model and fleet OTA service design; telemetry pipeline and app skeleton; companion app and rollout staging; field pilot and support tooling. The lanes show that the three tracks proceed in parallel and synchronize at each board revision. Months 1-2 Months 3-5 Months 6-9 Months 10-12 Hardware Requirements,processor choice,schematic Revision Afabricated andbring-up Revisions B and Cfix what A taught Design frozen,manufacturing test Firmware Architecture, devkits, secure bootdesign BSP and drivers onrevision A Application logic,OTA, HIL rigrunning Verification,security review,certification Cloud and app Data model, fleetOTA service design Telemetrypipeline, appskeleton Companion app,rollout staging Field pilot,support tooling
The tracks synchronize at each board revision. Bring-up on revision A within days is the first real integration test; certification is the last.

Where embedded projects fail, and how experienced teams avoid it

Two puzzle-piece pairs of a hardware board and a software listing, one fitted late with a crack and one fitted early with a test clamp
Late hardware-software integration and untested assumptions about timing are the two failure modes experienced teams design out from day one.

The first failure pattern is treating hardware and software as separate projects with a handoff between them. Firmware written against a specification rather than a board meets reality late, and the reality includes a pin that was mislabeled, a peripheral that behaves differently from its datasheet, and a power rail that sags under radio transmission. Teams that avoid this put firmware engineers in the hardware reviews, get bring-up code running on the first board revision within days of its arrival, and treat the board support package as a first-class deliverable with its own owner.

The second is testing that touches real hardware only at the end. Host-side unit tests are valuable but cannot catch timing, interrupt, and peripheral bugs, which are the bugs embedded systems actually have. Continuous integration that flashes every build onto a rack of real devices and runs the integration suite there is the norm on healthy projects, and hardware-in-the-loop rigs for safety functions are not optional. The third is deferring security and updates: a product designed without a secure bootloader, a signed update path, and a rollback mechanism cannot acquire them later without a hardware change, and the regulatory environment now makes that omission a compliance failure as well as a technical one.

The fourth is underestimating sustainment. Embedded products live for years, sometimes decades, and the software has to be maintained for that period: security updates, component end-of-life substitutions that require driver changes, toolchain updates, and certification renewals. The team that built the product will move on; the documentation, reproducible build environment, and test rigs they leave behind determine whether the product can be maintained at all. Experienced teams archive the exact toolchain in a container, keep a hardware library of every board revision, and write the sustainment plan into the original contract.

What separates shipped embedded products from canceled ones

Do this

  • Firmware on board revision A within daysBring-up code is the first integration test. Every week of delay hides hardware problems.
  • CI that flashes real devicesA rack of target boards runs the integration suite on every build. Timing bugs surface daily, not at certification.
  • Secure boot and OTA designed firstSigned images, A/B rollback, power-loss safety. These are hardware decisions and cannot be retrofitted.
  • Toolchain archived in a containerThe product will outlive the laptops it was built on. A reproducible build is the sustainment plan.

Not this

  • Firmware written to the spec, not the boardMeets the mislabeled pin and the sagging power rail in the final month.
  • Host-only testing until the endCatches logic bugs, misses every interrupt, timing, and peripheral bug the device actually has.
  • Security as a later phaseA device without a secure bootloader cannot get one by software update. Now a legal problem too.
  • No sustainment budgetA ten-year product with a one-year engineering plan is a recall waiting for its vulnerability.
Which tier should this function run on?Decision tree with one root question, what does this function need most, deadlines and certification or richness and connectivity, and four branches. A hard deadline or safety requirement routes to an RTOS on a microcontroller, small and certifiable behind the safety boundary. Ultra-low power and tiny unit cost route to bare metal with no operating system overhead and every service written by hand. A screen, networking, or heavy computation route to embedded Linux with its rich ecosystem but no hard real-time guarantees without extra work. Functions needing both kinds at once route to two cores, split with a message protocol between them forming the boundary. What does this function need most: deadlines andcertification, or richness and connectivity? Deadline or safety RTOS on MCU Small, certifiable,isolated behind thesafety boundary Lowest power, cost Bare metal No OS overhead; everyservice written byhand Screen, network Embedded Linux Rich ecosystem; nohard real-timewithout extra work Both at once Two cores Split it; messageprotocol between themis the boundary
The partition decision as a tree. Safety and timing pull functions onto a certified real-time core; interface and connectivity pull them onto Linux.

Buying embedded engineering: what to ask a partner

Embedded engineering is a specialist discipline and the skill set is scarcer than application development, so many product companies engage a partner for some or all of the work. The questions that separate capable partners from generalists are concrete. Which processor families and operating systems have they shipped on, in production, recently. Can they show a board support package they wrote, and how they tested it. What does their continuous integration look like, and does it flash real hardware. How have they implemented secure boot and OTA, and what happened when an update failed in the field. What safety or regulatory standards have they worked under, with evidence.

The division of labor matters as much as the partner. Hardware design, firmware, cloud backend, and companion apps are four disciplines, and a partner strong in one is not automatically strong in the others. A common and sensible arrangement is a hardware specialist for the electronics, an embedded team for firmware and BSP, and a software team for the cloud and the mobile app, with one party owning the integration and the system-level test plan. Ambiguity about who owns integration is the most reliable predictor of schedule slip.

Contracts for embedded work should address intellectual property in firmware and hardware designs explicitly, reproducibility of the build environment as a deliverable, the sustainment period and who provides it, and the certification responsibilities. Fixed-price bids on embedded projects are notoriously unreliable before the first board revision has been tested, because the largest unknowns are in the hardware and software interaction that no one has seen yet. A phased engagement that fixes price per phase after the previous phase has retired its risks is the structure experienced buyers use.

  • Ask for shipped products: processor families, operating systems, and standards, with production evidence, not slides.
  • Ask about the BSP and CI: a board support package they wrote and a pipeline that flashes real devices on every build.
  • Ask about the failed update: every experienced team has one. How it was contained tells you more than any success story.
  • Name the integration owner: one party owns the system-level test plan across hardware, firmware, cloud, and app.
  • Phase the price: fix cost per phase after the previous one has retired its risks; fixed-price before board revision A is a guess.

Frequently asked questions

What is the difference between embedded software and firmware?

Firmware is the lowest layer of embedded software, stored in non-volatile memory, that initializes the hardware and provides basic services. On a small microcontroller the firmware is the whole program, so the terms are used interchangeably. On a larger device the firmware boots the system and hands over to an operating system and applications, and the entire stack, firmware included, is embedded software.

What programming languages are used for embedded software?

C dominates the installed base and the vendor ecosystem, with C++ common in larger automotive and industrial systems. Rust is now production-ready on mainstream microcontrollers and is being adopted for new code that handles untrusted input or manages memory, because it eliminates the memory-safety bugs that dominate embedded vulnerability reports. Python and JavaScript appear on embedded Linux for non-critical logic, and assembly survives in bootloaders and tight interrupt handlers.

Is embedded software the same as IoT?

No. Embedded software is any software running inside a device whose purpose is not general computing, connected or not. IoT refers specifically to devices that connect to a network and usually to a cloud service. All IoT devices run embedded software; many embedded systems, from a microwave controller to an engine control unit, are not IoT. Connectivity adds security, update, and backend requirements on top of the embedded work.

What are the biggest trends in embedded software in 2026?

Over-the-air updates becoming a baseline expectation and a regulatory requirement; Rust displacing C in new safety and security sensitive code; machine learning inference running on microcontrollers for keyword spotting, anomaly detection, and simple vision; security regulation such as the EU Cyber Resilience Act imposing legal obligations; consolidation onto open RTOS platforms like Zephyr; RISC-V emerging as a credible alternative to ARM; and the automotive shift to zonal architectures and software-defined vehicles.

How long does it take to develop embedded software for a new device?

A connected consumer or industrial device of moderate complexity typically takes nine to eighteen months from requirements to production, across requirements and feasibility, architecture and first boards, firmware and integration through several board revisions, and verification with certification. Safety-certified products in medical or automotive run longer at every phase. The board support package and the certification phase are the two most common sources of schedule slip.

Why do embedded projects fail more often than app projects?

Because hardware and software are developed at the same time and each constrains the other, because the bugs that matter most, timing, interrupts, and peripheral behavior, only appear on real hardware, and because defects discovered after shipping cost recalls rather than hotfixes. Projects that succeed run firmware on the first board revision within days, flash real devices in continuous integration, design secure boot and updates before fabrication, and budget for sustainment over the product's lifetime.

When the connected product needs a software partner who owns the integration, AgileTech is an AI native software development company in Vietnam delivering firmware, cloud, and companion apps as one program.

Consult Industry Specialists

Connect with us today to discuss your software development needs and discover how our tailored outsourcing services can propel your business forward.

Start a conversation
AgileTech Vietnam team at the office

Privacy choices

We use one category of strictly necessary first-party storage, which keeps the site working and remembers this choice; it is always active. Every other category is optional and stays off until you switch it on, wherever you are in the world. Two optional categories have something behind them today: Analytics, which is Google Analytics, and External content, which is the Google map of our Hanoi office on the Contact page. Neither runs until you allow it.

Our worldwide approach. We apply one standard to everyone: nothing outside strictly necessary storage runs until you allow it. That meets the EU and UK requirement for prior consent, Vietnam's Law 91/2025/QH15 on personal data protection, the notification and consent requirements of Singapore's PDPA, and US state privacy law. You can withdraw or change your choice at any time, as easily as you gave it, from Privacy choices in the footer.

Where you are connecting from. Our network tells us the country associated with your connection, and we use it to choose which consent policy to apply. We do not use it to work out your address, we do not put it in a cookie, and we never send your IP address to the page. Today every country receives the same strict policy, so it makes no difference to what you see. If your country cannot be determined, or you are using Tor, you get the strict policy too: an unknown location always means the more protective setting, never the weaker one.

If you are in the United States. We do not sell your personal information and we do not share it for cross-context behavioral advertising, so there is nothing to opt out of. We still honor an opt-out preference signal from your browser: if your browser sends Global Privacy Control, the optional categories stay off without you having to do anything.

Full detail, including the name and lifetime of the one cookie we set, is in the Cookie Policy.