Länkskript
Filen som talar om för länkaren var i minnet varje del av programmet ska hamna — på en PC en detalj, i firmware hela kartan.
Ett operativsystem laddar program dit det vill. En mikrokontroller har inget operativsystem, bara flash på en adress och RAM på en annan, och det måste stämma exakt. Länkskriptet (.ld för GNU ld) beskriver minnesområdena i ett MEMORY-block och fördelar sedan sektionerna: kod och konstanter (.text, .rodata) i flash, nollställda variabler (.bss) i RAM.
Det intressanta fallet är .data, initierade variabler, som måste leva i RAM men vars startvärden måste överleva strömavbrott. Skriptet ger dem därför två adresser, en i flash och en i RAM, och startkoden kopierar över dem innan main(). Här definieras också symboler som stackens topp. De flesta tar mallen från tillverkaren och rör den aldrig — tills en bootloader ska få plats.