Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 20 kwi 2024, o 09:29


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 14 ] 
Autor Wiadomość
PostNapisane: 3 kwi 2016, o 19:49 
Offline
Użytkownik

Dołączył(a): 18 cze 2015
Posty: 31
Pomógł: 0

Od jakiegoś czasu walczę z doskoku z STM32. Dotychczas używałem opcji 'Build for Debug' w Atollic oraz 'Debug' w SW4STM.
Dzisiaj postanowiłem to przestawić na 'Release'. Dodam, że konfigurację ustawiam wybraną z predefiniowanych dla AC6 albo z opcji Default.
W SW4STM mam komunikat z konsoli:

Cytuj:
19:37:01 **** Incremental Build of configuration rel2 for project test6 ****
make all
'Building file: ../Src/main.c'
'Invoking: MCU GCC Compiler'
C:\work_swstm\test6\rel2
arm-none-eabi-gcc -mthumb -mfloat-abi=soft -O3 -Wall -fmessage-length=0 -ffunction-sections -c -MMD -MP -MF"Src/main.d" -MT"Src/main.o" -o "Src/main.o" "../Src/main.c"
../Src/main.c:34:27: fatal error: stm32f4xx_hal.h: No such file or directory
compilation terminated.
make: *** [Src/main.o] Error 1

19:37:02 Build Finished (took 479ms)


Kiedy skopiuję ten plik z folderu w projekcie gdzie się początkowo znajduje do folderu src to prosi o kolejny plik. Kiedy mu go podam to chce następny itd.

W Atollic:

