Mjukvara på mjuk CPU

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.

Robotkonstruktion och fri mjukvara

Jag och några kollegor bygger en “sumorobot” för att vässa våra hjärnor. Mycket finns att köpa färdig eller i kit för microcontroller, motorstyrning, o.s.v, men vi vill ha någor extra för några av sensorerna. Det är flera år sen jag använde PCB för att konstruera egna kretskort som jag sedan etsade. Nu fick jag en anledning att göra det igen. PCB har blivit en del av gEDA som tillsammans med gschem gör kretskonstruktion och utveckling av kretskort med proffsigt utseende inom räckhåll för hobbyister. Lite rought edges i GUI’t och inconsistent keymapping mellan delprogrammen är irriterande men varje del för sig är enkla att använda. Hittar man inte komponenter i biblioteken som ingår finns det en rik flora från andra användare att söka i, eller själv göra symboler och footprint, enkelt och smidigt.

Kicad är ett alternativ till gEDA med gränsnitt som är lika i både schema-ritaren Eeschema och kretskortdelen Pcbnew. Jag har inte hittat hur man gör incrementel utveckling med Kicad, som gEDA erbjuder med gsch2pcb där ändringar i schema överförs till kretskort med minimala ändringar.

Både gEDA och Kicad är fri mjukvara med aktiva grupper av både utvecklare och användare vilket borgar väl för framtiden.