Imie i nazwisko Nr indeksu Liczba punktów: Ramki oznaczone kolorem żółtym należy uzupełnić odpowiednią informacją! Po zakończeniu ćwiczenia niniejszą formatkę należy wysłać na adres: iwona.kochanska@eti.pg.gda.pl Przebieg labororatorium: Uruchomienie Raspberry Pi Instalacja Eclipse CDT Kompilacja skrośna na RPi Logowanie do systemu operacyjnego hosta (OS Linux Debian): LOGIN: student HASŁO: student* Uruchomienie Raspberry Pi 1. Sprawdź, czy w odpowiednim złączu na płycie Rpi znajduje się karta pamięci. Na niej znajduje się system operacyjny Raspbian. 2. Podłącz kabel ethernet do gniazda na płycie Rpi 3. Podłącz zasilanie do komputera Raspberry Pi (kabel USB między PC a Rpi). 4. Podłącz przewody kabla RS-232 (TTL) do pinów GPIO jak pokazano na rysunku. Posłuży on do komunikacji z Rpi w celu odczytania adresu IP, jaki Rpi dostał od serwera dhcp. 5. Uruchom program putty: $sudo putty 6. W okienku GUI wybierz połączenie szeregowe. Aby sprawdzić nazwę pliku odpowiedzialnego za sterownik portu szeregowego, odczytaj ostatnie komunikaty jądra:
$sudo sysctl -w kernel.dmesg_restrict=0 $dmesg Jednym z ostatnich komunikatów powinno być: pl2303 converter now attached to XXX (nazwa pliku sterownika) Ustawienia w okienku GUI powinny wyglądać następująco: gdzie ttyusb0 jest nazwą pliku sterownika portu szeregowego. 7. Odczytaj adres IP komputera Rpi: # sudo ifconfig 8. Ustaw konfigurację serwera ssh na Rpi tak, aby możliwe było zdalne połączenie użytkownika za pomocą protokołu ssh: # cd /etc/ssh #nano sshd_config Sprawdź opcję PermitRootLogin. Jeśli jej wartość jest inna niż no, zmień ją na no. Po zmianie zrestartuj serwer ssh: #sudo /etc/init.d/ssh restart 9. Połącz się z Rpi za pomocą ssh w terminalu na komputerze hosta. Login: pi, hasło: raspberry: $ ssh pi@192.168.1.xxx (XXX ostatnie 3 cyfry nr IP)
Kompilacja prostego programu C++ W katalogu domowym utwórz nowy plik o nazwie kod i otwórz go: $ nano kod W pliku zapisz kod programu Hello World w języku C++. Zapis w edytorze nano: ctrl-o Wyjście z edytora: ctrl-x Skompiluj program za pomocą kompilatora gcc (nazwa programu wynikowego: program): $ g++ -o program kod.cpp Uruchom program: $./program Sprawdź nagłówek ELF pliku wykonywalnego: $file program Skompiluj program za pomocą kompilatora skrośnego dla Rpi: $ arm-bcm2708hardfp-linux-gnueabi-g++ -o programrpi kod.cpp Uruchom program: $./programrpi Sprawdź nagłówek ELF pliku wykonywalnego: $file programrpi Plik wykonywalny prześlij na Rpi: $scp programrpi pi@192.168.xxx:. I tam go uruchom.
Konfiguracja środowiska Eclipse CDT Przejdź do katalogu /opt/rpi $cd /opt/rpi Znajdują się w nim narzędzia do kompilacji skrośnej dla Rpi, pobrane z repozytorium git://github.com/raspberrypi/tools.git Przejdź do katalogu: $ cd /opt/rpi/tools/arm-bcm2708 Znajduje się w nim 5 różnych toolchain-ów do kompilacji skrośnej. Sprawdź, czy maszyna hosta (komputer PC, na którym pracujesz) jest 32, czy 64-bitowa: $uname -a Dla wersji 32-bitowej właściwy toolchain to gcc-linaro-arm-linux-gnueabihf-raspbian. Natomiast dla wersji 64-bitowej należy używać gcc-linaro-arm-linux-gnueabihf-raspbian-x64 Wyedytuj plik.bashrc w katalogu domowym studenta: $cd ~/ $nano.bashrc Dopisz do zmiennej środowiskowej PATH ścieżkę do toolchaina, by polecenia kompilatora skrośnego były rozpoznawane w linii poleceń niezależnie od bieżącego katalogu: export PATH=$PATH:/opt/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihfraspbian-x64/bin Zapisz zmiany w pliku (ctrl-o, ctrl-x) i uruchom skrypt.bashrc: $source.bashrc Sprawdź, czy ścieżka do toolchain-a została zapisana i która wersja gcc jest używana: $arm-linux-gnueabihf-gcc -v gcc version. Uruchom środowisko Eclipse: $cd /opt/eclipse $./eclipse
Eclipse zapyta o ściezkę do katalogu roboczego. Powinna się ona znajdować w katalogu domowym użytkownika student. Utwórz nowy projekt C++. W pierwszym oknie konfiguracji projektu wybierz Hello World C++ Project i toolchain do kompilacji skrośnej (Cross GCC) W oknie Cross GCC Command ustaw konfigurację kompilatora skrośnego: Cross compiler prefix: "arm-linux-gnueabihf-". Cross compiler path: "/opt/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihfraspbian-x64/bin" Skompiluj projekt. Spróbuj znaleźć ten pierwszy program dla Rpi na dysku komputera hosta. Powinien znajdować się w katalogu: $cd ~/eclipse-workspace/projekt/debug/ Spróbu uruchomić plik wykonywalny: $./projekt Sprawdź nagłówek ELF pliku: $file HelloWorld Plik wykonywalny prześlij na Rpi: $scp projekt pi@192.168.xxx:. I tam go uruchom. Przesyłanie pliku wykonywalnego na Rpi możliwe jest również z poziomu środowiska Eclipse. W tym celu: Wybierz z menu "Window->Show View->Other". W otwartym oknie show view wybierz "Remote Systems" a następnie "Remote Systems Details".
Przeciągnij nowo otwarte okno Remote Systems z dolnej części głównego okna do lewej bocznej. Kliknij prawym przyciskiem myszy na okno Remote Systems i wybierz New Connection Wybierz SSH only Skonfiguruj połączenie ssh z Raspberry Pi (host name to nr ip maszyny docelowej, czyli Rpi). Kliknij prawym przyciskiem myszy na nowo zdefiniowane połączenie ssh i połącz się z Rpi (Connect). Teraz możesz przeciągnąć plik wykonywalny, znajdujący się w katalogu Debug projektu, do rpi Sftp Files My Home. Otwórz terminal ssh w środowisku Eclipse (prawym przyciskiem myszy na Ssh Shells Launch Shell) Uruchom program w oknie terminala:./programrpi