Difference between revisions of "Förberedelse programmering STM32"

From Chalmers Robotförening
Line 35: Line 35:
*make i terminal, makefil
*make i terminal, makefil


Denna guide är skriven av Benjamin Vedder på [http://vedder.se/2012/07/get-started-with-stm32f4-on-ubuntu-linux/ hans hemsida].
Denna guide är skriven av Benjamin Vedder på [http://vedder.se/2012/07/get-started-with-stm32f4-on-ubuntu-linux/ hans hemsida]. Modifierad av Mikael Tulldahl.


==Download and build GCC, GDB, OpenOcd and newlib==
==Download and build GCC, GDB, OpenOcd and newlib==

Revision as of 01:49, 26 November 2013

Förord
Jag som gjort denna guide vill inte påstå mig ha en överlägset bra koll på allt det jag skriver om, utan snarare är jag en nybörjare själv som nyligen fått igång det jag skriver om. Men min förhoppning är att jag, till skillnad från mer erfarna medlemmar i föreningen, har just på grund av detta möjlighet att skriva en guide som riktar sig till den totala nybörjaren och jag kommer inte utgå från att du har erfarenhet av linux, mikrokontrollers eller C programmering. Guiden är tänkt att läsas från början till slut, och hoppa över de delar som inte berör dig.

Det är lätt att drunkna i information, samtidigt som man inte hittar svar på de allra mest basala frågor, när man vill lära sig något nytt. min erfarenhet är att man fastnar på ett litet problem, som t.ex. ett felmeddelande under en installation, och i letan om vad meddelandet säger så hittar man en uppsjö bra guider och forum som berör ämnet, men det slutar allt som oftast med att man länkas vidare i många steg, så att i slutet av kvällen har man 100 flikar öppna med halvlästa guider i webbläsaren. för att spara Din tid så kommer jag försöka att lägga in "allt" material du behöver på denna sida (exkl. saker du behöver ladda hem), så att minimalt antal avstickningar från denna guide behövs under hela förloppet. när länkar till annat material presenteras så är det dels en källhänvisning (cred till den person som skrev orginalguiden) eller en möjlighet att läsa mer om ämnet.

Har du frågor, fastnar du, får du problem, eller vill du bara tacka för hjälpen; hör av dig till en styrelse-medlem!

Innan du börjar

Detta behöver du:

  • Tid
  • Passion och nyfikenhet
  • Förmåga att läsa engelska
  • En dator med ~10GB ledigt på hårddisken
  • Ett usb-minne (enklast för installation av Ubuntu) ( fungerar även med t.ex. CD/DVD skiva)

Operativsystem

Vi rekommenderar att du programmerar i Ubuntu då det finns en bra så kallad tool-chain i Ubuntu som är gratis och inte har några inbyggda begränsningar. Det finns även alternativ för windows, så som Kiel men det är ingen i föreningen som använt denna och kan hjälpa dig ifall du fastnar. Kiel är begränsad till att bara kunna använda 32kb flashminne i gratisversionen

Om du har Ubuntu installerat

då är allt som det ska och du kan hoppa ner till Kompilera kod till .bin fil

Om du har Mac OS X

Kort version (tills det kommer en riktig variant). Du kan köra nästan samma guide som för Ubuntu till OSX. Du behöver ha XCode installerat för att få lite kompilatorer. Det som inte riktigt fungerar ännu är STM32Flash för att progammera med USB-uartbryggan. I annat fall kan man använda en ST-link (som också finns på STs utvecklingkort). Dessa kostar runt 100-200kr.
Du kan även utan problem köra Ubuntu i Virtual Box. Annars är det bara att googla på Setting up STM32 for OS X Eclipse eller nåt och följa instruktioner. TODO: Fixa en genomtänkt guide.

Om du har Windows

Det finns 3 sätt att fixa Ubuntu på din dator:

Kompilera kod till .bin fil

  • behöver gcc
  • make i terminal, makefil

Denna guide är skriven av Benjamin Vedder på hans hemsida. Modifierad av Mikael Tulldahl.

Download and build GCC, GDB, OpenOcd and newlib

To set up the toolchain, a modified version of the summon-arm-toolchain script will be used. Firstly, a few packages have to be installed. Open a terminal(Ctrl + t) and paste the following command: <source lang="bash"> sudo apt-get install build-essential git flex bison libgmp3-dev libmpfr-dev libncurses5-dev libmpc-dev autoconf texinfo libtool libftdi-dev libusb-1.0-0-dev zlib1g zlib1g-dev python-yaml </source>

Execute by pressing enter. This will build all the required tools, for which the summon-arm script can be used. For me it didn’t work right out of the box, so I modified the script a bit. You can download the modified version here

Unzip the files to some directory with this command:

<source lang="bash"> cd PATH_TO_DOWNLOADED FILE unzip summon-arm-toolchain.zip cd summon-arm-toolchain chmod +x summon-arm-toolchain ./summon-arm-toolchain </source>

Wait for it to finish building (it will take a while). While this is building, you can make sure that the tools are in you path by opening another terminal and typing (make sure to replace YOU_USER with your user name):

sudo su
echo 'export PATH=/home/YOUR_USER/sat/bin:$PATH' > /etc/profile.d/arm_tools.sh
exit

flytta .bin fil från dator till STM32

Detta kan göras på två sätt. Antingen använder man ett Discovery-kort. Eller så [Förberedelse programmering STM32#Boot-loader | boot-loadar] man sitt program till stm32'an.

St-Link V2 på ett Discovery kort

Det spelar ingen roll vilken version(F0,F1, ... ,F4), de har alla samma St-link inbyggd. Det finns även i Lokalen att låna. på Discovery-kortet sitter det dels en så kallad "programmerare" och dels en stm32. vi ska använda programmeraren för att programmera om vår stm32'a. ta bort de två jumpers som är markerade "ST-LINK DISCOVERY" för att programmera genom SWD porten. annars kommer stm32'an på discovery-kortet att programmeras.

Boot-loader

detta sätt används på introARM. innan du kan Boot-load'a ditt programm till stm32'an för första gången måste en boot-loader programmeras( överföras) på stm'32an. det sker

  • CAN
  • UART (möjligt över bluetooth?)

Debugga

det är sällan man skriver en kod som fungerar på direkten. då är det oftast bättre att använda ett debugging-verktyg än att slumpmässigt börja ändra i sin kod. för att fixa igång detta följer du Benjamin Vedders Guide.

IDE är trevligt

Man kan tröttna snabbt på att knacka ihop kod i en ordbehandlar, skriva make i terminalen för att sedan använda st-link eller boot-loader för att skicka över programmet. då kan man kolla på en Integrated Developement Environment, IDE. Eclipse är en sådan IDE, den hjälper dig väldigt mycket när du skriver kod, och den kan även integrera kompilatorn, så att du trycker på en knapp i GUIn för att kompilera istället för att skriva make i en terminal.