<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ firmware - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Browse thousands of programming tutorials written by experts. Learn Web Development, Data Science, DevOps, Security, and get developer career advice. ]]>
        </description>
        <link>https://www.freecodecamp.org/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ firmware - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Fri, 29 May 2026 16:31:53 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/news/tag/firmware/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ What is Firmware? Definition and Examples ]]>
                </title>
                <description>
                    <![CDATA[ Did you know that firmware is literally everywhere? It might be strange to think about – but it's just as common as hardware and software. In fact, it is thanks to firmware that: Printers work Defibrillators work Car radios works and more … Based o... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/what-is-firmware/</link>
                <guid isPermaLink="false">66ba536002e3361751683723</guid>
                
                    <category>
                        <![CDATA[ firmware ]]>
                    </category>
                
                    <category>
                        <![CDATA[ hardware ]]>
                    </category>
                
                    <category>
                        <![CDATA[ software ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Tiago Capelo Monteiro ]]>
                </dc:creator>
                <pubDate>Thu, 21 Apr 2022 18:40:08 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2022/04/postimage.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>Did you know that firmware is literally everywhere? It might be strange to think about – but it's just as common as hardware and software.</p>
<p>In fact, it is thanks to firmware that:</p>
<ul>
<li>Printers work</li>
<li>Defibrillators work</li>
<li>Car radios works</li>
<li>and more …</li>
</ul>
<p>Based on the examples above, you probably already have some idea of what firmware is. But you don't have a clear definition of it.</p>
<p>In order to truly understand what firmware is, we must first understand software, then hardware, and finally we can jump into firmware.</p>
<p>In this tutorial, I'll explain each topic with an analogy. By doing so, everyone can understand.</p>
<p>It doesn't matter if you're just getting into technology!</p>
<p>With that, I would like to make sure that everyone understands what software, hardware, and firmware is. I will not elaborate on the technical terms.</p>
<h3 id="heading-in-this-article-we-will-explore">In this article we will explore:</h3>
<ul>
<li>What exactly is software?</li>
<li>What exactly is hardware?</li>
<li>What exactly is firmware?</li>
</ul>
<h2 id="heading-what-is-software">What is Software?</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/03/book.jpeg" alt="Image" width="600" height="400" loading="lazy">
_Photo by [<strong>Pexels</strong>](https://www.pexels.com/@kubra-dogu-80605500?utm_content=attributionCopyText&amp;utm_medium=referral&amp;utm_source=pexels" rel="noopener"&gt;<strong>Kübra Doğu</strong> from &lt;a href="https://www.pexels.com/photo/food-wood-dawn-coffee-9222655/?utm_content=attributionCopyText&amp;utm_medium=referral&amp;utm<em>source=pexels" rel="noopener)</em></p>
<p>Imagine, if you will, that you have no idea what to make for dinner today.</p>
<p>Luckily, you find an old cookbook you have and decide to cook one of the recipes in it.</p>
<p>The cookbook has many recipes. Each of these recipes has its own instructions.</p>
<p>In the <strong>cookbook</strong>, a <strong>recipe</strong> can be seen as a <strong>set of steps</strong> (or instructions) that together make a <strong>meal</strong>.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/cooking-instruction.jpg" alt="Image" width="600" height="400" loading="lazy">
<em>Photo by <a target="_blank" href="https://www.pexels.com/photo/open-bible-2294878/">Luis Quintero on Pexels</a></em></p>
<p>You can also create your own meals based on your experience in cooking many different recipes, right?</p>
<p>Software is no different.</p>
<p><strong>Software programs</strong> can be seen as a <strong>set of instructions</strong> that work together to form a <strong>program</strong>.</p>
<pre><code class="lang-assembly"> global  _main
    extern  _printf

    section .text
_main:
    push    message
    call    _printf
    add     esp, 4
    ret
message:
    db  'Hello, World', 10, 0
</code></pre>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/HelloWorld.asm.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Then, applications are a big sets of instructions that perform specific tasks.</p>
<p>Operating systems are big sets of instructions that coordinate software and hardware resources.</p>
<ul>
<li>Cookbook = software</li>
<li>Dinner cookbook = type of software (application or operating system)</li>
<li>Recipe = program</li>
</ul>
<p>You need a recipe to make dinner. You must follow each step in the cookbook to create a recipe.</p>
<p>Once you have completed all the steps, your dinner is ready.</p>
<p>You need software to accomplish a particular task. A computer has to follow all instructions for the software to function. </p>
<p>Therefore, the software is running either while the instructions are being followed or after they have been completed.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/recipie---cooking-instructions.png" alt="Image" width="600" height="400" loading="lazy"></p>
<h2 id="heading-what-is-hardware">What is Hardware?</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/03/food.jpeg" alt="Image" width="600" height="400" loading="lazy">
_Photo by [<strong>Pexels</strong>](https://www.pexels.com/@elevate?utm_content=attributionCopyText&amp;utm_medium=referral&amp;utm_source=pexels" rel="noopener"&gt;<strong>ELEVATE</strong> from &lt;a href="https://www.pexels.com/photo/chef-preparing-vegetable-dish-on-tree-slab-1267320/?utm_content=attributionCopyText&amp;utm_medium=referral&amp;utm<em>source=pexels" rel="noopener)</em></p>
<p>In order to make dinner, you need a series of steps from the cookbook that tell you how to make a particular meal.</p>
<p>You also need various tools to cook with - like pots and pans, knives, and the food itself. This is like hardware.</p>
<p>So a cookbook gives you instructions that allow you to cook.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/cooking-process-1.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>For hardware to work, it needs software (a set of instructions) to tell it what to do.</p>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/CPU-process-2.png" alt="Image" width="600" height="400" loading="lazy"></p>
<p>Software then, gives instructions to hardware that lets it work.</p>
<ul>
<li>Meal prep tools = hardware</li>
<li>Recipe = software</li>
</ul>
<p>Without software, you can't make hardware work.</p>
<p>Without a recipe, you won't know what to do with your various tools and ingredients to make a meal.</p>
<p>Like hardware without software, you can also eat a meal with just uncooked food. Gross.</p>
<p>In the same way that there are various types of meals, there are also various types of computer hardware.</p>
<p>For example:</p>
<ul>
<li>CPU</li>
<li>RAM</li>
<li>GPU</li>
<li>and so much more…</li>
</ul>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/04/comparason-of-processes.png" alt="Image" width="600" height="400" loading="lazy">
<em>Comparison of processes</em></p>
<h2 id="heading-what-is-firmware">What is Firmware?</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2022/03/dessert.jpeg" alt="Image" width="600" height="400" loading="lazy">
_Photo by [<strong>Pexels</strong>](https://www.pexels.com/@ella-olsson-572949?utm_content=attributionCopyText&amp;utm_medium=referral&amp;utm_source=pexels" rel="noopener"&gt;<strong>Ella Olsson</strong> from &lt;a href="https://www.pexels.com/photo/close-up-photo-of-chocolate-mousse-3026810/?utm_content=attributionCopyText&amp;utm_medium=referral&amp;utm<em>source=pexels" rel="noopener)</em></p>
<p>A program is a set of instructions read by a computer.</p>
<p>Let's say you just want to make a snack or dessert. You probably don't need as many ingredients as when making a dinner for your family, right?</p>
<p>Let's say you want software that runs on a microwave. You don't need all the hardware the computer has to make the microwave work, right? You just need that specific to making the microwave work.</p>
<p>Or say you want software running on a printer. You don't need all the hardware the computer has to make the printer work right? Just the software for the printer.</p>
<ul>
<li>Microwave software = firmware</li>
<li>Printers software = firmware</li>
</ul>
<p>So this means that firmware is nothing more than software, but in a hardware device. Not in a computer.</p>
<p>Firmware lets very specific hardware complete very specific tasks.</p>
<h2 id="heading-wrapping-up">Wrapping up</h2>
<p>Thanks for reading! Now you know more about:</p>
<ul>
<li>Software</li>
<li>Hardware</li>
<li>Firmware</li>
</ul>
<p>Microprocessor photo by <strong><a target="_blank" href="https://www.pexels.com/@pok-rie-33563?utm_content=attributionCopyText&amp;utm_medium=referral&amp;utm_source=pexels">Pok Rie</a></strong> from <strong><a target="_blank" href="https://www.pexels.com/photo/dell-motherboard-and-central-processing-unit-1432675/?utm_content=attributionCopyText&amp;utm_medium=referral&amp;utm_source=pexels">Pexels</a></strong> </p>
 ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
