Embedded Development med ARM mbed på Linux

En mikrokontroller inneholder en prosessor, noe minne, og vanligvis har noen tilkoblinger for samspill med ekstern hardware. Du vil kanskje bruke en mikrokontroller for å slå en liten servomotor, eller koble noen knapper og en skjerm for å bygge en tilpasset kalkulator, for eksempel. En mikrokontroller kan ikke kjøre alle operativsystem i det hele tatt, og bare begynne å utføre et enkelt program snart etter at strømmen er brukt.

mbed plattformen er en åpen kildekode-miljø som gjør at du kan skrive kontrollprogrammer i C /C ++ og distribuere dem til mange ARM Cortex-M baserte mikrokontroller boards.

ARM CPU brukes i BeagleBone svart og andre enkelt bord datamaskiner er konstruert for å grensesnitt med halvparten til et par gigabyte RAM og tillate en full operativsystem som Linux skal kjøres på datamaskinen. (Se min lang rekke anmeldelser på Linux.com av ARM-baserte datamaskiner som kjører Linux). I motsetning ARM Cortex-M er en mikronivå chip som kan kjøre på 16-100Mhz, inneholde 2-100kb RAM, og noen flash-minne for å inneholde kun det programmet du ønsker å utføre.

Du kan imidlertid sette opp din Linux-maskin til å skrive kontrollprogrammer for en ARM-basert mikrokontroller bruker mbed plattformen. Den mbed IDE kan nås via en nettleser eller lastes ned til din Linux-desktop (se instruksjonene på denne siden.)

Dette oppsettet gir noen fordeler til innebygde utviklere som bruker mikrokontrollere. Mange lesere vil trolig være kjent med Arduino miljøet og har sikkert brukt det med Atmel 328 microcontroller. Den mbed plattformen tilbyr litt mer fleksibilitet ved å la deg velge både mikrokontroller bord som passer best for din søknad, samt at du kan velge hvilke kompilatoren vil passe beste prosjektet.

For eksempel, du kan ha en lite program som bare trenger å bruke 3-4 pin og en enkel SPI buss, så en mer økonomisk chip er alt du trenger. På den annen side, kan du kjøre en skjerm, noen DSP kode, trenger litt mer prosessorkraft og ønsker å ha rundt 100KB minne om bord. Med mbed kan du velge en mer kapabel microcontroller som bedre vil håndtere det programmet.

Writing programmer

IDE for mbed kjører i nettleseren. Når du logger deg velge målet styret som du har, åpne eller skrive et program, kompilere den, og laste ned den binære å installere på maskinvaren. Når du kobler til en mbed mikrokontroller til Linux-skrivebordet vil du se en eller flere lagringsenheter. Disse lagringsenheter kan vises på en lignende måte til en USB-minnepinne. Hvis det er mer enn én lagringsenhet vist av Linux-skrivebordet, vil man trolig være svært liten, og en vil være rundt riktig størrelse for flash minne på mbed maskinvare.

For å installere et nytt program som du ned fra mbed IDE bare åpne lagringsenhet og kopiere firmware filen du lastet ned ved hjelp av nettleseren til mbed enheten. Dette unngår frustrasjonen som plager noen innebygd miljøer som vil bruke /dev /ttyUSBX eller en /dev /ACM enhetsfilene til å laste opp ny firmware og enhetene ikke alltid møter opp eller vises i menyene.

Min første tanker når du spiller rundt med mbed var om hvor godt ekstra maskinvare ble støttet. Popularitet og årene som Arduino har eksistert har velsignet det med et stort bibliotek base for å kommunisere med ulike maskinvare. Min første testingen var for de populære Nordic Semiconductor rf24 chips. Det er mange biblioteker for å støtte at brikken på mbed, inkludert en port av Maniacbug sin nRF24L01 + Arduino biblioteket til mbed.

