INSTALOWANIE: Visual Studio Community 2017 + Visual Micro + Arduino ESP8266,ESP32,STM32

czyli praca pod Visual Studio , Visual Studio Code z mikrokontrolerami
w językach C i C++
ODPOWIEDZ
Awatar użytkownika
xbary
Użytkownik
Posty: 59
Rejestracja: 08 paź 2017, 19:59

INSTALOWANIE: Visual Studio Community 2017 + Visual Micro + Arduino ESP8266,ESP32,STM32

Post autor: xbary » 05 kwie 2018, 0:10

W tym prostym szybkim tutorialku chciałem zaprezentować kroki jakie trzeba wykonać aby prawidłowo zainstalować rozszerzenie Arduino IDE w Visual Studio. Postarałem się zautomatyzować niektóre czynności aby uniknąć różnych problemów natury zapomniałem kropki, mam nadzieje że mi się to udało.

Co będzie nam potrzebne żeby rozszerzenie śmigało od strzała ;)

1. Visual Studio Community 2017
Wymagane jest aby mieć zainstalowane funkcjonalności do Programowania aplikacji klasycznych w języku C++.

Jeśli ktoś tego niema to należy dokonać modyfikacji instalacji przez Visual Studio Installer.
Obrazek

2. Arduino IDE for Visual Studio
Potrzebne jest nam rozszerzenie które najlepiej zainstalować przez VS. Czyli MENU:Tools->Extensions and Updates ...
Obrazek
Rozszerzenie znajdujemy jak wyżej na obrazku :) ... postępujemy według zaleceń kolejno instalatora.

3. Konfiguracja VMICRO.

Tworzymy sobie katalog C:\Works\
i przy okazji w nim hardware i libraries (tak ma wyglądać C:\Works\hardware\ i C:\Works\libraries\)

Tutaj wyjaśnienie dlaczego taki a nie inny, chodzi o to że potrzebujemy katalog z naszymi instalacjami płytek arduino oraz projektów i wybrałem możliwie najbardziej czytelną i krótką nazwę. Zalecam tak katalog nazwać bo w kolejnych krokach instalacji będę w skryptach na sztywno używać tej lokalizacji.

W VS już po zainstalowaniu rozszerzenia wchodzimy sobie do konfiguracji MENU:TOOLS->Visual Micro->Configure Arduino Ide Location(s) ...
Obrazek

I tak powinna wyglądać konfiguracja jak wyżej.

4. Instalacja Python i GIT

To są dodatkowe narzędzia które są potrzebne do prawidłowego działania kompilatorów płytek ESP8266,ESP32. Oraz automatyzacja kopiowania z GITHUB.

Python w wersji 2, ( podobno 3 coś nie działa i trzeba się kopać z nim jak innymi narzędziami linuxo pochodnymi)
https://www.python.org/ftp/python/2.7.1 ... .amd64.msi
wersja 64bit i instalujemy jak każdą inną aplikacje w systemie. Można sobie zobaczyć jak się to mniej a więcej robi w moim poprzednim poście na temat instalowania arduino w Visual Studio Code.

GIT ostatnia wersja
https://github.com/git-for-windows/git/ ... 64-bit.exe
Tutaj też wybrałem wersje 64bit i ostatnią dostępną. Jak zainstalować to też można sobie zobaczyć w poprzednim poście.

Po instalacji obu narzędzi zalecam zrestartować system. Chyba że instalatory zadbały o zaaktualizowania zmiennej %path% w DOS, po to aby z każdego miejsca na dysku mieć dostęp do pythona i gita.

5. Instalacja płytek ESP8266

Na tą okazje uszykowałem taki skrypt:

Kod: Zaznacz cały

@c:
cd \Works
cd hardware
mkdir esp8266com
cd esp8266com
git clone https://github.com/esp8266/Arduino.git esp8266
cd esp8266/tools
python get.py
@echo "KONIEC INSTALACJI"
pause
Zapisujemy go w pliku: c:\works\installesp8266.bat
Zwróćcie uwagę w jakim katalogu i jak się nazywa ;)

