title: Understanding linker script NOLOAD sections in embedded software
body: <p>According to the GNU documentation for <code>ld</code>, a <code>NOLOAD</code> section works as following:</p>
  
  <blockquote>
    <p>The `(NOLOAD)' directive will mark a section to not be loaded at run
    time. The linker will process the section normally, but will mark it
    so that a program loader will not load it into memory.</p>
  </blockquote>
  
  <p>Now, regarding to the <em>program loader</em>, accordign to wikipedia:</p>
  
  <blockquote>
    <p>Embedded systems typically do not have loaders, and instead, the code
    executes directly from ROM. In order to load the operating system
    itself, as part of booting, a specialized boot loader is used.</p>
  </blockquote>
  
  <p><strong>Then, what exactly a <code>NOLOAD</code> section does for FW / embedded software?</strong></p>