Proprietärt system

1.1 Den här bokens historia och vad du får ut av att läsa den

Under loppet av ungefär ett år, efter att ha färdigställt min första bok, återupplivade jag ett gammalt favoritprojekt om att bygga en autonom ubåt (kallat E-2-projektet) med vissa ganska utmanande funktionskrav. Under utvecklingen av denna idé tillbringade jag många timmar på Internet och på andra ställen för att undersöka tekniker för snabb utveckling av olika elektromekaniska styrsystem och plattformar för att köra ganska komplexa signalbehandlingsalgoritmer. Även om det naturligtvis finns tusentals användbara projekt och informationsbitar att hämta på Internet och i böcker om hobbyrobotik, upptäckte jag att ingen annan verkade ha exakt samma prioriteringar som jag. I synnerhet finns det tydligen ingen enda referens som samlar åtminstone inledande lösningar på alla de inbyggda konstruktionsfrågor som påverkade mitt projekt: ett behov av att använda billiga verktyg och operativsystem (med öppen källkod), ett krav på flera funktioner med ganska hårda realtidskrav och en önskan att använda billiga komponenter av konsumentkvalitet närhelst det är möjligt. Tillgängliga resurser om många ämnen koncentrerar sig antingen på mycket dyra industriella komponenter som inte finns på hyllan, eller på hårt begränsade system som är byggda kring en enda mikrokontroller, med känsligt optimerad, icke portabel kod för att styra kringutrustning – och dessutom med ett mycket begränsat utbud av stöd för kringutrustning. Dessa sistnämnda begränsningar i systemkonstruktionen är oundvikliga när man arbetar med snäva strömkrav, begränsat utrymme eller en mycket låg materialkostnad, men det är en orimlig ansträngning att bygga och ställa in sådana system för ett engångsprojekt eller en prototyp. Det är dessutom en enorm uppgift att lära sig alla de detaljer som krävs för att montera ett sådant system. Det är lätt att gå vilse i finjustering av detaljer utan att någonsin lyckas få fram ett komplett, fungerande system. Irriterande nog måste många av de finjusteringar och det mesta av den noggranna planeringen som du gör för att få systemet i drift kastas bort om du går över till verklig produktion, eller om du behöver bygga några fler enheter med något annorlunda komponenter.

Vad jag sökte efter när jag utvecklade E-2-projektet var ett sätt att bygga olika hårda realtidsmoduler (sensorer och manöverdon) som enkelt och billigt skulle kunna kopplas till en allmängiltig dator som kör Linux. Linux-boxen fungerade som en testbädd för algoritmer som senare skulle porteras ner till en mindre, svalare och strömsnålare bearbetningsmodul av något slag. Jag behövde en solid grund av känd god kod och teknik så att jag kunde utgå från den punkten och bygga mitt eget skräddarsydda system. Jag ville också ha en enkel och fungerande guide för att bygga inbyggda Linuxdistributioner. För den första prototypen av min ubåt, som inte kunde användas på fältet, hade jag ingen exakt uppfattning om hur mycket CPU-hästkrafter jag skulle behöva i den slutliga versionen – så jag ville inte bli bunden till en specifik mikrokontrollerararkitektur, och jag ville inte heller fastna i att försöka finjustera och ställa in många realtidsuppgifter på en enda mikrokontroller. Jag ville också använda ett fåtal kringutrustning – t.ex. kameror – som är lättast att koppla via ett allmänt operativsystem.

Dessa krav kanske låter som en ackord i ditt eget arbetsliv. Chansen är stor att du har stött på situationer där det skulle vara användbart att automatisera något långvarigt datainsamlingsexperiment eller skapa en enkel automatiserad styrenhet för en programmerings-, tillverknings- eller annan uppgift. I samma anda är tre andra fall där jag har tillämpat teknikerna i den här boken:

Utvecklingen av en rad framgångsrika (kommersiellt inriktade) nätverksbaserade multimedieapparater, utformade för obemannade reklam- och konstgalleritillämpningar.

Utvecklingen av specialiserade, nästan helt automatiska apparater för testning av mekaniska fel för vissa artiklar inom konsumentelektroniken.

Konstruktion av en automatisk höghastighetsdatalogger som övervakar en radiolänk och extraherar DTMF-meddelanden riktade till specifika mottagare.

Den andra punkten ovan är av särskilt intresse, eftersom den på ett bra sätt visar hur den här boken kan vara av praktiskt värde i tillämpningar för processtyrning och provning. Under 2002 arbetade jag en kort tid för en liten avdelning av ett multinationellt företag vars huvudinriktning var hushålls- och kontorsartiklar av plast. Det var mycket lärorikt att undersöka deras automatiserade testfixturer – proprietära system – och jämföra kostnaden och komplexiteten i inställningen av dessa fixturer med den relativt låga kostnaden och inställningstiden för en enkel Linuxbaserad SBC som kontrollerar samma pneumatiska manöverdon och sensorer. Det är uppenbart att det finns en underutnyttjad marknad för billiga testsystem av denna typ. De proprietära system som används vid den här anläggningen kostade nästan 20 000 dollar för ett halvt dussin ställdon och tillhörande PLC:er, plus oräkneliga timmars inställningstid1. Styrprogramvaran för dessa apparater var specialiserad och inte välförståelig. Faktum är att det mesta av denna utrustning stod stilla eftersom de personer som ursprungligen konfigurerade den hade lämnat företaget. Som kontrast kan nämnas att samma uppgifter lätt skulle kunna utföras med en vanlig dator som kostar bara några hundra dollar, plus kanske 200 dollar per manöverdon för den tillhörande pneumatiken. Ännu viktigare är att kontrollprogramvaran för ett sådant system är ett enkelt C-program som lätt kan förstås och anpassas av alla kompetenta studenter i datavetenskap eller elektroteknik; det fanns flera kandidater lätt tillgängliga i företagets labb.

