Permalänk
Medlem

Börja med embedded / inbyggda system

Hej Swec!

Jag vill ge mig in och testa embedded programmering. Fått inspiration från kursen i datorarkitektur jag läser nu. Jag har några frågor jag skulle vilja få besvarade innan jag sätter igång.

  1. Jag har kikat på en bräda som heter HiFive1 från SiFive, det är en implementation av RISC V som i sig är en open source ISA (Instruction Set Architecture). Och det gillar jag. Finns det några invändningar mot att välja denna? Det som lockar är att det är just en RISC med något enklare utformad ISA. (I datorarkitektur kursen jag läser nu har vi jobbat med MIPS 32 bit ISA)

  2. Hur mycket ellära behöver man? Jag har väldigt grundläggande kunskaper från gymnasiet. Min förhoppning är här att allt det där är abstraherat via SDKn man får. D.v.s. det räcker att studera denna och dess funktioner och glömma resten.

  3. Hur pass relevant är det att kunna kompilatorteori för just embedded programmering? Som jag förstår är kunskaper i det ytterliggare ett verktyg för att optimera sin kod. Jag skulle kunna slänga in en kurs i det, om det är ett krav, så att säga. Eller det kanske är ett nästa steg? Inte ett krav i början men bra om man kan på sikt?

  4. Har tidigare läst en kurs i operativsystem (mer som en översiktskurs. Vi byggde inga egna kernels eller så). Sitter man och skriver egna OS när man jobbar med inbyggda system? Jag har läst en tegelsten av Tanenbaum tidigare och jag vet att han har snickrat ihop ett OS som heter MINIX för vidare självstudier. Det kanske är overkill?

Det var väl allt!

Tacksom för svar.

Mvh.

Permalänk
Medlem

Jag sysslar "lite" med inbyggda system kommersiellt och till att börja med finns det inget generellt svar på vilken platform man ska använda eller lära sig utan mer anpassa lösning till problemet.
Jag började för många år sedan med Microchips PIC16 och PIC18 och har kört både med assembler och C. I dagsläget har vi gått ifrån PIC-serien förutom enstaka produkter som har en väldigt känslig prislapp och klarar sig med deras minsta serie. I nästan alla andra fall använder vi ARM baserade lösningar och då ofta Cortex-M kärnor.
Jag skulle säga att lär dig hantera bits och Bytes i C språket och att snåla med resurserna (Flash och RAM i synnerhet). Lär dig grundläggande digital och analog ellära, dvs kunna innebörden av pull-up och pull-down, hur en A/D fungerar och hur man använder den. Hur I2C och SPI fungerar och när är det lämpligt med den och den andra. Alla dessa delar och många fler ingår på ett eller annat sätt till 99% i inbyggda system.

Angående färdiga OS så beror det helt på produkten/lösningen. I vissa fall är det motiverat med ex FreeRTOS eller Buildroot. I andra fall snickrar man ihop en egen lösning.

Visa signatur

MSI K9N SLI Diamond | MSI Diamond HDMI 7600GT | AMD X2 4200+ | 1GB Kingston HyperX| 32" LG 5000:1 screen | Asus EeePC 701

Permalänk
Medlem

@Opatagio: Tack för ditt svar!