Uruchamiamy go w eksploatorze windows własnie z tego katalogu...

Obrazek

Po wykonaniu skryptu tak powinno to wyglądać:
Obrazek

Włączmy Visual Studio , stwórzmy projekt i proszę:
Obrazek


6. Instalacja płytek ESP32

Tutaj również uszykowałem skrypt instalcyjny:

Kod: Zaznacz cały

@c:
cd \Works
cd hardware
mkdir espressif
cd espressif
git clone https://github.com/espressif/arduino-esp32.git esp32
cd esp32/tools
get.exe
@echo "KONIEC INSTALACJI"
pause
Zapisujemy go w pliku: c:\works\installesp32.bat

Uruchamiamy skrypt (jak wyżej przy płytce ESP8266).
Obrazek
Tak powinno to wyglądać :)

Obrazek

No i prosze , nawet się skompilowało. Trudne ?
eeeeeh chyba nie.

Tutaj muszę nadmienić jedną jeszcze sprawę. Otóż nigdzie nie jest napisane że te silniki tzw Core które wyżej opisałem jak zainstalować nie są wolne od błędów. Tworzone są w środowisku Linuxowym, oraz w większości twórcy dają gwarancje że w Arduino IDE Javovym będzie działać. Tutaj to uruchamiamy na arduino pod Visual Studio z pluginem i zawsze może coś nie tak być. Po prostu, kiedy ja się tym zacząłem zajmować, musiałem się borykać z wieloma niezgodnościami środowiskowymi , z czasem zostały one w oficjalnych wydaniach poprawione , i też nie wykluczone że w przyszłości się coś zmieni i może się okazać że ten przepis na przepyszne ciastka z kremem arduinowym będą wychodzić zakalcowate. :D :D Także niema co krzyczeć na cały świat że to nie działa i nie dobre... to się po prostu dopiero tworzy...

7. Płytki Arduino STM32

Kwestia STM32 jako arduino jest bardziej skomplikowana, będziemy musieli dokonać poprawek w niektórych plikach itd. ale zacznijmy od początku.
Ściągamy z GITHUB aktualny tzw core Arduino STM32.

Posiłkować się będziemy tym https://github.com/rogerclarkmelbourne/Arduino_STM32
Warto zapoznać się z informacjami na pierwszej stronie , są tam linki do forum oraz do dokumentacji.

Zrobimy podobnie jak poprzednio , uszykowałem do tego skrypcik.

Kod: Zaznacz cały

@c:
cd \Works
cd hardware
git clone https://github.com/rogerclarkmelbourne/Arduino_STM32.git Arduino_STM32

@echo "KONIEC INSTALACJI"
pause
zapisujemy go również w lokalizacji: C:\Works\installstm32.bat
i uruchamiamy w tym katalogu.

Obrazek
Tak to powinno wyglądać jak wyżej.

Kolejną czynnością którą trzeba zrobić już ręcznie, jest znalezienie Toolchain do ARM.
Jeśli już macie na dysku GNU Arm Embedded Toolchain to można pominąć czynność ściągania i instalowania do kroku gdzie będziemy w pliku PLATFORM.TXT zmieniać ścieżkę do kompilatora.

Wchodzimy sobie na stronę https://developer.arm.com/open-source/g ... /downloads
i ściągamy paczkę Windows ZIP.
Obrazek
Co ciekawe, w oryginalnej instrukcji jak zainstalować płytki STM32 jest ten krok instalowania Toolchaina zalecany przez instalowanie płytek Arduino SAM, tam automat ściągnie do tych płytek również kompilator. Ja zdecydowałem się że sam ściągnę ( przy okazji sprawdzę czy to działa :D ) ponieważ niemam Arduino SAM więc cały ten CORE niepotrzebny po prostu. Nas na tą chwile interesują płytki z STM32 jedyny słuszny normalny i prosty 32 bitowy mikrokontroler.