Cytuj:
19:40:55 **** Rebuild of configuration rel2 for project test6 ****
Info: Internal Builder is used for build
arm-atollic-eabi-gcc -c -mcpu=cortex-m0plus -std=gnu90 -Os -Wall -o Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim.o ..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim.c
..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim.c:1:0: error: target CPU does not support ARM mode
/**
^

19:40:55 Build Finished (took 86ms)


Dla obydwu kompiluję zaimportowany projekt stworzony w CubeMX dla płytki F4Discovery.

Kiedy używam opcji Debug wszystko przechodzi bez zająknięcia. Jakieś porady?

Edit:
Dodam, że projekty przygotowane do pracy na rejestrach (bez HAL czy SPL, bazujące na gotowcach z Atollic ale przerobione przez usunięcie wszystkiego co HALowe czy SPLowe) w Atollic kompilują sięw opcji 'Release' bezproblemowo. SW4STM jeszcze nie sprawdziłem. Ale to bez znaczenia, potrzebuję możliwości pracy na HALu w Atollic albo najlepiej SW4STM



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2016, o 07:32 
Offline
Użytkownik

Dołączył(a): 25 lip 2015
Posty: 140
Zbananowany użytkownik

Pomógł: 18

Rozumiem, że w ramach jednego projektu, opcja Debug się kompiluje, a Release nie?

Jeśli tak, to w opcjach projektu (SW4STM) porównaj sobie jak wyglądają zakładki Paths and Symbols w C/C++ General dla Debug, a jak dla Release. Podobnie zakładka Settings -> Includes w C/C++ Build.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 kwi 2016, o 21:41 
Offline
Użytkownik

Dołączył(a): 18 cze 2015
Posty: 31
Pomógł: 0

W SW4STM - ekhm, no dla release jest jakby pusto. Nie ma ścieżek do folderów itp. itd.
To Release to ja musiałem sam utworzyć przez ikonę ustawień obok 'Młotka'. Wybrałem profil Executable dla AC6 i ustawiłem jako aktywny. W projektach bez HALa w Atollicu miałem Release chyba od razu.

Co dalej? Może masz jakiś poradnik konfiguracji Eclipse?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 kwi 2016, o 23:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

http://www2.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-ides/sw4stm32.html
Nic nie musisz ustawiać. Wszystko sam instaluje. ;)

A dalej to co masz za procka, płytkę?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 kwi 2016, o 07:34 
Offline
Użytkownik

Dołączył(a): 25 lip 2015
Posty: 140
Zbananowany użytkownik

Pomógł: 18

Skoro jak piszesz opcja Debug Ci działa, to otwórz sobie opcje projektu, i porównaj sobie zawartość okien dla opcji Debug i Release, a w szczególności:
    C/C++ Build -> Settings -> Tool Settings -> Includes
    C/C++ Build -> Settings -> Tool Settings -> Symbols
    C/C++ General -> Path and Symbols

Jeśli projekt importujesz z CubeMX, do oczywiście wybrałeś tam opcje eksportu do SW4STM?

Ostatnio na łamach EP było opisywane tworzenie projektu z użyciem narzędzi, o które pytasz. Na YT też znajdziesz kilka tutoriali. Może warto tam popatrzeć.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 maja 2016, o 21:25 
Offline
Użytkownik

Dołączył(a): 18 cze 2015
Posty: 31
Pomógł: 0

Tak wybrałem opcję SW4STM. Widzę, że ustawienia, o których piszesz są inne ale szczerze mówiąc nie znalazłem jeszcze źródła, które kompleksowo by to opisywało. Przypuszczam, że jest to jakaś głupia opcja, która nie mówi wprost czym jest.

@anshar:
używam właśnie SW4STM i się samo instaluje ale nie mogę zrobić release project. A uczę się tego wszystkiego z doskoku i nie mam czasu poznawać Eclipse od podszewki. Póki co równolegle uczę się bez HAL, na rejestrach, ale fajnie byłoby mieć już środowisko z HAL działające w pełni.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 maja 2016, o 23:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

W SW4STM robię tak:
1. Opalam CubeMX, ustawiam co trzeba, zapisuję projekt i generuję kod pod SW4STM.
2. Otwieram wygenerowany projekt w SW4STM, dodaję w pętli while jakieś proste miganie diodą np:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

3. Kompiluję i sprawdzam czy wszystko działa, używając Debug oczywiście. Jeśli dioda LED miga to następny krok.
4. Klikam w "Manage Configuration for the current project (po lewo od młoteczka)
5. Wyskakuje okienko w którym klikam "New", w nowym oknie wpisuję w "Name: Release"
6. Upewniam się, że mam wybrane "Existing configuration Debug" czyli (Copy setting from - kopiuj ustawienia z profilu Debug)
7. Klikam OK i znowu OK
8. Sprawdzam czy gdy kliknę na strzałkę obok młoteczka to mam do wyboru dwie opcje Debug lub Release, jeśli tak to następny krok.
9. Klikam prawym przycikiem myszy na nazwę projektu i wybieram "Proporties"
10. w C/C++ Build/Settings/Optimization dla profilu Debug wybieram None (-O0) lub Optimize for Debug (-Og)
dla profilu Release wybieram Optimize for size (-Os)
11. w C/C++ Build/Settings/Debugging dla profilu Debug wybieram Maximum (-g3)
dla profilu Release wybieram (-Os) lub (-O1)
12. w C/C++ Build/Settings/Build Steps w okienku Post-build steps/Command: (dla profilu Release) zmieniam bin na hex
Debug:
arm-none-eabi-objcopy -O binary "${BuildArtifactFileBaseName}.elf" "${BuildArtifactFileBaseName}.bin" && arm-none-eabi-size "${BuildArtifactFileName}"
Release:
arm-none-eabi-objcopy -O binary "${BuildArtifactFileBaseName}.elf" "${BuildArtifactFileBaseName}.hex" && arm-none-eabi-size "${BuildArtifactFileName}"
13. Klikam Apply i OK
14. Sprawdzam czy kompiluje się zarówno dla profilu Debug jak i Release

Daj znać proszę czy wszystko co napisałem jest jasne. U mnie działa bezproblemowo.
Pozdrawiam.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 maja 2016, o 00:22 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

15. Jeśli działa prawidłowo Release to teraz możemy wgrać do procka Kliknij prawym przyciskiem na projekcie, wybierz Target->Program chip, oczywiście z profilu Release, a nie z Debug.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 maja 2016, o 22:14 
Offline
Użytkownik

Dołączył(a): 18 cze 2015
Posty: 31
Pomógł: 0

Chyba działa! Przynajmniej się kompiluje i tworzy plik .hex Nie mogę teraz wgrać programu do uC ale w ciągu kilku dni dam znać czy kompilacja przyniosła pożądany efekt. Zresztą problemem były błędy kompilacji.

Pytanie 1: Jedynie co mam inaczej niż w Twojej konfiguracji to pkt. 11: dla Release mogę wybierać tylko pomiędzy: None, Minimum, Default, Maximum. Rozumiem, że jest to stopień optymalizacji dla Debugowania?
Pytanie 2: pkt 10 rozumiem, że to stopień optymalizacji pod "coś" Możesz przybliżyć ten temat?
Pytanie 3: gdzie zdobyłeś wiedzę na temat Eclipse? Ja nie mam czasu walczyć z tymi ustawieniami przez to 'wymęczyłem' odpowiedź, ale fajnie byłoby stać się niezależnym. Może być po angielsku.
Pytanie 4: w zakładce 'Problems' nadal mam błędy:
Description Resource Path Location Type
Program "g++" not found in PATH 1_GPIO Project Properties, C++ Preprocessor Include.../Providers, [CDT Cross GCC Built-in Compiler Settings] options C/C++ Scanner Discovery Problem
Program "gcc" not found in PATH 1_GPIO Project Properties, C++ Preprocessor Include.../Providers, [CDT Cross GCC Built-in Compiler Settings] options C/C++ Scanner Discovery Problem

Nie wiedziałem, że mogę programować z poziomu środowiska. Miłe. Nie będę musiał latać między Eclipse a ST-Link Utility.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 maja 2016, o 22:59 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Odpowiedz 1 i 2:
Jeśli chodzi o optymalizację:
https://gcc.gnu.org/onlinedocs/gnat_ugn/Optimization-Levels.html
http://osworld.pl/kompilacja-w-gcc-krok-po-kroku/

Przyjąłem, że dla profilu Debug będę potrzebował debugera, który wyłapie wszystkie bugi. ;)
Dlatego wybieram Maximum (-g3), oraz ustawiam bez optymalizacji None lub Optimize for Debug (-Og)

W profilu Release będę potrzebował wykonywalnego pliku, już zdebugowanego (profil Debug), ale również zoptymalizowanego (profil Release), dlatego wybieram pozom debugowania (None) i dla przykładu poziom optymalizacji Optimize for Size (-Os)
Wszystko zależy od projektu.
3:
Metodą prób i błędów, oraz:
http://www.sunduino.pl/wordpress/category/arm/
http://www.openstm32.org
http://www.google.com i do przodu;)
Odpowiedz 4:
Nie wiem czemu tak się u Ciebie dzieje, u mnie jest OK. Zobacz czy tak jest z każdym projektem czy tylko z tym jednym?
Sądzę, że błędy te są nieistotne skoro się kompiluje. ;)


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 maja 2016, o 14:33 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

proponuję na spokojnie poczytać o srodowiskach różnych
w sumie dla arm , oraz w miarę możliwości postawić sobie samemu eclipse
to daje sporo do myślenia.

Z ST-linkiem pod clipse jest trochę zabawy gdyż niema w sumie jako takiego
dobrego i niezawodnego servera GDB dla niego , można w prawdzie użyć niejako pasożytniczo
tego z Atolica , ale jest jeszcze fajnie działający TEXANE

http://www.sunduino.pl/wordpress/eclips ... rm-part-1/
http://www.sunduino.pl/wordpress/eclips ... nk-segger/
http://www.sunduino.pl/wordpress/kepler ... t-linkiem/

w sumie lepsze rozwiązanie i łatwiejsze to używanie J-Linka ,. ale wiąże się z wydatkami i to sporymi
nie mniej co i z czym ugryźć znajdziesz tu

http://www.sunduino.pl/wordpress/jtag-owe-abc/

jest jeszcze mało udana wersja gdb... w sumie przez texane dałem sobie spokój

http://www.sunduino.pl/wordpress/eclips ... n-edition/

w każdym razie daje jakoś się to wszystko w miarę skutecznie posklejać i nawet działa
a jak ... musisz sam ocenić :)


Autor postu otrzymał pochwałę

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 maja 2016, o 19:27 
Offline
Użytkownik

Dołączył(a): 18 cze 2015
Posty: 31
Pomógł: 0

Dla błędów w zakładce 'Problems' rozwiązaniem było wklejenie z Atollica(!) plików g++.exe i gcc.exe do głównego folderu SW4STM. To takie rozwiązanie na szybko. Pamiętam, że gdzieś kiedyś trafiłem na podobny problem, w którymś środowisku i też musiałem skądś podkradać pliki (może to właśnie był Atollic? instalka ma kilka miesięcy).

Do tego musiałem zmienić plik docelowy Release z .hex na .bin ponieważ dla plików .hex ST-Link Utility wyrzucał następujący błąd:
'Encountered an improper argument'.

To tak gdyby ktoś miał podobne problemy.

Dziękuję za źródła i i pomoc. Spróbuję powalczyć z materiałami z linków. (Dostałem trochę środowiskiem w twarz: dla Atmegi mamy wszystko podane na tacy w filmach na youtube i płycie z niebieską książką a tutaj masz i radź sobie sam :/ ).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 maja 2016, o 19:40 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

Nie tak do końca :)

jest paskudna Luna co to wymodziłem ....
http://www.sunduino.pl/wordpress/eclips ... e-edition/


Autor postu otrzymał pochwałę

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 maja 2016, o 19:47 
Offline
Użytkownik

Dołączył(a): 18 cze 2015
Posty: 31
Pomógł: 0

Super sprawa! Wypróbuję w wolnej chwili.
Póki co muszę się skupić na nauce programowania.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 14 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO