Att utveckla mjukvara på ett inbyggda system innebär utmaningar i form av korskompilering, begränsade verktyg och lite minne, både RAM och filsystem. Är plattformen dessutom en SoC (system-on-chip) inprogrammerad i en FPGA har man en mjuk CPU. Några exempel är NIOS II, Microblaze och OpenRISC. De två första är skapade av Altera respektive Xilinx och körs på FPGA-chip från samma tillverkare. OpenRISC är en öppen design och kan programmeras i vilken FPGA som helst som är tillräckligt stor. Linux är förstås portad till alla tre.
Senaste nyheter om Linux på OpenRISC finns på http://openrisc.net/.
En av de saker som skiljer mellan att programmera för en traditionell SoC-platform med PPC eller ARM jämfört med OpenRISC är att hittar du ett fel i hårdvaran i den traditionella plattformen, måste du antingen jobba runt det i mjukvara, eller välja ett annat chip. Har du tur finns det en annan revision av samma chip utan just “din” bugg. Med en mjuk CPU kan du övertyga dina kollegor med Verilog-/VHDL-koden att syntetisera en ny FPGA-image att köra på. Skillnaden är alltså att ladda på en FPGA-image på några minuter och att ställa om tillverkningen av fysiska chip i en fab.