Po pobraniu wskazanego toolczajn, otwieramy archiwum ZIP w taki sposób jak niżej:
Obrazek
natomiast drugie okno szykujemy w katalogu też jak wyżej pokazałem, nie wiem czy nazewnictwo katalogów jest istotne, ale zalecam to zrobić jak wyżej pokazałem, będziemy przynajmniej wiedzieć co tam jest i w jakiej wersji na wejściu.
Oczywiście katalogi gdzie rozpakujemy archiwum tworzymy ręcznie w lokalizacji jak wyżej pokazałem.
Teraz pozostaje przenieść...
Obrazek
Powinno to wyglądać tak jak zdjęciu wyżej i kopiujemy sobie do schowka (CTRL C) zaznaczoną ścieżkę.
C:\Works\hardware\Arduino_STM32\tools\arm-none-eabi-gcc\7-2017-q4

Teraz pozostaje zmienić ścieżki w plikach PLATFORM.TXT właśnie na tą skopiowaną.

-> Edytujemy najpierw ten plik: C:\Works\hardware\Arduino_STM32\STM32F1\platform.txt
-> szukamy zmiennej compiler.path
-> zmieniamy ją na tak: compiler.path=C:\Works\hardware\Arduino_STM32\tools\arm-none-eabi-gcc\7-2017-q4\bin\
-> zapisujemy :)
Od tej chwili seria płytek opartych na STM32F1xx powinna korzystać z naszego kompilatora.

Sprawdźmy, uruchamiamy Visual Studio i tworzymy testowy projekt i kompilujemy.
Obrazek
No i prosze , chyba nie wymaga komentarza zdjęcie wyżej. (zakładam że wiecie jak posługiwać się IDE do programownaia....)

Aby nie zaginąć w akcji polecam nazywać projekty jak ja to zrobiłem , wtedy wiemy co do czego i jak skonfigurowane...
Obrazek
Jak wyżej widać na zdjęciu od początku mamy tworzone przez nas projekty i wiemy od razu na jakie płytki są pisane.
następnie mamy:
hardware - to katalog praktycznie z całym naszym arduino, jest tam komplet do ESPów oraz STMów :) dla nie poznaki nazwane Arduino gdzie w kręgach inżynierówch poniekąd doktorów nazywane SDK !? < ? :D
libraries - w tym katalogu znajdować się będą nasze dodatkowe libsy, czy te ściągnięte z internetów czy te nasze co napiszemy. Wszystkie one będą widoczne na każdym rodzaju arduino. z tego co pamiętam można w pliku konfiguracyjnym libsa wskazać na jakie płytki jest przeznaczony, ale myślę że #ifdef ... #define wystarczy aby libs inaczej działał na wybranych płytkach. :) albo w ogóle plując się komunikatem niekompatybilności.
Jak jesteśmy przy bibliotekach, od razu ostrzegam że może 5% libsów krążących w internecie do pobrania jest napisanych tak że dodajemy do projektu i używamy, pozostałe 95% niestety nieraz wymagają poprawek, można znaleźć błędy typowo programisty oraz surowe podejście do sprzętu bez kompilacji warunkowej. Więc trzeba być czujnym ;)

No dobrze ... pozostało nam jeszcze projekt wgrać do naszego STMa :)
pomimo że są tam do wyboru metody upload to ja nie widziałem żeby było można do STM32F103RBT6 wgrać Jlink-iem skompilowany program.
jak dobrze się rozejrzymy w katalogu C:\Works\hardware\Arduino_STM32\tools\win niby widać że jest obsługa Jlinka , nawet STlinka (< nie sprawdzałem)

Podam tu gotową recepturę jak zmusić aby jlinkiem również wgrać do STM32F103RBT6.
Oczywiście potrzebujemy kompletną instalacje do obsługi Jlink od SEGGERa , ja mam ją w katalogu:
C:\Program Files (x86)\SEGGER\JLink_V614b
No to edytujemy otwieramy sobie
C:\Works\hardware\Arduino_STM32\tools\win\jlink_upload.bat

Kod: Zaznacz cały

rem: @echo off
rem: Note %~dp0 get path of this batch file
rem: Need to change drive if My Documents is on a drive other than C:
set driverLetter=%~dp0
set driverLetter=%driverLetter:~0,2%
%driverLetter%
cd %~dp0
rem: the two line below are needed to fix path issues with incorrect slashes before the bin file name
set tmpBinFilePath=%1
set tmpBinFilePath=%tmpBinFilePath:/=\%

