Archive for juni 2012

Så tester vi litt.

Aller først er det greit å teste at systemet fungerer fra kommandolinjen. Last ned mitt lille Blink-LED-program, så har du noe som skal virke (på STM32F4Discovery vel og merke).

  1. Last ned ch.elf
  2. Plugg inn STM32F4Discovery kortet med USB mini kontakten (Den største). Dette er USB kontakten til ST-Link delen på kortet.
  3. Start to terminalvinduer.
  4. I den ene terminalen:
    > st-util
  5. Det skal da dukke opp noe slikt som:2012-06-19T23:23:25 INFO src/stlink-usb.c: — exit_dfu_mode
    2012-06-19T23:23:25 INFO src/stlink-common.c: Loading device parameters….
    2012-06-19T23:23:25 INFO src/stlink-common.c: Device connected is: F4 device, id 0x10016413
    2012-06-19T23:23:25 INFO src/stlink-common.c: SRAM size: 0x30000 bytes (192 KiB), Flash: 0x100000 bytes (1024 KiB) in pages of 16384 bytes
    Chip ID is 00000413, Core ID is  2ba01477.
    KARL – should read back as 0x03, not 60 02 00 00
    init watchpoints
    Listening at *:4242…
  6. I det andre terminalvinduet
    > arm-none-eabi-gdb
    Prompten vil da endre seg til (gdb)
  7. Koble debuggeren til gdb-serveren (st-util)
    (gdb)  target extended-remote *:4242
    Remote debugging using :4242
    0x08000340 in ?? ()
  8. Reset debuggeren
    (gdb) monitor reset_halt
  9. Last inn EFL fila
    (gdb) load ch.elf
    Loading section startup, size 0x188 lma 0x8000000
    Loading section .text, size 0x11d8 lma 0x8000190
    Start address 0x8000190, load size 4960
    Transfer rate: 4 KB/sec, 2480 bytes/write.
  10. Start programmet
    (gdb) run
    Svar ja på spørsmål.
  11. Nå skal den oransje, grønne og blå lysdioden blinke.

STM32 utvikling på Mac (og forsåvidt Linux)

Da prøver jeg meg på å beskrive oppsettet mitt for å skrive kode og debugge STM32F4 vha en Mac. Det kan hende jeg har glemt noe, eller at jeg allerede hadde installert noen av avhengighetene, men da er det fint om dere sier i fra, så kan jeg rette opp.

Denne beskrivelsen vil også fungere på Linux, med den lille forskjellen at systemet for å installere pakker heter noe annet. Alle stedene jeg bruker kommandoen «port», så må den byttes ut med passende kommando på ditt system (f.eks. «apt-get»). Og bare så det er nevnt, hvis du ikke klarer å bruke terminal har du tapt allerede før start, så fyr det opp med en gang. Det er forresten også greit å sjekke om pakkene allerede er installert før man kjører en «port install … »

  1. ** Kun Mac ** Det aller første som må gjøres installere XCode fra apple. Gå inn i App store og søk. Det tar laaang tid.
  2. ** Kun Mac ** Det neste er å legge inn Macports. Uten den blir dette en uvirkelig slitsom jobb.
  3. Installer GIT
    >  sudo port install git-core
  4. Installer autoconf
    >  sudo port install autoconf
  5. Installer libusb 1.0
    >  sudo port install libusb
    >  sudo port install libusb-devel
  6. Hent programvaren som snakker med ST-Link debuggeren
    >  git clone https://github.com/texane/stlink stlink.git
  7. Kompiler denne programvaren
    >  cd stlink.git
    >  ./autogen.sh
    >  ./configure
    >  make
    >  sudo make install
  8. Sjekk om applikasjonene «st-flash» og «st-util» finnes på systemet ditt.
  9. ** kun Linux **  Sett opp udev rules. Dette gør at du slipper å kjøre st-util som admin
    >  cp 49-stlinkv*.rules /etc/udev/rules.d/
    >  sudo udevadm control –reload-rules
  10. Last ned GNU ARM toolchain fra Yagarto (Mac og Win), eller Codesourcery Lite (Linux, velg bin fil).
  11. ** Kun Mac **  Installer Yagarto. Dette er i praksis å plassere den nedlastede filen der du ønsker å installere, og så dobbelklikke på den. Den pakker bare ut alle filene. Jeg har valgt å legge den på
    /Developer/yagarto
  12. ** Kun Linux ** Installer Codesourcery fra bin fil. Last ned «getting-started.pdf» og følg instruksjonene.
  13. Sett opp PATH variablen ved å editere et passende oppstart-script. På min Mac har jeg valgt å legge det til i .profile, så åpne denne med en vanlig teksteditor (f.eks emacs) og legg til
    export PATH=/Developer/yagarto/yagarto-4.6.2/bin:$PATH
    export PATH=/Developer/yagarto/yagarto-4.6.2/tools:$PATH
  14. Åpne en ny terminal og sjekk om du kan starte en haug med programmer som starter med «arm-none-eabi-«, f.eks «arm-none-eabi-gcc»
  15. Last ned Eclipse, eller mer presist, den som heter «Eclipse IDE for C/C++ Developers (includes Incubating components)»
  16. Legg Eclipse på et passende sted, f.eks i Application katalogen (kopier hele katalogen du lastet ned inn dit)
  17. Start Eclipse og gå inn på menyen «Help->Install new software …»  (Dette må du gjenta noen ganger da Eclipse insisterer på omstart hver gang du installerer noe)
  18. Installer GNU ARM Eclipse-plugin.
    Trykk på «Add» knappen og skriv inn
    Name:  GNU ARM Eclipse-plugin
    Location:  http://gnuarmeclipse.sourceforge.net/updates
    Velg så «CDT GNU Cross Development Tools» og trykk Next go Finish
  19. Installer Zylin debugger (Eclipse:  Help->Install new software …) ved å fylle inn dette
    Work with:  http://opensource.zylin.com/zylincdt
    Velg «Zylin Embedded CDT» og gå runden med Next, Finish og omstart av Eclipse.

Se så, da tror jeg faktisk alt  som skal installeres er inne. For Windows er installasjonen litt annerledes. Jeg skal ta den i en egen post senere.

Det neste på programmet er å teste at hele oppsettet virker, samt sette opp Eclipse slik at man kan debugge programmer.

STM32F4Discovery

Hopla, for en overskrift.

Jeg har endelig fått hoppet på et prosjekt med UAV. Har ruget på noe slikt i 4-5 år allerede uten at det har konkretisert seg så veldig, men her for litt siden ble jeg dradd med i et lite hexakoptermiljø av noen kollegaer. Disse hadde kjøpt sett fra DiyDrones, og de virket forsåvidt helt ok, men det var ikke vanskelig å se rom for forbedringer.

Et sted skal man jo starte, og det viste seg at autopiloten var basert på en Arduino løsning. Det vil i praksis si en usedvanlig shaity 8-bits AVR kontroller fra Atmel. Alle involverte var skjønt enig i at her burde det lages noe bedre. Vel, man det finnes jo forsåvidt noen bedre løsninger rundtom, men de er ofte dyre.

Siden jeg uansett var i gang med et mikrokontrollerprosjekt på jobb, så fristet det litt å lage noe vettugt her også. Etter ganske mye leting etter den rette chippen, så kom jeg over et aldri så lite kupp.

STM32F407/17

Dette er et råskinn av en ARM Cortex-M4 kontroller som kan gå opp til 168MHz. Det er 1MB flash og 192kB RAM. Rikelig mer periferienheter, og sist men ikke minst, en FPU. Det er gull når man skal lage et system som hovedsakelig skal drive med signalbehandling og regulering. Prisen var snill, og den kom i pakker med 64, 100, 144 og 176 pinner.

Men så kommer det som var det egentlige kuppet. ST har laget et evalueringskort som heter STM32F4Discovery. Dette er et lekkert lite kort med STM32F407 kontroller. I tillegg finnes det en ST-Link SWD programmerer/debugger på kortet, en USB kontakt (eller 2 med den til debuggeren), et 3 akse akselerometer, noen lysdioder + litt til. Alle IO pinnene var ført ut på vanlige pinnelister, og kortet er ca 6x12cm stort. Det er med andre ord perfekt for hobbyprosjekter og produkter der man ikke trenger/ønsker å lage noe selv. Det beste av alt, prisen …. jeg betalte 129kr + MVA på Farnell. De er litt billigere på mouser.com, men der er frakt litt dyrere.

Jeg har nok tenkt å lage en PCB selv til autopiloten, men dette kortet er helt klart perfekt for utvikling av SW, og testing.

Hvordan utvikler man så på dette. Vel jeg har snekret i hop løsninger på alle tre platformer, ikke for det jeg trenger å utvikle på alle, men det bare ble slik pga feilsøking. I hvertfall, man kan skrive, kompilere og debugge programmer til dette kortet på både Win, Mac og Ubuntu ved hjelp av Eclipse, arm-none-eabi- og et par andre småprogrammer.

Siden flere av mine medsammensvorne også har lyst til å prøve på denne kontrolleren, så skal jeg skrive en utførlig beskrivelse av hvordan man går fram. Kommer nok opp ganske snart (tror jeg).

PS.

Det finnes flere Discovery kort fra ST, men ikke alle er helt like. Sørg for å kjøpe et med ST-LinkV2. Det vil i praksis si STM32F4Discovery eller STM32F0Discovery.

Støping ja

Hvordan gikk det nå til slutt?

Jeg fikk aldri somlet meg til å skrive mer om denne støpingen. Selve planetgiret jeg designet var litt dårlig. Jeg hadde gjort et par blundere som gjorde at det ikke gikk spesielt bra. Men når det er sagt, så har selve støpeprosessen gått svært bra. Har kjøpt meg vakuumpumpe og vakuumkammer, noe som er helt nødvendig. Har ikke noen bilder å by på akkurat nå, men det har blitt støpt flere smådeler som er satt i nyttig bruk.

Skal se om jeg kan lage en liten bildeserie en gang jeg har litt insirasjon til denslags.