Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

STM32F4 - setup na linux-u

[es] :: Elektronika :: Mikrokontroleri :: STM32F4 - setup na linux-u

[ Pregleda: 2400 | Odgovora: 15 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15267
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2323 Profil

icon STM32F4 - setup na linux-u20.02.2012. u 08:23 - pre 105 meseci
resih da probam ovaj gnuarm plagin za aclipse i radi lepo ... za sada bez debagiranja ...

A. gcc za arm

1. instalirate Sourcery G++ Lite 2011.03-42 for ARM EABI (direktan link i za linux i za windows da se ne registrujete bez veze: https://sourcery.mentor.com/sgpp/lite/arm/portal/release1802 )

2. raspakujete ga de vam odgovara
3. napravite "setenv.sh" fajl koji izgleda otprilike ovako

Code:

#!/bin/sh

PATH=/home/arhimed/bin/arm/bin:\
          /home/arhimed/bin/arm/arm-none-eabi/bin:\
          /home/arhimed/bin/arm/libexec/gcc/arm-none-eabi/4.5.2:\
          /home/arhimed/bin/arm/libexec/gcc/arm-none-eabi/4.5.2/install-tools:\
          $PATH

export PATH

dakle ovo je fajl ako vam je codesourcery instaliran u /home/arhimed/bin/arm/ ako ga stavite negde drugde, jeli, promenite to :D


B. ECLIPSE

1. instalirati eclipse ( http://www.eclipse.org/downloads/ ) i to Eclipse IDE for C/C++ Developers verziju
2. odraditi update eclipse-e (startujete, help, check for updates)
3. instalirati gnu-arm ( http://gnuarmeclipse.sourceforge.net/blog/ ), to je najlakse tako sto u eclipse idete na help / install new software / kliknete na ADD dugme da dodate uri, dodate uri: http://gnuarmeclipse.sourceforge.net/updates onda iz liste odaberete gnu-arm i instalirate ga
4. zatvorite eclipse
5. napravite skript za pozivanje eclipse-a, treba da izgleda otprilike ovako:

Code:

#!/bin/sh

. /home/arhimed/bin/arm/setenv.sh
cd /home/arhimed/bin/eclipse
/home/arhimed/bin/eclipse/eclipse


jeli podrazumeva da je onaj setenv od codesourcery u /home/arhimed/bin/arm/setenv.sh i da je eclipse binary u /home/arhimed/bin/eclipse

to resava problem eclipse-a

C. TEXANE GDBSERVER za ST-Link1 i ST-Link2

1. povucite source sa https://github.com/texane/stlink (mkdir ~/Dev/TEXANE; cd ~/Dev/TEXANE; git clone git://github.com/texane/stlink.git; cd ~/Dev/TEXANE/texane/stlink; make )
2. dodajte u /etc/udev/rules.d/40-stlink.rules (kao root naravno)
Code:

SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="3748", MODE:="0666", SYMLINK+="stlinkv2_%n"


Ovo ce omoguciti da imate pravo da pisete i citate po STLINK-u i kao obican user (MODE:="0666" jeli pravi da i obicam user ima RW pristup)
3. steknite STM32F4_DISCOVERY u komp i probajte texane gdb server
cd ~/Dev/TEXANE/texane/stlink/gdbserver; ./st-util -s 2 -v99 -p 9999 )
4. ukinite gdbserver (ctrl+c)



 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15267
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2323 Profil

icon Re: STM32F4 - setup na linux-u20.02.2012. u 08:42 - pre 105 meseci
SETOVANJE ECLIPSE-a

primer projekat zakacen. Najlakse je uvek pocinjati od ovog primera i samo dalje kalemiti na njega

NEW-PROJECT-C-PROJECT-CodeSourcery

project properties screen-ovi zakaceni

obratite paznju da kada podesavate stvari, morate da podesite i za DEBUG i za RELEASE konfiguraciju !!!

bitne stavke
1. Target processor - CORTEX-M4, Thumb
2. Debugging - debug level MAXIMUM za DEBUG configuraciju, NONE za release
3. ARM Sourcery GCC Assembler - ostaviti kako je po default-u
4. ARM Sourcery GCC C Compiler - Directories - dodati u include path direktorijume prema slici (morate u vas projekat prvo da iskopirate template koji je zakacen). Dakle dodaje se "project dir", Libraries/Device/STM32F4xx/Include, Libraries/STM32F4xx/StdPeriphj_Driver/inc, Libraries CMSIS/Include, Utilities/STM32_EVAL
5. ARM Sourcery GCC C Compiler - Optimization - OBAVEZNO NA NONE u debug verziji
6. ARM Sourcery GCC C Linker - General - U script file odabrati stm32_flash.ld fajl iz template-a (zakacen) i obavezno iskljuciti polje "do not use standard start files" (posto vam je neophodan start file iz template-a)

To mu dodje to ...

Verujem da zelite i da iskljucite Project/Build automatically (ne znam koji je genije ovo stavio upaljeno po default-u, smara na kvadrat)

Zakaceni fajlovi

1. slike*.zip (sve slike za setovanje eclipse-a)
2. template.zip (ako napravite novi projekat, prazan, samo ovo raspakujete u njega i kliknete desnim na ime projekta pa refresh i onda setujete propertie od projekta kao sto sam napisao malopre
3. project.tar.bz2 (ovo je isto kao template.zip + ima projekt fajlove iz mog eclipse-a u kome su sve stvari podesene, e sad ne znam kako ce to da se ponasa na drugoj masini sa drugim putanjama al mozete da probate da samo otvirite direktno ovaj projekat, mozda proradi, moralo je kao bz2 posto kao zip bude oko mega ipo sto ne moze da se zakaci, sva sreca bz2 ga napravi na 800k :D )


primer sta treba da vam izadje u "console" prozoru kada bildujete ovaj projekat:

Code:

(prebaceno u attachment)


[Ovu poruku je menjao bogdan.kecman dana 20.02.2012. u 11:05 GMT+1]
Prikačeni fajlovi
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15267
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2323 Profil

icon Re: STM32F4 - setup na linux-u20.02.2012. u 09:17 - pre 105 meseci
sad kako da napecemo i debagiramo ovo na linux-u

za pocetak, samo rucno (jos uvek nisam probao da to integrisem sa eclipsetom)

1. iskompajliramo projekat u eklipsu
2. startamo 2 shell-a

shell1:
> cd /Dev/TEXANE/texane/stlink/gdbserver
> ./st-util -s 2 -p 9999

i dobijemo nesto ovako:
Code:

[[email protected] gdbserver]$ ./st-util -s 2 -p 9999
2012-02-20T09:54:40 INFO src/stlink-common.c: Loading device parameters....
2012-02-20T09:54:40 INFO src/stlink-common.c: Device connected is: F4 device, id 0x20006411
2012-02-20T09:54:40 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 *:9999...


Ovo sto smo startovali je takozvani GDB SERVER. Ovaj ume da radi sa ST-Linkom, ako smo hteli da radimo sa nekim drugim debag interface-om (neki jtag na primer) onda bi tu startovali neki drugi gdb server. Tu mozemo da pratimo sta se desava, ali startujemo drugi shell da bi isli da debagiramo nas projekat


shell2::
> cd ~/workspace/test1/Debug
> ls -la *elf


Videcemo ovde da imamo nas test1.elf (ili kako vam se vec zove projekat). To je binary koji nam treba. Tu postoji i test1.hex koji mozemo koristiti iz nekih drugih aplikacija za programiranje, ali za rad kroz gdb + gdb proxy elf je format koji nam treba. Sada ide copy/paste iz mog shell-a valjda je jasno sta radim:

Code:

[[email protected] Debug]$ which arm-none-eabi-gdb 
~/bin/arm/bin/arm-none-eabi-gdb
[[email protected] Debug]$ arm-none-eabi-gdb ./test1.elf 
GNU gdb (Sourcery G++ Lite 2011.03-42) 7.2.50.20100908-cvs
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "--host=i686-pc-linux-gnu --target=arm-none-eabi".
For bug reporting instructions, please see:
<https://support.codesourcery.com/GNUToolchain/>...
Reading symbols from /home/arhimed/workspace/tmp/test1/Debug/test1.elf...done.
(gdb) target remote localhost:9999
Remote debugging using localhost:9999
Reset_Handler () at ../startup_stm32f4xx.S:69
69      movs  r1, #0
(gdb) load
Loading section .isr_vector, size 0x188 lma 0x8000000
Loading section .text, size 0xe2e8 lma 0x8000188
Loading section .init_array, size 0x4 lma 0x800e470
Loading section .fini_array, size 0x4 lma 0x800e474
Loading section .data, size 0x3c lma 0x800e478
Loading section .jcr, size 0x4 lma 0x800e4b4
Start address 0x800e3dc, load size 58552
Transfer rate: 5 KB/sec, 6505 bytes/write.
(gdb) break main
Breakpoint 1 at 0x800dfee: file ../main.c, line 47.
(gdb) c
Continuing.
Note: automatically using hardware breakpoints for read-only addresses.

Breakpoint 1, main () at ../main.c:47
47      volatile int i = 0;
(gdb) print i
$1 = 0
(gdb) c
Continuing.
^C
Program received signal SIGTRAP, Trace/breakpoint trap.
0x0800e068 in main () at ../main.c:69
69          for (i=0;i<1000000;i++);
(gdb) print i
$2 = 142108
(gdb) quit
A debugging session is active.

    Inferior 1 [Remote target] will be killed.

Quit anyway? (y or n) y
[[email protected] Debug]$ 


dakle bitno je da startujemo gdb iz codesourcery paketa, ako se zeznemo i startujemo obican GDB gomila stvari ce da deluje kao da radi a nece raditi :D (greska koju cine mnogi pocetnici)

"target remote localhost:9999" se kaci na nas TEXANE gdb server (obratite paznju da kada izadjete iz gdb-a, gdbserver se sam gasi, tako da morate da ga startujete opet ako ponovo debagirate)

"load" ucitava nas ELF fajl u flash STM32F4 mikrokontrolera kroz ST-Link2

"break main" postavlja breakpoint na pocetak main funkcije

"c" je "continue" dakle startujemo program

on se onda zaustavlja na main, sledece "c" ga pusti da radi dalje, sa "ctrl+C" ga prekidamo u nekom slucajnom momentu, on nam kaze gde je stao, pitamo ga koja je vrednost i u tom trenutku, dobijemo nazad ... dakle debagiranje radi ali rucno .. sad samo videti kako to isto ali kroz eclipse :D


 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15267
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2323 Profil

icon Re: STM32F4 - setup na linux-u20.02.2012. u 09:19 - pre 105 meseci
ja sad mora da idem malo da zaradim za leba a ko ima vremena + linux + stm32F4 moze da proba sada da integrise ovo debagiranje u samo eclipse
 
Odgovor na temu

HeYoo

Član broj: 72595
Poruke: 491



+1017 Profil

icon Re: STM32F4 - setup na linux-u22.02.2012. u 22:29 - pre 105 meseci
Stigla danas plocica pa sam uhvatio vremena da prodjem kroz setup i posle malo lupanja u celo proradilo je ali nisam nesto siguran da cu se zadrzati na ovome.

Setovanja za path se primenjuju samo u toku izvrsavanja prve skripte pa sam stavio da se eclipse pokrece iz nje.
Za glupe biblioteke je potrebno navesti svaki podpoddirektorijum u podesavanjima. To je radilo super za tvoj test primer ali sam posle pokusao da ubacim primere sa st sajta i pocela je igranka sa medjuzavisnostima ili ja nisam skontao kako se pravilno importuju projekti. U medjuvremenu sam instalirao atolic i proradilo je bez ikakvih zezanja.
Gdb radi super samo opet bi bilo srecnije kada bi se integrisalo u eclipse da ne bi svako malo vijali putanju. Pogledacu malo po netu moze li se kako nabudziti.
 
Odgovor na temu

HeYoo

Član broj: 72595
Poruke: 491



+1017 Profil

icon Re: STM32F4 - setup na linux-u22.02.2012. u 23:48 - pre 105 meseci
hmm mislim da sam pronasao

-Instalirati u eclipse:
Indigo - http://download.eclipse.org/releases/indigo
Mobile and Device Development > C/C++ GDB Hardware Debugging

-Debug configurations > GDB Hardware Debugging > new
C/C++ Application: elf fajl
Project: ime projekta
Debugger>GDB command: arm-none-eabi-gdb
Port number: 9999

To je to.. pre debagiranja potrebno je pokrenuti vec pomenuti: ./st-util -s 2 -p 9999
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15267
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2323 Profil

icon Re: STM32F4 - setup na linux-u23.02.2012. u 02:46 - pre 105 meseci
da, da mobile debugging resava problem ...

elem, mislim da je mnooogo jednostavnije za pocetaj terati atolic posto sve ove biblioteke rade direkt 1/1 sa istim .. (doduse zahteva vbox+winxp ali ..)
 
Odgovor na temu

HeYoo

Član broj: 72595
Poruke: 491



+1017 Profil

icon Re: STM32F4 - setup na linux-u23.02.2012. u 14:04 - pre 105 meseci
Ma mislim da u atolicu rade 1/1 zato sto oni demo projekti dolaze iskonfigurisani. Prostim nabacivanje fajlova ne radi i dobijaju se slicne greske kao u linux varijanti.
Verovatno je bitan i prioritet po kom su poredjani import direktorijumi.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15267
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2323 Profil

icon Re: STM32F4 - setup na linux-u23.02.2012. u 14:33 - pre 105 meseci
prioritet nije preterano bitan, ali ove biblioteke su malo skucane.. ja sam ih malo prisredio al .. nije to to ..
 
Odgovor na temu

HeYoo

Član broj: 72595
Poruke: 491



+1017 Profil

icon Re: STM32F4 - setup na linux-u02.03.2012. u 16:35 - pre 105 meseci
Bogdane u cemu je fora s ovim bibliotekama?
Ponovo sam pokusao da se zezam sa ovim na linuxu i vidim da cim se ubaci komplikovanij projekat pozali se na definicije. Kakva se to magija desava u atollicu pa ih on vidi bez dodefinisanja?

Inace probao sam usb cdc sto su cesi prokljuvili http://mcu.cz/comment-n2800.html i radi ok
 
Odgovor na temu

Odin D.
Mlađi referent za automatizaciju
samoupravljanja

Član broj: 37292
Poruke: 2549



+8367 Profil

icon Re: STM32F4 - setup na linux-u02.03.2012. u 17:00 - pre 105 meseci
^ Mislim da nema nikakve posebne "fore" kod Atollica, ako razvijes ono stablo biblioteka u Atollic projektu, vidjeces da je manje-vise SVE ukljuceno u njega, a ne samo one koje "direktno" koristis u svom projektu.
Ako ih sve nanizes i kod sebe, nece imati na sta da se zali...
 
Odgovor na temu

HeYoo

Član broj: 72595
Poruke: 491



+1017 Profil

icon Re: STM32F4 - setup na linux-u02.03.2012. u 19:30 - pre 105 meseci
Naravno da sam sve include direktorijume ukljucio bas kao i u atollic-u ali izbaci pregrst gresaka. Mogu ih se na silu resiti tako sto redom nadjem u kom fajlu je definisano to na sta se buni pa dodam #include "xy.h" i slicno ali nije bas zgodno kopati po "lavirintu". Atollic radi stvarno 1/1, nemam zamerki. Mene samo interesuje zbog cega se konkretno to desava tj gde je kvaka.
 
Odgovor na temu

the_tosic

Član broj: 37314
Poruke: 381
*.ptt.rs.



+128 Profil

icon Re: STM32F4 - setup na linux-u02.03.2012. u 19:35 - pre 105 meseci
Daj koje su greske, i ja sam kompajlirao taj primer (doduse sa makefile-om) al sam zaboravio sta je bio problem.
Verovatno imas "visak" .h file-ova ili neke funkcije vise puta definisane pa mozda treba da exclude-ujes neke C fajlove iz Library
 
Odgovor na temu

HeYoo

Član broj: 72595
Poruke: 491



+1017 Profil

icon Re: STM32F4 - setup na linux-u02.03.2012. u 21:03 - pre 105 meseci
Nisam mislio na Bogdanov primer gde se jasno vidi sta se odnosi na sta pa se samo ukloni visak koji smeta tj ostavim samo ono sto je neophodno. Problem su ovi komplikovaniji primeri sto dolaze u paketu sa bibliotekama ili recimo ovo danas sto sam pokusao (http://mcu.cz/images/newspost_images/28/00/vcp2.zip).
Greske su tipa:
#error "USB_OTG_HS_CORE or USB_OTG_FS_CORE should be defined" usb_conf.h /usb_cdc/src line 164 C/C++ Problem
#error "USE_USB_OTG_HS or USE_USB_OTG_FS should be defined" usb_conf.h /usb_cdc/src line 177 C/C++ Problem

Mozes li postaviti primer makefile-a i ukratko kako barats s njim?
 
Odgovor na temu

the_tosic

Član broj: 37314
Poruke: 381
*.ptt.rs.



+128 Profil

icon Re: STM32F4 - setup na linux-u03.03.2012. u 08:21 - pre 105 meseci
Ispod u komentarima je neko napisao
Citat:
6) to eliminate the above-mentioned compiler error in the file edit usb_conf.h defined as follows
#ifndef USE_USB_OTG_FS
#define USE_USB_OTG_FS
#endif / * USE_USB_OTG_FS * /


Ono sto greska kaze je da nisu definisani USB_OTG_HS_CORE ili USB_OTG_FS_CORE ni USE_USB_OTG_HS ili USE_USB_OTG_FS.
U zavisnosti od moda rada USB-a treba odkomentarisati neke #define-ove iz usb_conf.h
Znaci odkomentarisi #define USE_USB_OTG_FS

Evo u attachmentu mog makefile-a (odnosno moje prepravke nekog drugog)
Prikačeni fajlovi
 
Odgovor na temu

HeYoo

Član broj: 72595
Poruke: 491



+1017 Profil

icon Re: STM32F4 - setup na linux-u03.03.2012. u 13:37 - pre 105 meseci
U pravu si, hvala.
Ja sam bio dekomentarisao obe linije pa je nastavio da se buni. Tako je kad se radi napamet :)
U atollicu je to definisano u podesavanjima projekta pa zato nije pravio nikakve probleme.
 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: STM32F4 - setup na linux-u

[ Pregleda: 2400 | Odgovora: 15 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.