rem: create commander script file with the tmp bin that the Arduino IDE creates

@echo erase > %tmpbinfilepath%.jlink
@echo loadbin %tmpbinfilepath% , 0x8000000 >> %tmpbinfilepath%.jlink
@echo r >> %tmpbinfilepath%.jlink
@echo q >> %tmpbinfilepath%.jlink

JLink.exe -device STM32F103C8 -if SWD -speed auto -CommanderScript %tmpBinFilePath%.jlink
Widzimy od razu że w ostatniej lini ktoś coś zrobił i chyba tego nie testował. Na sztywno w argumencie podany jest STM z serii małych LQFP48, to jest problemem właśnie.
Zmieniamy ją na:
"C:\Program Files (x86)\SEGGER\JLink_V614b\JLink.exe" -device %2 -if SWD -speed auto -CommanderScript %tmpBinFilePath%.jlink
i zapisujemy :) plik. Teraz w drugim parametrze skryptu podajemy STMa w formie jlinkowego programatora jaki chcemy zaprogramować.
To tak nie do końca my podajemy ten drugi parametr, musimy wrócić do naszego już edytowanego :
C:\Works\hardware\Arduino_STM32\STM32F1\platform.txt
na samym szarym końcu tego pliku odszukajmy zmienną tools.jlink_upload.upload.pattern
i zmieniamy na tak żeby wyglądała ta linijka:
tools.jlink_upload.upload.pattern="{path}/{cmd}" "{build.path}/{build.project_name}.bin" {upload.devname}
dopisaliśmy drugi argument {upload.devname} do naszego wcześniej zmodyfikowanego skryptu jlinka. eh
Ta {upload.devname} to zmienna która swoją zawartość przyjmuje w pliku:
C:\Works\hardware\Arduino_STM32\STM32F1\boards.txt
tutaj dopiero trzeba namieszać :)
za dużo chyba niema się co rozpisywać, bo struktury tego pliku już sami twórcy nie potrafią okiełznać :D (podobno)

Kod: Zaznacz cały

genericSTM32F103C.menu.device_variant.STM32F103C8.upload.devname=STM32F103C8
genericSTM32F103C.menu.device_variant.STM32F103CB.upload.devname=STM32F103CB
genericSTM32F103R.menu.device_variant.STM32F103R8.upload.devname=STM32F103R8
genericSTM32F103R.menu.device_variant.STM32F103RB.upload.devname=STM32F103RB
genericSTM32F103R.menu.device_variant.STM32F103RC.upload.devname=STM32F103RC
genericSTM32F103R.menu.device_variant.STM32F103RE.upload.devname=STM32F103RE
genericSTM32F103R.menu.upload_method.jlinkMethod=JLink
genericSTM32F103R.menu.upload_method.jlinkMethod.upload.protocol=jlink
genericSTM32F103R.menu.upload_method.jlinkMethod.upload.tool=jlink_upload
genericSTM32F103R.menu.upload_method.jlinkMethod.build.upload_flags=-DCONFIG_MAPLE_MINI_NO_DISABLE_DEBUG=1 -DSERIAL_USB -DGENERIC_BOOTLOADER 
Takie oto wyżej dziwadła należy wstawić na koniec naszego board.txt .

Wracamy do naszego otwartego projektu w Visual Studio i tutaj żeby nasze zmiany zostały zauważone przez VS należy wykonać dwie czynności
najpierw:
Obrazek
oraz wybrać inną płytkę i wrócić z powrotem do Generic STM32F103R series .

Po czym następnie wybieramy uploadmethod: powinniśmy już widzieć JLink.
No to testujmy upload jlinkiem do STM32F103RBT6 podłączonym przez SWD.

Obrazek

No i proszę bardzo... nasz JLink wgrał arduinowy program do STM32 z serii RB.
Jak by się komuś chciało dopisać obsługę innej płytki i innego STM32 to należy postępować tak jak ja zrobiłem przy Generic STM32F103rb... dopisać cały upload method zmienijąc nazwy płytek oraz STMów.

Tutaj muszę wspomnieć taką sytuacje z twórcą tego CORE STMowego, bo sugerowałem te poprawki w oficjalnym repo, oraz poprawka w nazewnictwie katalogów przy bibliotece spi.cpp, niestety twórca stwierdził że to działa wszystko... Trzeba te poprawki sobie samemu zrobić.
Oczywiście należy jeszcze zwrócić uwagę na jeszcze jedną sprawe, otóż co jakiś czas wychodzi aktualizacja tego CORE do STM32, i warto sobie kopiować te nowe, są poprawiane niektóre błedy itd, albo dodawane są nowe płytki. Wtedy trzeba te poprawki które tu zasugerowałem wprowadzić ponownie.

Na tym myslę że mogę zakończyć swój krótki tutorial, ale chyba było warto. Takie biblioteki w formacie Arduino oraz całe podejście do programowania dopiero zaczyna mieć sens właśnie na tych mikrokontrolerach które wyżej instalowaliśmy obsługę. Podstawowym czynnikiem jest ilość dostępnej pamięci RAM, i jak to było w przypadku Atmegi że co najwyżej jakiś termostat albo w ogóle wąskie zastosowanie było możliwe tak teraz można od interpretera java po serwer http czy inne cuda śmiało napisać :) i zamknąć w kapselku od coli... :P

Życzę udanych blinków :)

Awatar użytkownika
l3n1n
Użytkownik
Posty: 132
Rejestracja: 28 paź 2017, 8:46
Lokalizacja: 3M

Re: INSTALOWANIE: Visual Studio Community 2017 + Visual Micro + Arduino ESP8266,ESP32,STM32

Post autor: l3n1n » 05 kwie 2018, 7:26

No i zakończył w najciekawszym momencie... :D

Awatar użytkownika
SunRiver
Administrator
Posty: 400
Rejestracja: 08 paź 2017, 11:27
Lokalizacja: Opole
Kontakt:

Re: INSTALOWANIE: Visual Studio Community 2017 + Visual Micro + Arduino ESP8266,ESP32,STM32

Post autor: SunRiver » 05 kwie 2018, 8:16

teraz poczekamy ze 2 lata :P
.... z każdym bitem serca ....
💫SunDUINO
💦Google+
💦Kanał Youtube
💦Sotton

Awatar użytkownika
xbary
Użytkownik
Posty: 59
Rejestracja: 08 paź 2017, 19:59

Re: INSTALOWANIE: Visual Studio Community 2017 + Visual Micro + Arduino ESP8266,ESP32,STM32

Post autor: xbary » 05 kwie 2018, 10:37

Wczoraj padłem już, śpiąca poezja mi się włączyła :)

dziś doskrobie STMy

Awatar użytkownika
l3n1n
Użytkownik
Posty: 132
Rejestracja: 28 paź 2017, 8:46
Lokalizacja: 3M

Re: INSTALOWANIE: Visual Studio Community 2017 + Visual Micro + Arduino ESP8266,ESP32,STM32

Post autor: l3n1n » 06 kwie 2018, 6:22

Powiem tak:
WOOOOOW!!
Naprawdę niesamowity kawałek czegoś co tygryski lubią najbardziej :). Bardzo duży wkład pracy na bardzo ciekawy temat.
Dziękuję xbary.

Awatar użytkownika
SunRiver
Administrator
Posty: 400
Rejestracja: 08 paź 2017, 11:27
Lokalizacja: Opole
Kontakt:

Re: INSTALOWANIE: Visual Studio Community 2017 + Visual Micro + Arduino ESP8266,ESP32,STM32

Post autor: SunRiver » 06 kwie 2018, 7:42

No ładnie cacko fiu fiu .. fiuuuu

teraz to sie nam powiększy grono z arduinowanych stmowców :P
.... z każdym bitem serca ....
💫SunDUINO
💦Google+
💦Kanał Youtube
💦Sotton

ODPOWIEDZ