Programvareutvikling krever bruk av en krysskompilator, som kjører på en datamaskin, men produserer kjørbar kode for målenheten. Feilsøking krever bruk av en in-circuit emulator, og feilsøking maskinvare som JTAG eller SWD debuggers. Programvareutviklere har ofte tilgang til hele kjernekoden (OS).