Difference between revisions of "Förberedelse programmering STM32"

From Chalmers Robotförening
Line 87: Line 87:
You have to build QSTLink2 from source in order to use it. First, install some dependencies:
You have to build QSTLink2 from source in order to use it. First, install some dependencies:


<source lang="bash">
sudo apt-get install qt4-qmake libqt4-dev libqt4-gui libqt4-xml qt4-designer qtcreator libusb-0.1-4 libusb-1.0-0-dev
sudo apt-get install qt4-qmake libqt4-dev libqt4-gui libqt4-xml qt4-designer qtcreator libusb-0.1-4 libusb-1.0-0-dev
</source>


Now unzip QSTLink2 to some directory and cd to it from a terminal. Then type:
Now unzip QSTLink2 to some directory and cd to it from a terminal. Then type:


<source lang="bash">
qmake-qt4
qmake-qt4
make
make
sudo make install
sudo make install
sudo reload udev
sudo reload udev
</source>


Plug in your STM32F4 Discovery board. You should now be able to start QSTLink2 (./qstlink2), connect to the STM32F4 Discovery and upload the binary file which is generated in the build directory of the sample project when running make.
Plug in your STM32F4 Discovery board. You should now be able to start QSTLink2 (./qstlink2), connect to the STM32F4 Discovery and upload the binary file which is generated in the build directory of the sample project when running make.

Revision as of 02:13, 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 and make the file runnable with this command (make sure to replace PATH_TO_DOWNLOADED FILE with the actuall path, probably this works:"~/Downloads"):

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

Build the toolchain with this command (Note this will take about 1 hour or so): <source lang="bash"> ./summon-arm-toolchain </source>

While this is building, you can make sure that the tools are in you path by opening another terminal(Ctrl + t) and typing (make sure to replace YOU_USER with your actuall user name):

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

This should make sure that you can run the tools from any directory without the need to specify the full path. For the path update to take effect you have to log out and log in again.

When the summon-arm script finishes, you should be able to build programs for the STM32F4 (and many other) microcontrollers and use hardware floating point support.

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å boot-load'ar 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 använda (ej låna med hem!). 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.

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

Upload the program to the STM32F4 discovery

In order to upload the binary files to the STM32F4 Discovery board I have been using a program called QSTLink2. I have modified the program a bit and added a button to upload the last uploaded file (which is pretty convenient) and fixed a few bugs in the cli interface. You can download the modified version here.

You have to build QSTLink2 from source in order to use it. First, install some dependencies:

<source lang="bash"> sudo apt-get install qt4-qmake libqt4-dev libqt4-gui libqt4-xml qt4-designer qtcreator libusb-0.1-4 libusb-1.0-0-dev </source>

Now unzip QSTLink2 to some directory and cd to it from a terminal. Then type:

<source lang="bash"> qmake-qt4 make sudo make install sudo reload udev </source>

Plug in your STM32F4 Discovery board. You should now be able to start QSTLink2 (./qstlink2), connect to the STM32F4 Discovery and upload the binary file which is generated in the build directory of the sample project when running make.

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.