Blogginlägg -

Nyttan med FreeRTOS

När människor hör ordet ”programmering” tänker nog de flesta på att skapa program för vanliga datorer. Program som du ofta använder, för att spela musik, skriva dokument, titta på film eller vad det nu kan vara.

På senare tid har mobiltelefoner och surfplattor kommit i de flestas händer. Att programmera appar kanske inte så många gör men de flesta har en viss uppfattning om vad det innebär.

Något som de flesta dock har missat helt är att merparten av de program som skrivs aldrig någonsin kommer att användas direkt av någon människa. De visar inte något på någon skärm eftersom de oftast körs på system som helt saknar en skärm. Programmen vi talar om här är de som körs på så kallade inbyggda system. Dessa är, till skillnad från persondatorn eller mobiltelefonen, ofta helt osynliga för oss slutanvändare. De är små, små datorer som sitter i mikrovågsugnar, i hissar, i flygplan, kaffemaskiner, ja kanske till och med i din brödrost.

Inbyggda system är mycket mindre kraftfulla jämfört med till exempel en hemdator. Processorkapacitet och arbetsminne ligger ofta på någon tusendel eller kanske miljondel av vad din hemdator har. Varför? Därför att du som konsument inte vill betala lika mycket för din brödrost som för din dator. Begräns-ningarna i hårdvaran hos inbyggda system gör att traditionella operativsystem som till exempel Windows är helt uteslutna, de skulle inte få plats.

En av de många anledningarna till att man har ett operativsystem är att man vill kunna köra flera program samtidigt, du kanske vill lyssna på musik samtidigt som du surfar exempelvis. Vissa av de allra enklaste inbyggda systemenbehöver bara göra en sak i taget och därför använder de inget operativsystem alls. Du som programmerare har då makten, och ansvaret, över allt som händer i systemet. Avsaknaden av operativsystem gör att dessa program kan köras på väldigt små, enkla (och därmed billiga) system. En annan fördel är att man får en väldig kontroll över timingen i sitt program, alltså inte bara vad programmet gör utan när det blir klart. Ett operativsystem som till exempel Windows eller Linux kommer aldrig ge dig en garanti på när ditt program kommer få tillgång till processorn. Du kommer alltså aldrig kunna garantera att ditt program hinner med sina uppgifter inom en viss tid.

Men ibland klarar man sig inte utan ett operativsystem, till exempel om programmet faktiskt behöver göra flera saker samtidigt, utan att man har resurser nog för ett vanligt operativsystem. Då är FreeRTOS ett jättebra alternativ.

FreeRTOS är, som namnet antyder, ett gratis RealTidsOperativSystem. Fördelen med att det är gratis är uppenbar. Eftersom det är ett operativsystem ger det möjligheten att ditt program kan göra flera saker samtidigt. För att kunna åstadkomma detta skriver man sitt program i flera trådar där varje tråd hanterar en sak.

Att det just är ett realtidsoperativsystem har med timing att göra. FreeRTOS kommer garantera att det som är viktigast att göra blir gjort på direkten och mindre viktiga saker får vänta. FreeRTOS ger nämligen möjlighet att sätta olika prioriteter på olika trådar. Exempelvis kanske man har en tråd som gör något som verkligen måste göras på direkten men går snabbt att göra och något annat som tar mer tid att göra men som bara behöver göras ibland. Då sätter man en högre prioritet på den förstnämnda tråden och lite lägre prioritet på den sistnämnda.

Låt oss säga att tråden med den mindre viktiga uppgiften körs för tillfället. Något händer och plötsligt behöver den viktiga uppgiften göras. Då kommer FreeRTOS göra så att den lägre prioriterade tråden stoppas och istället kommer den högprioriterade tråden köras tills den är klar med det den skulle göra. Därefter kommer FreeRTOS byta tillbaka så att den lägre prioriterade tråden fortsätter köras.

Screenshot. FreeRTOS presentation "Tracealyzer for FreeRTOS"

Källa: Youtube screenshot. FreeRTOS presentation "Tracealyzer for FreeRTOS"

Nu blir du säkert lite fundersam, sa vi inte att ett operativsystem gjorde så flera saker kunde göras samtidigt? Ordet ”samtidigt” är relativt i det här sammanhanget. Om du till exempel lagar mat ”samtidigt” som du städar kommer det sällan innebära att du rör runt i grytan samtidigt som du sopar golvet. Det snarare att du rör runt lite i grytan, lägger ner soppsleven, sen byter till att hålla i sopkvasten, sopar lite, sen byter tillbaks till att röra i grytan, och så vidare. Du byter egentligen bara fram och tillbaka mellan olika uppgifter utan att utföra dem samtidigt. En dator fungerar likadant.

Om du i vårt exempel skulle sopa lite för länge och inte röra runt i grytan kanske det bränner fast. Att röra i grytan har alltså en hård deadline som måste hållas, till skillnad från att sopa som du kan göra lite när som. Eftersom FreeRTOS använder sig av prioritering kan man sätta högre prioritet på trådar som utför viktiga eller akuta uppgifter så dessa hinns med i tid.

FreeRTOS är inte bara gratis, du kan även ladda ner själva källkoden och läsa om du verkligen vill förstå hur den fungerar. FreeRTOS används ofta inom kurser på högskolor och universitet, men finns också i kommersiella produkter.

Nu var det ju det här med storlek, på inbyggda system har man som sagt väldigt ont om plats i både programminnet och i arbetsminnet. På en vanlig dator kan operativsystemet (i dagsläget) uppgå till åtminstone tiotals gigabyte, medan storleken på ett enklare program med FreeRTOS kan vara i storleksordningen tiotals kilobyte. Alltså en fråga om en miljondel så stor.

När det gäller arbetsminne kräver opera-tivsystemet på en persondator några gigabyte medan FreeRTOS klarar sig på några hundra bytes, alltså en fråga om en tiondels miljondel.

Denna skillnad kommer av att FreeRTOS enbart innehåller det allra mest nödvändiga när det gäller att hantera trådar, vilken tråd som skall köras, och kommunikation mellan trådar. Denna minimalism till trots är FreeRTOS mycket kraftfullt för att utveckla både små enkla system liksom stora komplexa system.

Givetvis har FreeRTOS nackdelar också. Eftersom det bara innehåller själva kärnan av vad ett operativsystem behöver kommer du som utvecklare behöva göra mycket själv, som att skriva drivrutiner till de enheter som ditt system ska använda. Det innebär att om du ska flytta ditt program från en sorts processor till en annan kommer du troligtvis behöva skriva om en del kod eftersom exempelvis drivrutiner är väldigt specifika för hårdvaran.

FreeRTOS är bra till mycket men självklart inte till allt. Oavsett vad du skall göra är det självklart viktigt att du använder dig av rätt verktyg för det du ska göra. Förhoppningsvis har den här artikeln gett dig en inblick i när du kan ha nytta av FreeRTOS.

Text: Nils Brynedal Ignell

Hardware Engineer at Addiva Software and Embedded Services


Läs mer ADDERA online här.

Relaterade länkar

Ämnen

  • Data, Telekom, IT

Kategorier

  • embedded
  • digitalisering
  • teknik
  • coding
  • codes
  • freertos
  • programmering
  • ingenjörskonsult

Kontakter

Victoria Ben-Chivar

Presskontakt Marknadskommunikatör Marknad och kommunikation