På grund av arten av den forskning som ledde till att den här boken startades har jag inkluderat en mängd detaljer om flottan i texten, som inte alla är direkt relevanta för den inbäddade ingenjören. Om detta material inte är av intresse kan du tryggt ignorera det utan att på något sätt äventyra din förståelse av den övriga texten. Anledningen till att denna information ingår vid sidan av den ”rena” diskussionen om inbyggd utveckling är främst för att illustrera de verkliga kraven och det tänkande som ledde till olika konstruktionsbeslut i E-2-projektet. Ingenjörsvetenskap är inte teoretisk vetenskap; det är en tillämpad disciplin, och det är med detta i åtanke som jag använder specifika exempel för att illustrera teoretiska punkter.

Du bör också notera att en del av de åsikter som uttrycks i den här boken, om än inte direkt kontroversiella (utom enligt Usenet-standarder – allt på Usenet är kontroversiellt!), är åtminstone diskutabla; till exempel valet av AVR som min plattform för realtidsstyrning. Av denna anledning har jag gett ytterligare motiveringar till de beslut jag har fattat i den här texten. Denna ytterligare förklaring bör visa vilka skäl jag hade för att välja specifika vägar, men den är uttryckligen inte utformad för att proselytisera AVR till personer som har erfarenhet av, och föredrar, en annan arkitektur. Återigen, detta ”bonusmaterial” är inte avgörande för din förståelse av de grundläggande begrepp som presenteras här, och du kan tryggt hoppa över det om du vill.

Håll också i minnet att den här boken avsiktligt inte är en ”bibel”. Den är inte en uttömmande täckning av varje enskild nyans av de ämnen som behandlas; ett sådant verk skulle sträcka sig över flera hyllor. Det primära målet med den här boken är att beskriva och illustrera en enkel, modulär och billig metodik för att genomföra komplexa inbyggda system, och att presentera några färdiga moduler som läsaren kan anpassa till sina egna projekt. Särskild tonvikt ligger på att förverkliga helhetslösningar med hjälp av billig utvecklingshårdvara och fria programvaruverktyg. När du når de sista sidorna bör du förhoppningsvis ha följande:

En funktionell förståelse för de kritiska detaljerna ”under huven” som krävs för att starta upp Linux på x86-plattformar.

En introduktion till de typer av problem som du kommer att stöta på när du använder inbäddade x86-enkortsdatorer som kärnan i system för dataloggning och rörelsestyrning.

Grundläggande information om Atmel AVR-mikrokontrollerfamiljen.

En praktisk introduktion till att bygga några enkla kretsar för datainsamling och motorstyrning och ansluta dem till datorer.

En del grundläggande ”primer”-information om datasäkerhet, autentisering och tillförlitlighetsfrågor som påverkar inbäddade system.

Den underliggande idén är att läsaren har någorlunda intim erfarenhet av ett eller annat av ämnena utveckling av Linux-tillämpningar eller utveckling av djupt inbäddade system – den här boken är utformad för att hjälpa dig att komma upp på toppen av din inlärningskurva med det viktigaste av den sida av ekvationen som du saknar. Den ger också limmet som binder samman dessa delar av informationen i det övergripande sammanhanget av ett ganska komplext projekt. Observera förresten att jag använde ordet ”kokbok” med viss försiktighet. Ren kokboksteknik – att sätta ihop obegripliga delar som Capsela-sfärer – är aldrig en bra metod. I den här boken ger jag dig några Capsela-bitar som är färdiga att använda, men jag berättar också hur och varför jag gjorde kugghjulen och axlarna i varje bit, och i viss mån hur du kan gå vidare och göra bättre bitar själv. Dessa förklaringar är mycket viktigare än ritningarna till själva bitarna.

När man planerar en bok som denna är det lätt att falla i en av två fällor: antingen att skapa en enda monolitisk ”mega-applikation” som illustrerar alla önskade punkter, men som är extremt svår att förklara kortfattat, eller å andra sidan att bryta ner ämnet i många små abstrakta anteckningar som många läsare kommer att få problem med att integrera i projekt i den verkliga världen. Jag har försökt att styra mellan dessa två ytterligheter genom att bryta upp de mer intressanta modulerna i E-2-projektet i några små, praktiska tillämpningar tillsammans med i princip fristående kod och tillräckligt med teori för att modifiera och utöka dessa tillämpningar för egna användningsområden.

Slutligt en anmärkning till dem som äger min tidigare bok, Embedded System Development on a Shoestring. Den här boken är inte avsedd att vara en uppföljare till den volymen, men det är definitivt relaterat material. Om du följer teknikerna i den här boken för att bygga en prototypapparat, och du senare vill pressa ner den till en optimerad single-chip-lösning, kommer mitt tidigare arbete att hjälpa dig att förstå hur du kan använda fria GNU-verktyg för att få din mjukvara lätt portad över till en ARM-mikrokontroller. Den främsta kritiken jag fick för den tidigare boken var att den behövde täcka in ett bredare spektrum av information och att det fanns för få illustrationer, vilket gjorde den till en ganska torr läsning. Jag har lyssnat på dessa kommentarer och jag hoppas att du kommer att finna att den här boken uppfyller dina behov i båda avseendena. Som alltid är dina kommentarer och förslag välkomna; du kan mejla mig på eller besöka min webbplats på http://www.zws.com/.

.

Lämna ett svar

Din e-postadress kommer inte publiceras.