Jeg hadde faktisk ganske tid først får rf24 kommunikasjon for å fungere. Jeg brukte to Nucleo F401RE boards, og nettsiden for dem nevner at du bør oppgradere sin firmware. Jeg hadde en titt over firmware oppgradering siden, men fikk ikke se noe som kan ha forårsaket et problem som jeg ble seende. Jeg gikk og utførte firmware oppgradering likevel og etterpå rf24 kommunikasjonen fungerte bra. Det er uheldig at i det øyeblikket du oppgraderer kjernen firmware på ST Nucleo F401RE ikke ble støttet fra Linux.

Andre på min testing med mbed var en RePaper skjerm med versjon 1 avslapnings bord. I innledende testing med Nucleo F401RE kunne jeg klarer å få et enkelt bilde vises, men var aldri i stand til å oppdatere skjermen til en annen image. Dessverre, slå over i et NXP LPC1768 basert Arch Pro styret forlatt meg ute av stand til å gjengi enda en første bilde. Det samme visningen med drivere på en BeagleBone Svart lov skjermen skal kjøres som normalt. Så det er sannsynlig å være et problem med en kombinasjon av maskinvare og eAvis bibliotek som jeg brukte for mbed.

Bringing IDE til Linux desktop

Mens online IDE kan være tilstrekkelig for noen, er det også sannsynlig å være mange utviklere som har sin redaktør for valg og ønsker å være fri for nettleseren.

For å utvikle lokalt, laste ned GCC ARM Embedded-verktøyene, for eksempel, gcc-arm- none-EABI-4_9-2014q4-20141203-linux.tar.bz2 og utvide det til /usr /local. Deretter legger de nye kjør til din PATH, i dette tilfellet katalogen /usr /local /gcc-arm-none-EABI-4_9-2014q4 /bin. Så for å bringe et prosjekt til den lokale maskinen fra nettet IDE, høyreklikk på prosjektet og velger styret du ønsker å bruke, og GCC (ARM innebygd) som eksportverktøysett. Dette vil resultere i en zip-fil som tilbys av nettleser for nedlasting.

Utvid som zip-fil et sted praktisk, endre katalogen til bunnmappa til den nylig utvidet filer. Dette vil være en katalog med samme navn som prosjektet du rett klikket på i online IDE. Så, med GCC ARM Embedded-verktøyene i søkestien kan du bare skrive gjøre å bygge den nye bin filen som skal kopieres til maskinvaren.

En fil som sannsynligvis vil være av stor interesse for den lokale filsystem er, for eksempel mbed /TARGET_NUCLEO_F401RE /TARGET_STM /TARGET_NUCLEO_F401REw /PinNames.h fil. Målkatalogen navn vil være forskjellig for ulike maskinvare boards. Å kunne se at Arduino pin D2 er også PA_10 og at LED1 gjennom LED4 alt kartet til PA_5 for F401RE vil trolig hjelpe mens du skriver dine programmer.

Kan maskinvare og utholdenhet

Det er APIer for SPI, TWI, digital og analog IO for mbed. Syntaksen for digital IO er mye mer avvisende enn for Arduino IDE. I mbed hver pinne kan slås ved hjelp av enkle oppdrag og hvor modusene brukes pinnen objektet selv har støtte metode for å bli satt til inngang eller utgang. Den mbed miljøet støtter også avanserte funksjoner som threading og TCP /IP samhandling inkludert HTTP, WebSockets, samt NTP og SMTP-klienter.

mbed miljøet støtter en rekke chip boards og gjør det ganske enkelt å få opp til hastighet og begynne å bruke en ny mbed kompatibel bord. Å ha stand maskinvare som ST Nucleo F401RE tilgjengelig for litt over $ 10 gjør har en tinker med embedded hardware ganske billig. Selv om jeg hadde en blandet resultat med eAvis skjerm, noen ganger maskinvare mekke handler om utholdenhet, uansett hvilken plattform du bruker. Anmeldelser



Previous:
Next Page: