DEL 1:
I to artikler skal vi se på et ultra low-power, funktionsrigt mikrocontroller-modul, og hvordan det bliver programmeret og debugget med populære, gratis værktøjer. Modsat mange andre high-end mikrocontroller-moduler er det beskrevne tilgængeligt i et DIP-format, hvilket letter prototyping for både professionelle og hobbyfolk. Artiklens del 1 beskriver projektets start med brug af Eclipse, mens del 2 fortæller om konfiguration af Eclipse sammen med mikrocontroller-modulet
Artiklen har været bragt i Aktuel Elektronik nr. 6 – 2025 og kan læses herunder uden illustrationer
(læs originaludgaven her)
Af Simon Bramble, staff engineer, Analog Devices
Det konstante krav om stadigt mindre elektronik kan gøre det svært for både designere og hobbyfolk at udføre prototyper med de stadigt mindre komponenter. Mikrocontrollere (MCU’er) giver utvivlsomt en lang række funktioner, som bibringer et design nye muligheder, men mange designere hænger fortsat i en fortid, hvor de fleste komponenter kom i DIP-huse. Mere avancerede MCU’er har flere funktioner, men kommer kun i kapslinger, der er svære at udføre prototyper med – ligesom de tilhørende evaluerings-kits er meget store og med en række unødvendige komponenter.
Her er så det prototypevenlige MAX32625PICO-mikrocontrollermodul, der er bittelille, men alligevel med et DIP-footprint så det let kan integreres på både eksperimentelle- og produktionsprint. I denne artikel ser vi på programmering og debugging med brug af Eclipse, et ekstremt populært og gratis IDE (Integrated Development Environment). Så kan man droppe alle tidligere 8-bit processorer og fortsat have tæerne i DIP-svømmepølen. Se de følgende instruktioner for en komplet guide til, hvordan man kommer i gang.
Her er MAX32625PICO
MAX32625PICO (figur 1) er også kendt som PICO, som indeholder MAX32625 MCU’en – en ultra low-power, 32-bit Arm Cortex-M4-processor med 512kB flash og 160kB SRAM og en arbejdsfrekvens op til 96MHz. Den mest anvendelige periferi i mikrocontrollere er ført ud som pins på PICO inklusive en SPI-main, en SPI-sub, en I2C-port, to inputs til en 10-bit ADC, et 1-wire interface, og to UARTs. PICO indeholder også en MAX1 4750 powermanagement-IC, en RGB-LED, en trykkontakt, en USB Micro B-konnektor samt en 10-pin Cortex debug-header, og PICO kan forsynes direkte fra en USB-port eller en ekstern 5V-forsyning. Desuden er der 0.1” (tomme) header-konnektorer på hver side af printet, så pins loddes på PICO’en, der så kan monteres på et prototype-breadboard. Hvis man behøver en SMD-løsning, har header-konnektorerne kobber helt ud til boardets kant, så PICO også kan bruges som en SMD-komponent. PICO er lille nok til at kunne slottes ind i ethvert design, men alligevel stor nok til at tillade nem prototyping.
Det har man brug for til programmering og debugging af PICO:
• To PICO’er.
• To Micro B USB-kabler (som typisk leveres med PICO).
• Et programmeringskabel, serienummer TC2050-IDC-NL-050.
TC2050-kablet har en 10-pin konnektor i den ene ende og fjedrende pogo-pins i den anden ende. Kablet bruges kun under debugging eller reprogrammering af PICO, hvis bootloaderen bliver overskrevet. Normal programmering er helt enkel drag-and-drop.
Projektdesign med Eclipse IDE
PICO blev oprindeligt designet til at blive anvendt sammen med online Mbed-compilerplatformen, der ikke længere er aktiv. Open-source Eclipse IDE’et er en meget populær udviklingsplatform hos både professionelle og hobbyfolk, og det er et gratis alternativ til Mbed. Vi skal se, hvordan man konfigurerer Eclipse for at generere en binær fil, som kan trækkes over til target-hardware med Windows Explorer. Konfigurationsfilerne kan downloades i det zip-fil-link, som er nederst i artiklen.
Eclipse IDE kan downloades fra MAX32625-mikrocontrollerens landing-page. Navigér til ”Tools and Simulations”-sektionen og klik på ”Low Power Arm Micro SDK (Win)”-download-linket. Herfra kan Arm Cortex Toolchain IDE’et downloades og installeres. Brug default installationskonfigurationen.
• Efter installation, vælg: File -> New -> Maxim Microcontrollers (figur 2).
• Når ”Create Project”-boksen dukker op, så se til, at projektnavnet er uden spaces.
• Udfyld “Select Project Configuration”-vinduet (figur 3).
Hvordan kommunikerer IDE’et med target-hardwaren?
Det er værd at beskrive, hvad der sker inden i Eclipse for at forklare eventuelle fejlmeddelelser, som kan blive flaget i debugging-processen. IDE’et kommunikerer med target-mikrocontrolleren (her: PICO) gennem to programmer: GNU- debuggeren (GDB) og en Open on-chip debugger (OCD). GDB er et højniveau debugging-værktøj, som gør brugeren i stand til at steppe sig gennem koden, at eksekvere breakpoints og undersøge registerværdier. GDB kommunikerer med OpenOCD, et værktøj som oversætter højniveaukommandoer til noget, der er nærmere dét, som target-mikrocontrolleren forstår. Både GDB og OpenOCD kører på pc’en, og inden i Eclipse. Mellem pc’en og den endelige hardware er der en debug-adapter, som oversætter kommandoer til elektriske signaler, som MCU’ens debug-port forstår. Denne debug-port kan have én af to former: En JTAG debug-port eller en lavere version af JTAG med et mindre antal pins, også kaldet single-wire debug (SWD) porten. Alt det ovenstående gør programmøren i stand til at eksekvere koden, linje for linje, på den faktiske target-hardware for at se, hvordan registrenes værdier ændrer sig i stedet for at bruge en simulator.
Eclipse IDE taler med GDB, GDB taler med OpenOCD, og OpenOCD kommunikerer – via debug-adapteren – til debug-porten på target-PICO’en. GDB og OpenOCD befinder sig inden i software development-kittet (SDK) og installerer automatisk med SDK’et – og bliver kaldt af Eclipse. Når en debug-adapter er forbundet mellem pc og target-hardware, så er der end-to-end kommunikation sømløst mellem Eclipse og PICO.
Projektkonfigurationen (figur 3) tager udgangspunkt i, at Eclipse IDE’et er forbundet til en MAX32625EVKIT, der bruger en JTAG-port. PICO har dog SWD-porten med det lavere antal pins i stedet for JTAG-debuggeren. For at interface Eclipse IDE med PICO kan endnu en PICO forbindes mellem værts-pc’en og target-PICO i stedet for en JTAG-debugger. Denne sekundære PICO vil blive kaldt ”programmer-PICO” for at adskille den fra target-PICO, hvorpå den endelige kode vil blive kørt. Programmer-PICO’en skal uploades med et program, DAPLink, der oversætter USB-signaler fra pc’en til signaler, som PICO forstår. Det er en ret enkel procedure, som er beskrevet under loading af Binary File-sektionen i den kommende del 2 af denne artikel.
Da en programmer-PICO bliver brugt i stedet for en JTAG-debugger, vælg så MAX32625_PICO under punktet, ”Select adapter type” (figur 4).
Modificering af Eclipse til funktion sammen med PICO
Download zip-filen i linket sidst i artiklen og udtræk indholdet til en egnet plads. Find den fil, der hedder ”MAX32625PICO.cfg” og kopiér den til det følgende index: C:\Maxim\Toolchain\share\openocd\scripts\target. Det er en modifikation af den originale fil (MAX32625.cfg), og den gør den anden PICO mulig at bruge i stedet for en JTAG-debugger. Denne fil overstyrer den reset-kommando, som typisk bliver udstedt af JTAG-debuggeren og resetter visse af registrene i target-processoren foruden program-counteren og stack-pointeren.
Når et nyt projekt er blevet skabt ud fra Eclipses Project Explorer tab (øverste venstre hjørne), så højreklik over projektnavnet og vælg: ”Debug As -> Debug Configurations …”. Navigér derefter til ”GDB OpenOCD Debugging” i den venstre menu og vælg det aktuelle projekt.
I Debugger-tab’en, foretag så en ændring af CFG-filen fra MAX32625.cfg til MAX32625pico.cfg (figur 5). Klik ”Apply” og så ”Close”.
I Project Explorer-vinduet højreklik igen over projektnavnet og vælg ”Properties”. Venstreklik på ”C/C++ Build heading” og under ”Builder Settings”-tab’en og vær sikker på, at Build-kommandoen skriver: ”make ECLIPSE=1 release” (figur 6). Det instruerer Eclipse om at generere den binære fil (det eksekvérbare program), som kan uploades til PICO’en. Klik så ”Apply” og ”OK”.
Konfiguration af Eclipse til at inkludere andre filer
For at gøre Arm-processorer lettere at programmere leverer mange producenter af MCU’er lavniveau-drivere for at gøre programmørens kode i stand til at kommunikere med de mange registre og den omfattende periferi, som mikrocontrollere indeholder. Som programmør skal man derfor ikke bekymre sig om kontrol over registerniveauer, så man kan koncentrere sig om funktionerne på højere niveau i slutapplikationen. Disse drivere kaldes Common Microcontroller Software Interface Standard (CMSIS) og er helt enkelt et hierarki af filer, der er nødvendige for at programmere MAX32625. I hjertet af disse mikrocontrollere er Arm-kernen, der er den samme for hver specifik familie af Arm-baserede mikrocontrollere. Det er et sæt af filer, der er nødvendige for konfigurering af Arm-kernen.
Rundt om Arm-kernen er et periferisæt (ADC’er, GPIO-porte, timere, countere, SPI-porte og lignende), som adskiller netop den ene Arm-kerne fra andre Arm-baserede komponenter. Denne periferi har brug for et sæt filer til konfigurering. Arm-kernen og periferien udgør den specifikke mikrocontroller. Komponenten bliver derefter placeret på et board og forbundet til for eksempel et display, port-headers, switche, LED’er og Bluetooth-transceivere. Der findes et sæt filer, der beskriver, hvordan kernen skal forbindes til de omgivende komponenter på print/board.
Hvis vi starter i hjertet af MAX32625 (Arm-kernen) og arbejder os udefter, så er der et sæt filer, der konfigurerer selve Arm-kernen, og siden et sæt filer, der konfigurerer den periferi, der omgiver Arm-kernen – og endelig et sæt til konfigurering af de komponenter i evaluerings-kittet rundt om processoren. Eclipse skal konfigureres, så Eclipse kan finde disse filer under compilering af programmet.
I Eclipse – i Project Explorer-vinduet, højreklik over projektnavnet og vælg ”Properties”, og ekspandér så ”C/C++ General menu” og navigér til ”Paths and Symbols”-sektionen. Under ”Includes”-tab’en vælg GNU C. Tilføj de directories, der er vist i figur 7 med brug af ”Add and File” systemtasterne. Klik så ”Apply and OK”, når det ovenstående er blevet tilføjet. Følgende adresser forklarer, hvad hver enkelt inkluderet directory gør:
• C\Maxim\Firmware\MAX32625\Libraries\CMSIS\Include.
Denne directory inkluderer de filer, som Arm-kernen i MAX32625 bruger.
• C:\Maxim\Firmware\MAX32625\Libraries\CMSIS\Device\Maxim\MAX32625\Include.
Denne directory inkluderer periferi-/registerdefinitioner for MAX32625.
• C:\Maxim\Firmware\MAX32625\Libraries\MAX32625PeriphDriver\Include.
Denne directory inkluderer de filer, som gør det muligt at anvende periferien i MAX32625.
Man kan downloade software-filerne fra dette link:
https://www.analog.com/media/en/software/software-configuration/eclipse-configuration.zip.
Del 2 af denne artikel vil være tilgængelig i Aktuel Elektronik 7/2025 (17. juni), og den forklarer, hvordan man kan konfigurere Eclipse til at arbejde sammen med PICO.
Billedtekster:
Figur 1: The MAX32625PICO.
Figur 2: Start det første projekt.
Figur 3: Projektkonfiguration.
Figur 4: Vælg adaptertype.
Figur 5: Peger i retning af ny config-fil.
Figur 6: Generering af den binære fil.
Figur 7: Inkludering af eksterne filer.