Laboratorium 2 (Intel Galileo, Debian, CRON, Gstreamer)



Podobne dokumenty
Ćwiczenie Nr 7 Instalacja oraz konfiguracja wskazanego systemu operacyjnego

Laboratorium - Konfiguracja routera bezprzewodowego w Windows 7

Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat usługi DHCP.

System kontroli dostępu ACCO NET Instrukcja instalacji

Instalacja i konfiguracja serwera SSH.

Uruchomienie Raspberry Pi

1 Tworzenie własnego zaproszenia dla powłoki bash

Laboratorium - Konfiguracja routera bezprzewodowego w Windows Vista

Uruchomienie Raspberry Pi

Przed restartowaniem routera odłącz wszystkie urządzenia podłączone pod porty USB.

instrukcja instalacji modemu SpeedTouch 605s

Sieć TCP/IP konfiguracja karty sieciowej

PODSTAWOWA KONFIGURACJA LINKSYS WRT300N

Tworzenie maszyny wirtualnej

Instrukcja instalacji oprogramowania dla środowiska Linux

instrukcja instalacji w systemie Linux

Krok 2 Podłącz zasilanie do routera bezprzewodowego. Uruchom komputer i zaloguj się jako administrator.

Konfigurowanie sterownika CX1000 firmy Beckhoff wprowadzenie. 1. Konfiguracja pakietu TwinCAT do współpracy z sterownikiem CX1000

NPS-520. Serwer druku do urządzeń wielofukcyjnych. Skrócona instrukcja obsługi. Wersja 1.00 Edycja 1 11/2006

Akademia Górniczo-Hutnicza im. Stanisława Staszica

OPTIMA PC v Program konfiguracyjny dla cyfrowych paneli domofonowy serii OPTIMA ELFON. Instrukcja obsługi. Rev 1

tel fax

1.1 Podłączenie Montaż Biurko Montaż naścienny... 4

Instrukcje dotyczące systemu Windows w przypadku drukarki podłączonej lokalnie

Zanim zaczniesz. Warto ustawić kartę sieciową naszego serwera.

Instalacja sterownika portu USB

Konfigurowanie sterownika CX9000 firmy Beckhoff wprowadzenie

PODŁĄCZENIE I KONFIGURACJA BRAMKI VoIP LINKSYS PAP2T

Laboratorium 2 Sterowanie urządzeniami z wykorzystaniem systemu plików Intel Galileo

Instalacja NOD32 Remote Administrator

T: Instalacja systemu Windows 2008 Serwer w maszynie wirtualnej VirtualBox.

INSTRUKCJA OBSŁUGI DLA SIECI

IBM SPSS Statistics dla systemu Linux Instrukcje instalacji (licencja sieciowa)

4. Podstawowa konfiguracja

Instrukcja podłączenia bramki IP 1R+L oraz IP 2R+L w trybie serwisowym za pomocą usługi telnet.

Instalacja aplikacji

Zbieranie podstawowych śladów działalności.

Moduł Ethernetowy. instrukcja obsługi. Spis treści

Konfigurowanie sterownika BX9000 firmy Beckhoff wprowadzenie. 1. Konfiguracja pakietu TwinCAT do współpracy ze sterownikiem BX9000

1 Tworzenie własnego zaproszenia dla powłoki bash

MultiBoot Instrukcja obsługi

Istnieją trzy sposoby tworzenia kopii zapasowej na panelu Comfort:

Linksys/Cisco RT31P2, WRT54GP2. Instrukcja Konfiguracji

oprogramowania F-Secure

OBSŁUGA I KONFIGURACJA SIECI W WINDOWS

Połączenia. Obsługiwane systemy operacyjne. Strona 1 z 5

K2 XVR-04 K2 XVR-08 K2 XVR-16 K2 XVR-24

Dysk CD (z Oprogramowaniem i Podręcznikiem użytkownika)

IBM SPSS Modeler Social Network Analysis 16 podręcznik instalowania i konfigurowania

INSTRUKCJA OBSŁUGI Program konfiguracji sieciowej Net configuration Drukarka A11

Instrukcja konfiguracji programu Fakt z modułem lanfakt

1. INSTALACJA SERWERA

Użytkowanie PortableGit w systemie Windows. 1. Najważniejsze informacje

Instalacja sterownika portu USB

Parametryzacja przetworników analogowocyfrowych

Kod produktu: MP-W7100A-RS485

Wdrożenie modułu płatności eservice. dla systemu Gekosale 1.4

Instrukcja instalacji oprogramowania dla środowiska MacOS

MultiTool instrukcja użytkownika 2010 SFAR

INSTRUKCJA UŻYTKOWNIKA MPCC

Przed restartowaniem routera odłącz wszystkie urządzenia podłączone pod porty USB.

INSTALACJA LICENCJI SIECIOWEJ NET HASP Wersja 8.32

Uruchomienie Intel Galileo

Synchronizator plików (SSC) - dokumentacja

Instrukcja obsługi Modułu Payu dla Moodle 2.x

Praca z programami SAS poza lokalną siecią komputerową UZ. Zestawienie tunelu SSH oraz konfiguracja serwera proxy w przeglądarce WWW

Wdrożenie modułu płatności eservice. dla systemu oscommerce 2.3.x

Sieciowy serwer IP urządzeń USB z 4 portami USB 2.0

Podłączenie TV przez VPN na Samsung Smart VPN Online Access

Płace Optivum. 1. Zainstalować serwer SQL (Microsoft SQL Server 2008 R2) oraz program Płace Optivum.

WPROWADZENIE. Warto pamiętać o opcji autouzupełniania, której używamy naciskając klawisz [Tab]

1.Wstęp. 2.Generowanie systemu w EDK

ZyXEL NBG-415N. Bezprzewodowy router szerokopasmowy n. Skrócona instrukcja obsługi. Wersja /2006 Edycja 1

T: Konfiguracja interfejsu sieciowego. Odwzorowanie nazwy na adres.

AKTYWNY SAMORZĄD. Instrukcja instalacji, aktualizacji i konfiguracji.

Instalowanie certyfikatów celem obsługi pracy urządzenia SIMOCODE pro V PN z poziomu przeglądarki internetowej w systemie Android

Kadry Optivum, Płace Optivum. Jak przenieść dane na nowy komputer?

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Konfigurowanie sterownika CP6601 firmy Beckhoff wprowadzenie

WYDZIAŁ ELEKTRYCZNY KATEDRA TELEKOMUNIKACJI I APARATURY ELEKTRONICZNEJ. Pracownia specjalistyczna. Numer ćwiczenia: 5.

INSTRUKCJA INSTALACJI SLACKWARE LINUX + LMS

Projekt procesora NIOSII w strukturze programowalnego układu logicznego CYCLONEII EP2C35F672C6 podłączenie i obsługa wyświetlacza LCD.

Pomoc do programu ISO Manager

Instrukcje dotyczące systemu Windows w przypadku drukarki podłączonej lokalnie

SIP Studia Podyplomowe Ćwiczenie laboratoryjne Instrukcja

Połączenia. Instalowanie drukarki lokalnie (Windows) Co to jest drukowanie lokalne?

Instrukcja instalacji i obsługi modemu ED77 pod systemem operacyjnym Windows 98 SE (wydanie drugie)

Uwaga: NIE korzystaj z portów USB oraz PWR jednocześnie. Może to trwale uszkodzić urządzenie ZyWALL.

Mobile Device Managemant Instrukcja obsługi

UNIFON podręcznik użytkownika

Instrukcja logowania do systemu e-bank EBS

Instrukcja instalacji Control Expert 3.0

Pomoc: konfiguracja PPPoE

Laboratorium systemów MES. Instrukcja korzystania z środowiska do ćwiczeń laboratoryjnych z zakresu Wonderware MES

Moduł Ethernetowy EL-ETH. Instrukcja obsługi

Instrukcja konfiguracji urządzenia TL-WA830RE v.1

Materiały dodatkowe. Simulink Real-Time

Instrukcja konfiguracji programu Fakt z modułem lanfakt

Wdrożenie modułu płatności eservice. dla systemu Magento

KOMPUTEROWY SYSTEM WSPOMAGANIA OBSŁUGI JEDNOSTEK SŁUŻBY ZDROWIA KS-SOMED

Transkrypt:

Laboratorium 1 (Intel Galileo, Yocto, Python, I 2 C, SSH, Crosscompile) Zadania do wykonania 1. Aktualizacja firmware u układu Galileo. (5%) 2. Przygotowanie obrazu systemu Yocto na karcie SD. (10%) 3. Połączenie i konfiguracja systemu operacyjnego Yocto. (5%) 4. Instalacja i konfiguracja przykładowego rozszerzeniowego modułu Pythona. (5%) 5. Przygotowanie infrastruktury do testowania portów układu Galileo, opracowanie testów i ich implementacja w języku Python. Należy przetestować działanie następujących elementów układu Galileo: cyfrowe wyjścia, (10%) cyfrowe wejścia, (10%) analogowego wyjścia korzystając z oscyloskopu, (10%) analogowego wejścia. (10%) 6. Obsługa wyświetlacza LCD przy pomocy Pythona. (10%) 7. Zbudowanie woltomierza, (25%) Bonus. Kompilacja skrośna. (+0.5) Zadania do wykonania Laboratorium 2 (Intel Galileo, Debian, CRON, Gstreamer) 1. Przygotowanie obrazu systemu Debian na karcie SD. (10%) 2. Zwiększenie rozmiaru partycji zawierającej system plików. (15%) 3. Połączenie i konfiguracja systemu operacyjnego: (20%) konfiguracja systemu aktualizacja systemu przy pomocy menadżera pakietów instalacja Gstreamera 4. Cykliczne wykonywanie zadań za pomocą systemu CRON (10%) 5. Przesyłanie plików używając Gstreamera i protokołu UDP konfiguracja w powłoce BASH (10%) 6. Strumieniowanie audio używając Gstreamera i protokołu UDP konfiguracja w powłoce BASH (15%) 7. Opracowanie autorskiej aplikacji cyklicznego strumieniowania audio (20%) 1

Laboratorium 1 (Intel Galileo, Yocto, Python, I 2 C, SSH, Crosscompile) Zadania do wykonania 1. Aktualizacja firmware u układu Galileo. (5%) 2. Przygotowanie obrazu systemu Yocto na karcie SD. (10%) 3. Połączenie i konfiguracja systemu operacyjnego Yocto. (5%) 4. Instalacja i konfiguracja przykładowego rozszerzeniowego modułu Pythona. (5%) 5. Przygotowanie infrastruktury do testowania portów układu Galileo, opracowanie testów i ich implementacja w języku Python. Należy przetestować działanie następujących elementów układu Galileo: cyfrowe wyjścia, (10%) cyfrowe wejścia, (10%) analogowego wyjścia korzystając z oscyloskopu, (10%) analogowego wejścia. (10%) 6. Obsługa wyświetlacza LCD przy pomocy Pythona. (10%) 7. Zbudowanie woltomierza, (25%) Bonus. Kompilacja skrośna. (+0.5) 1 Aktualizacja firmware u układu Galileo Aktualizacji układu Galileo należy dokonać przy pomocy dostarczonej aplikacji Arduino. Aplikację należy uruchomić z uprawnieniami administratora (jako root) na komputerze laboratoryjnym. Należy się upewnić czy został wybrany prawidłowy plik pośredniczący /dev/ttyacm0 oraz czy przewód USB jest podłączony, a przewód zasilania odłączony. Ręczne przerwanie procesu aktualizacji lub odłączenie zasilania podczas tego procesu grozi awarią urządzenia! Dlatego zalecane jest zachowanie szczególnej ostrożności. Rys. 1.1. GUI Arduino. 2

2 Przygotowanie obrazu systemu Yocto na karcie SD 2.1 Pobranie obrazu systemu operacyjnego w powłoce systemu operacyjnego Debian w komputerze laboratoryjnym (jako student) 1 # przejdź do katalogu roboczego/domowego: 2 cd ~ 3 # ściągnij obraz Linuksa: SDCard.1.0.4.tar.bz2 do katalogu roboczego/domowego 4 wget http://downloadmirror.intel.com/24355/eng/sdcard.1.0.4.tar.bz2 5 # lub za pomocą przeglądarki internetowej z https://communities.intel.com/docs/doc-22226 6 # rozpakuj archiwum do katalogu roboczego/domowego: 7 tar xjvf SDCard.1.0.4.tar.bz2 8 # zawartość znajdzie się w katalogu: image-full-galileo 9 # zawartość czyli: 10 # - jądro systemu - bzimage 11 # - katalog rozruchowy - boot 12 # - program rozruchowy - grub.efi 13 # - rozruchowy system plików - core-image-minimal-initramfs-clanton.cpio.gz 14 # - właściwy system plików - image-full-galileo-clanton.ext3 2.2 Formatowanie karty SD i skopiowanie wymaganych plików w powłoce systemu operacyjnego Debian w komputerze laboratoryjnym (jako root) 1 # wszystkie polecenia wydawane przez administratora (root) 2 # należy wykonywać ze szczególną ostrożnością - zwłaszcza polecenie dd i fdisk 3 # podłącz kartę mikro SD do komputera, sprawdź jaki plik reprezentuje kartę w systemie plików (tu np. /dev/sdc) 4 # można to zrobić odczytując ostatnie komunikaty jądra systemu: 5 dmesg 6 [956173.698945] sdc: sdc1 7 [956173.700074] sd 14:0:0:0: [sdc] Attached SCSI removable disk 8 9 # usuń wszystkie dane z karty: 10 dd if=/dev/zero of=/dev/sdc 11 # procedura ta w zależności od pojemności karty może trwać dość długo, 12 # dlatego można ewentualnie nadpisać tylko początek karty: 13 dd if=/dev/zero of=/dev/sdc bs=512 count=1 14 1+0 przeczytanych rekordów 15 1+0 zapisanych rekordów 16 skopiowane 512 bajtów (512 B), 0,00264133 s, 194 kb/s 17 18 # konfigurację tablicy partycji należy przeprowadzić programem fdisk 19 # proszę wcześniej przejrzeć manual programu fdisk 20 man fdisk 21 # jeżeli w systemie jest zainstalowany podręcznik, to powinna się wyświetlić dokumentacja 22 # należy założyć nową tablicę partycji oraz utworzyć w niej jedną nową partycję 23 fdisk /dev/sdc # przejście do edycji tablicy partycji 24 # Proszę się upewnić czy wybrano właściwy plik reprezentujący kartę SD 25 # w zależności od konfiguracji systemu może to być /dev/sdb, /dev/sdd itd. w programie fdisk systemu Debian w komputerze laboratoryjnym 1 Witamy w programie fdisk (util-linux 2.25.2). # program fdisk służy do manipulowania tablicą partycji 2 Zmiany pozostaną tylko w pamięci do chwili ich zapisania. 3 Przed użyciem polecenia zapisu prosimy o ostrożność. 4 5 Urządzenie nie zawiera żadnej znanej tablicy partycji. 6 Created a new DOS disklabel with disk identifier 0xb4d026f0. # automatyczne utworzenie nowej tablicy partycji 7 # ekwiwalentnie można wykonać polecenie o 8 Polecenie (m wyświetla pomoc): n # tworzymy nową partycję primary obejmującą całą kartę SD 9 Typ partycji 10 p główna (głównych 0, rozszerzonych 0, wolnych 4) 11 e rozszerzona (kontener na partycje logiczne) 12 Wybór (domyślnie p): p 13 Numer partycji (1-4, domyślnie 1): 1 14 Pierwszy sektor (2048-15523839, domyślnie 2048): 2048 15 Ostatni sektor, +sektorów lub +rozmiark,m,g,t,p (2048-15523839, domyślnie 15523839): 15523839 16 17 Utworzono nową partycję 1 typu Linux o rozmiarze 7,4 GiB. 18 19 Polecenie (m wyświetla pomoc): t # zmiana typu partycji na FAT32 20 Wybrano partycję 1 21 Kod szesnastkowy (L wyświetla listę wszystkich kodów): b 22 Zmieniono typ partycji Linux na W95 FAT32. 23 24 Polecenie (m wyświetla pomoc): p # wyświetla konfigurację tablicy partycji 25 Dysk /dev/sdc: 7,4 GiB, bajtów: 7948206080, sektorów: 15523840 26 Jednostki: sektorów, czyli 1 * 512 = 512 bajtów 27 Rozmiar sektora (logiczny/fizyczny) w bajtach: 512 / 512 28 Rozmiar we/wy (minimalny/optymalny) w bajtach: 512 / 512 29 Typ etykiety dysku: dos 30 Identyfikator dysku: 0x9e9d9bed 31 32 Device Boot Start End Sectors Size Id Type 33 /dev/sdc1 2048 15523839 15521792 7,4G b W95 FAT32 34 35 Polecenie (m wyświetla pomoc): w # fizyczny zapis zmian na urządzeniu 36 Tablica partycji została zmodyfikowana. 37 Wywoływanie ioctl() w celu ponownego odczytu tablicy partycji. 38 Synchronizacja dysków. 3

w powłoce systemu operacyjnego Debian w komputerze laboratoryjnym (jako root) 1 # po zakończeniu programu fdisk powinien pojawić się plik /dev/sdc1 reprezentujący nową partycję 2 # należy utworzyć na niej system plików FAT32: 3 mkfs.vfat -F 32 /dev/sdc1 4 mkfs.fat 3.0.27 (2014-11-12) 5 # następnie utworzyć punkt montowania i zamontować tę partycję 6 mkdir sdcard 7 mount /dev/sdc1 sdcard/ 8 # w końcu kopiujemy zawartość katalogu image-full-galileo: 9 cp image-full-galileo/* sdcard/ -r 10 # synchronizujemy dyski: 11 sync 12 # i odmontowujemy kartę SD: 13 umount sdcard 14 # obraz systemu jest już gotowy, wkładamy kartę SD do układu Galileo 15 # podłączamy zasilanie i czekamy, aż system zostanie załadowany 16 # proces uruchamiania systemu operacyjnego można obserwować za pośrednictwem interfejsu szeregowego 17 # należy podłączyć odpowiednio przewód i uruchomić aplikację putty: 18 putty 19 # należy ustawić prędkość równą 115200 bodów na sekundę 20 # i komunikować się za pośrednictwem pliku /dev/ttyusb0 - choć to może być zależne od systemu operacyjnego 2.3 Nagranie przygotowanego obrazu karty SD z systemem Yocto (alternatywnie) Niniejszy podpunkt przedstawia alternatywny sposób przygotowania karty SD korzystając z gotowego obrazu. Zaproponowano tu użycie obrazu systemu Yocto w wersji iot-devkit, który jest już skonfigurowany do pracy z interfejsami I 2 C. Wspomniany obraz należy zastosować przy obsłudze wyświetlacza LCD w dalszych punktach niniejszego ćwiczenia lub skonfigurować system operacyjny instalując wymagane komponenty do obsługi interfejsu I 2 C. w powłoce systemu operacyjnego Debian w komputerze laboratoryjnym (jako root) 1 # przejdź do katalogu roboczego/domowego: 2 cd ~ 3 # ściągnij obraz Linuksa: Yocto (iot-devkit-latest) do katalogu roboczego/domowego 4 wget http://iotdk.intel.com/images/iot-devkit-latest-mmcblkp0.direct.bz2 5 # lub za pomocą przeglądarki internetowej z http://iotdk.intel.com/images/ 6 # rozpakuj archiwum do katalogu roboczego/domowego: 7 bunzip2 -c iot-devkit-latest-mmcblkp0.direct.bz2 > iot-devkit-latest-mmcblkp0.direct 8 # plik iot-devkit-latest-mmcblkp0.direct jest obrazem kardy SD, który należy nagrać poleceniem dd 9 dd if=iot-devkit-latest-mmcblkp0.direct of=/dev/sdc 10 # następnie wkładamy kartę SD do układu Galileo 11 # podłączamy zasilanie i czekamy, aż system zostanie załadowany tak, jak opisano w poprzednim podpunkcie 12 # opcjonalnie można monitorować postęp kopiowania za pomocą polecenia pv 13 dd if=iot-devkit-latest-mmcblkp0.direct pv dd of=/dev/sdc 3 Połączenie i konfiguracja systemu operacyjnego Yocto w powłoce systemu operacyjnego Yocto w układzie Galileo za pośrednictwem RS i putty (jako root) 1 clanton login: root 2 # powłoka powinna nas powitać w następujący sposób: 3 root@clanton:~# 4 # na początku proszę ustawić hasło roota: 5 passwd 6 Changing password for root 7 Enter the new password (minimum of 5, maximum of 8 characters) 8 Please use a combination of upper and lower case letters and numbers. 9 New password: 10 Re-enter new password: 11 passwd: password changed. 12 # proszę zapamiętać ustawione hasło 13 # następnie proszę sprawdzić konfigurację połączenia ethernetowego: 14 ifconfig eth0 15 eth0 Link encap:ethernet HWaddr 98:4F:EE:01:75:8D 16 inet addr:192.168.0.23 Bcast:192.168.0.255 Mask:255.255.255.0 17 inet6 addr: fe80::9a4f:eeff:fe01:758d/64 Scope:Link 18 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 19 RX packets:65066 errors:0 dropped:2285 overruns:0 frame:0 20 TX packets:72 errors:0 dropped:0 overruns:0 carrier:0 21 collisions:0 txqueuelen:1000 22 RX bytes:5062703 (4.8 MiB) TX bytes:9513 (9.2 KiB) 23 Interrupt:40 Base address:0xc000 24 # statyczny adres IP np. 192.168.0.23 z maską 255.255.255.0 można ustawić następująco: 25 ifconfig eth0 192.168.0.23 255.255.255.0 26 # aby połączenie internetowe było konfigurowane automatycznie przy włączeniu systemu, 27 # należy wyedytować plik /etc/network/interfaces, np.: 28 auto eth0 29 iface eth0 inet static 30 address 192.168.0.23 31 netmask 255.255.255.0 32 network 192.168.0.0 33 gateway 192.168.0.1 34 # lub dla użycia dhcp: 35 auto eth0 36 iface eth0 inet dhcp 4

37 # a następnie zrestartować połączenie internetowe: 38 /etc/init.d/networking stop 39 Deconfiguring network interfaces... done. 40 /etc/init.d/networking start 41 Configuring network interfaces... [68481.556663] eth0: device MAC address 98:4f:ee:01:75:8d 42 [68481.578461] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready 43 udhcpc (v1.20.2) started 44 Sending discover... 45 [68483.560262] libphy: stmmac-1:01 - Link is Up - 100/Full 46 [68483.565563] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready 47 Sending discover... 48 Sending select for 192.168.0.23... 49 Lease of 192.168.0.23 obtained, lease time 90000 50 ip: RTNETLINK answers: File exists 51 ip: RTNETLINK answers: File exists 52 /etc/udhcpc.d/50default: Adding DNS 153.19.48.1 53 /etc/udhcpc.d/50default: Adding DNS 192.168.0.1 54 done. w powłoce systemu operacyjnego Debian w komputerze laboratoryjnym 1 # po konfiguracji sieci można zalogować się w systemie Yocto za pośrednictwem ssh 2 # poza logowaniem protokół ssh daje możliwość kopiowania plików na zdalny serwer np.: 3 echo "Jestem na komputerze laboratoryjnym." > plik.txt 4 scp plik.txt root@192.168.0.23:~ 5 The authenticity of host 192.168.0.23 (192.168.0.23) can t be established. 6 ECDSA key fingerprint is 2c:f5:db:5d:b7:9e:87:ff:40:3f:37:60:98:90:2e:9b. 7 Are you sure you want to continue connecting (yes/no)? yes 8 Warning: Permanently added 192.168.0.23 (ECDSA) to the list of known hosts. 9 root@192.168.0.23 s password: 10 plik.txt 100% 37 0.0KB/s 00:00 11 # proszę się upewnić, czy układ Galileo jest podłączony do sieci lokalnej 12 # logowanie na zdalnym układzie Galileo wygląda następująco: 13 ssh root@192.168.0.23 14 root@192.168.0.23 s password: 15 root@clanton:~# 16 # od tej chwili jesteśmy zalogowani na płytce Galileo w powłoce systemu operacyjnego Yocto w układzie Galileo za pośrednictwem ssh (jako root) 1 # proszę sprawdzić czy udało się skopiować plik.txt: 2 ls ~ 3 plik.txt 4 cat ~/plik.txt 5 Jestem na komputerze laboratoryjnym. 6 # proszę sprawdzić czy w systemie dostępny jest interpreter języka python: 7 python 8 Python 2.7.3 (default, Oct 16 2014, 16:04:29) 9 [GCC 4.7.2] on linux2 10 Type "help", "copyright", "credits" or "license" for more information. 11 >>> 12 # jeżeli pojawi się powyższy komunikat, to znaczy, że można przejść do kolejnego punktu instrukcji 3.1 Konfiguracja przy pomocy systemowego menadżera pakietów OPKG w powłoce systemu operacyjnego Yocto w układzie Galileo (jako root) 1 # dodajemy dodatkowe wpisy konfiguracyjne 2 echo "src mraa-upm http://iotdk.intel.com/repos/1.1/intelgalactic" > /etc/opkg/mraa-upm.conf 3 # aktualizujemy informacje o dostępnych pakietach 4 opkg update 5 Downloading http://iotdk.intel.com/repos/1.1/iotdk/packages. 6 Updated list of available packages in /var/lib/opkg/iotdk. 7 Downloading http://iotdk.intel.com/repos/1.1/intelgalactic/packages. 8 Updated list of available packages in /var/lib/opkg/mraa-upm. 9 # listę wszystkich dostępnych pakietów można wyświetlić za pomocą polecenia: 10 opkg list 11 # tu się powinna wyświetlić długa lista pakietów... 12 # sprawdzamy czy są dostępne pakiety mraa i upm: 13 opkg list grep mraa 14 libmraa0-0.5.4.105 - mraa built using CMake 15 opkg list grep upm 16 upm - 0.1.8.183 - upm built using CMake 17 # instalujemy dodatkowe oprogramowanie - upm i mraa 18 # jeżeli użyto obraz systemu iot-devkit, pakiety te są już zainstalowane 19 opkg install libmraa0 20 Package libmraa0 (0.5.4.105) installed in root is up to date. 21 opkg install upm 22 Package upm (0.1.8.183) installed in root is up to date. 23 # dodatkowo należy zaktualizować system za pomocą opkg: 24 opkg upgrade 25 Upgrading libmraa0 on root from 0.4.5-r0 to 0.5.4.105... 26 Downloading http://iotdk.intel.com/repos/1.1/intelgalactic/libmraa0_0.5.4.105_i586.ipk. 27 Removing obsolete file /usr/lib/libmraa.so.0.4.5. 28 libmraa0 (0.5.4.105) already install on root. 29 Upgrading upm on root from 0.1.8-r0 to 0.1.8.183... 30 Downloading http://iotdk.intel.com/repos/1.1/intelgalactic/upm_0.1.8.183_i586.ipk. 31 upm (0.1.8.183) already install on root. 32 libmraa0 (0.5.4.105) already install on root. 33 Configuring libmraa0. 34 Configuring upm. 5

3.2 Konfiguracja połączenia SSH logowanie bez hasła w powłoce systemu operacyjnego Yocto w układzie Galileo (jako root) 1 # aby z układu Galileo łączyć się za pośrednictwem SSH bez hasła należy wygenerować i skopiować odpowiednio klucze 2 # generowanie kluczy 3 ssh-keygen -t rsa 4 Generating public/private rsa key pair. 5 Enter file in which to save the key (/home/root/.ssh/id_rsa): 6 Enter passphrase (empty for no passphrase): 7 Enter same passphrase again: 8 Your identification has been saved in /home/root/.ssh/id_rsa. 9 Your public key has been saved in /home/root/.ssh/id_rsa.pub. 10 The key fingerprint is: 11 6e:3b:88:fa:64:bc:7c:c3:d3:61:d8:d7:16:64:b2:90 root@quark01758d 12 The key s randomart image is: 13 +--[ RSA 2048]----+ 14. 15 E. o 16. = 17.. 18 os.. 19...+. o 20 +o +oo. 21 +..*.o. 22.o+. o.. 23 +-----------------+ 24 # przy pytaniu o hasło należy wcisnąć ENTER - utworzony zostanie klucz bezhasłowy 25 # po wykonaniu tego polecenia, wygenerowane zostały dwa klucze: 26 # klucz prywatny został zapisany w pliku /home/root/.ssh/id_rsa - nie powinniśmy go udostępniać nikomu 27 # drugi klucz, publiczny, pojawił się w pliku /home/rot/.ssh/id_rsa.pub w powłoce systemu operacyjnego Debian w komputerze laboratoryjnym (jako zwykły użytkownik) 1 cd ~ 2 # kopiujemy wpis o kluczu publicznym z układu Galileo na komputer laboratoryjny 3 # Proszę pamiętać o sprawdzeniu adresów IP i nazw użytkowników 4 scp root@192.168.0.23:/home/root/.ssh/id_rsa.pub. 5 # wpisujemy informację o kluczu do pliku konfiguracyjnego serwera SSH w katalogu domowym 6 cat ~/id_rsa.pub >> ~/.ssh/authorized_keys 7 # od tej chwili logowanie z Galileo na komputer laboratoryjny jako zwykły użytkownik 8 # nie powinno wymagać podawania hasła. Jeżeli chcemy logować się jako root, 9 # to informację o kluczu publicznym należy dodać również do pliku konfiguracyjnego 10 # w katalogu domowym tego użytkownika w powłoce systemu operacyjnego Yocto w układzie Galileo (jako root) 1 # należy sprawdzić, czy można zalogować się przez SSH z układu Galileo nie używając hasła 2 # np wykonując tam zdalnie polecenie: 3 ssh student@192.168.0.70 touch ~/nowy_pusty_plik;ls -lrt 4 -rw-r--r-- 1 student student 0 lut 3 18:38 nowy_pusty_plik 5 # tu założono, że komputer laboratoryjny ma przyporządkowany adres IP 192.168.0.70 6 # wcześniej należy sprawdzić, jaki adres ma komputer w laboratorium 7 # założono też, że użytkownik ma nazwę student 8 # jeśli wszystko zostało skonfigurowane poprawnie, utworzony zostanie nowy pusty plik 4 Instalacja i konfiguracja przykładowego modułu Pythona Wokół projektu Galileo rozwinęła się społeczność, która dostarcza różne narzędzia i moduły użyteczne przy pracy z tym układem. W ramach laboratorium wykorzystano moduł rozszerzeniowy wiring-x86. Więcej informacji na jego temat można znaleźć na stronie domowej projektu: https://github.com/emutex/wiring-x86 w powłoce systemu operacyjnego Debian w komputerze laboratoryjnym (jako student) 1 # proszę przejść do katalogu domowego/roboczego 2 cd ~ 3 # następnie ściągnąć wymagany moduł np. za pomocą aplikacji wget 4 wget https://github.com/emutex/wiring-x86/archive/master.zip 5 # rozpakowujemy ściągnięte archiwum 6 unzip master.zip 7 # w lokalnym katalogu powinien pojawić się nowy katalog wiring-x86-master zawierający omawiany moduł 8 # następnie proszę skopiować go na układ Galileo na kartę SD za pomocą ssh - proszę wpisać właściwy adres IP 9 scp -r wiring-x86-master root@192.168.0.23:/media/mmcblk0p1 10 # oraz logujemy się na układzie Galileo: 11 ssh root@192.168.0.23 w powłoce systemu operacyjnego Yocto w układzie Galileo za pośrednictwem ssh (jako root) 1 # w pierwszej kolejności należy przenieść się do odpowiedniego katalogu 2 # wcześniej upewniamy się do jakiego katalogu zostały skopiowane pliki modułu 3 cd /media/mmcblk0p1/wiring-x86-master/ 4 # możliwości, jakie daje konfigurator dostarczony z modułem, można sprawdzić następująco: 5 python setup.py --help-commands 6 # powinna zostać wyświetlona lista dostępnych opcji 7 # następnie sprawdzamy integralność modułu 8 python setup.py check 9 running check 10 # budujemy moduł lokalnie 11 # jeżeli nie wydamy tego polecenia w tym miejscu, to zostanie ono automatycznie wywołane przy instalacji 12 python setup.py build 13 running build 14 running build_py 6

15 creating build 16 creating build/lib 17 copying wiringx86.py -> build/lib 18 # oraz wybieramy instalację 19 # dzięki czemu wymagane pliki zostaną skopiowane do odpowiednich lokalizacji w systemie plików 20 python setup.py install 21 running install_lib 22 copying build/lib/wiringx86.py -> /usr/lib/python2.7/site-packages 23 writing byte-compilation script /tmp/tmpuwhagm.py 24 /usr/bin/python /tmp/tmpuwhagm.py 25 removing /tmp/tmpuwhagm.py 26 running install_egg_info 27 Writing /usr/lib/python2.7/site-packages/wiring_x86-1.0.0-py2.7.egg-info 28 # następnie przechodzimy do katalogu z przykładami 29 cd examples 30 # przykłady są napisane dla platformy Intel Edison 31 # dlatego w skryptach należy zmienić nazwę platformy na Intel Galileo gen. 2 32 cat blink.py sed s/gpioedison/gpiogalileogen2/g > blink-galileo.py 33 # następnie należy uruchomić poprawiony skrypt i obserwować diodę nr 13 34 python blink-galileo.py 35 Setting up pin 13 36 Blinking pin 13 now... 5 Przygotowanie infrastruktury do testowania portów układu Galileo, opracowanie testów i ich implementacja w języku Python. Na początku należy wyprowadzić zasilanie i masę na płytkę testową. Proszę o zachowanie dużej ostrożności, aby nie dokonać zwarcia może się to skończyć uszkodzeniem układu Galileo. Na poniższych schematach skrót GND oznacza masę, odpowiednio 3.3 V i 5.0 V oznacza zasilanie, liczby oznaczają numery pinów. Pozostałe oznaczenia znajdują się pod schematami, których dotyczą. Zaprezentowano przykłady układów testowych studenci mogą zaproponować własne, jednak proszę o zachowanie ostrożności. Szczególnie będzie oceniany stopień skomplikowania zaimplementowanych algorytmów i inwencja twórcza. Należy przetestować działanie następujących elementów układu Galileo: Cyfrowe wyjścia należy napisać skrypt w Pythonie, który będzie sterował mruganiem diody D1 podłączonej do portu numer 13. Diody należy podłączyć z odpowiednim rezystorem R1. Oporność przykładowego rezystora wynosi 1 kω ewentualnie należy ją dobrać w zależności od użytej diody. Rys. 1.2. Schemat. 7

Cyfrowe wejścia należy napisać skrypt w Pythonie, który będzie sterował mruganiem diody D1 podłączonej do portu numer 13. Diody należy podłączyć z odpowiednim rezystorem R1. Diodą należy sterować w zależności od odczytanego stanu z portu numer 7, który można ustawić za pomocą przełącznika P1. Oporności rezystorów R1 i R2 wynoszą po 1 kω ewentualnie należy je dobrać w zależności od użytej diody. Rys. 1.3. Schemat. Wyjścia PWM do testowania wyjścia PWM (ang. pulse-width modulation; modulacja szerokości impulsów) można zastosować schemat z Rys. 1.2. Proszę zwrócić uwagę, aby zmienić numer portu np. na 5. Należy napisać skrypt w Pythonie, który będzie płynnie sterował jasnością świecenia diody. Wygenerowany sygnał należy zaprezentować na oscyloskopie. Dodatkowo należy zademonstrować kilka różnych wypełnień impulsów prostokątnych oraz częstotliwości ich występowania. Analogowe wejścia należy zbudować obwód zawierający połączone szeregowo rezystory tak jak na schemacie na Rys. 1.4. oraz zmierzyć przy pomocy wejścia analogowego wartość napięcia na poszczególnych połączeniach rezystorów. Ćwiczenie należy wykonać podłączając układ do zasilania 3.3 oraz 5.0 V. Wyniki proszę umieścić w tabelce oraz porównać z teoretycznymi wynikami obliczonymi na podstawie wzoru z dzielnika napięciowego: n U n = U max R i i=0 (1) N R i Gdzie N oznacza liczbę wszystkich rezystorów, U max napięcie zasilania, zaś n numer połączenia pomiędzy rezystorami. Dodatkowo przed połączeniem proszę obliczyć prąd płynący w układzie i tak dobrać rezystory, żeby nie przekroczyć wydajności prądowej. i=0 8

Rys. 1.4. Schemat. 6 Obsługa wyświetlacza LCD przy pomocy Pythona Należy podłączyć wyświetlacz LCD (Grove LCD RGB) za pomocą przewodu I 2 C do płytki z wyprowadzeniami tych interfejsów (Grove Base Shield). Płytka powinna być połączona z układem Galileo za pomocą pinów rozmieszczonych w dwóch równoległych rzędach. Następnie proszę upewnić się, że wyświetlacz jest wykrywany na magistrali I 2 C i uruchomić skrypt demonstracyjny w języku Python zamieszczony poniżej. Rys. 1.5. Base shield i wyświetlacz LED. w powłoce systemu operacyjnego Yocto w układzie Galileo (jako root) 1 # proszę sprawdzić czy wyświetlacz LCD jest wykrywany na magistrali I2C 2 # można się posłużyć poleceniem i2cdetect 3 # wcześniej proszę się upewnić, czy zainstalowano pakiet i2c-tools 4 # jeżeli nie, to należy go zainstalować za pomocą menadżera opkg 5 i2cdetect -y -r 0 6 0 1 2 3 4 5 6 7 8 9 a b c d e f 7 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 8 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 9 20: -- -- -- -- -- UU UU UU -- -- -- -- -- -- -- -- 10 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 11 40: -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- -- 12 50: -- -- -- -- UU UU UU UU -- -- -- -- -- -- -- -- 13 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 14 70: -- -- -- -- -- -- -- -- 15 # następnie należy uruchomić poniższy skrypt demonstracyjny w języku Python 9

demonstracyjny skrypt w języku Python 1 # skrypt w pierwszej linii wyświetlacza wypisuje coraz większe liczby 2 # w drugiej linii - cyfry, które są dzielnikami tych liczb 3 4 import pyupm_i2clcd as i2clcd # załadowanie wymaganych modułów 5 import time 6 7 def clear(display): # samodzielne zdefiniowanie funkcji czyszczącej wyświetlacz 8 display.setcursor(1, 0) # można tu użyć również funkcji wbudowanej w moduł 9 lcd.write(str(16*" ")) 10 11 lcd = i2clcd.jhd1313m1(0, 0x3E, 0x62) 12 lcd.setcolor(0,255,0) # podświetlenie wyświetlacza na zielono 13 14 count=1 15 while count<10**16: # dlaczego akurat 10**16? 16 clear(lcd) 17 18 lcd.setcursor(0, 0) # ustawienie kursora na początku pierwszej linii 19 lcd.write(str(count)) # wpisanie tam liczby 20 21 info = "dziel: " # utworzenie napisu w drugiej linii 22 for n in range(9): 23 if not count%(n+1): 24 info = info+str(n+1) 25 26 lcd.setcursor(1, 0) # ustawienie kursora na początku drugiej linii 27 lcd.write(info) # wpisanie tam cyfr, które są dzielnikami 28 29 count+=1 30 time.sleep(1) # skrypt czeka jedną sekundę 7 Zbudowanie woltomierza Zadanie należy wykonać samodzielnie korzystając ze zdobytej dotąd wiedzy oraz z dokumentacji. Skrypty mają być napisane w języku Python. Opracowany system pomiarowy powinien: działać w zakresie od zera do pięciu woltów, umożliwiać pomiar napięcia przy pomocy wejść analogowych układu Galileo, pomiaru powinno się dokonywać uruchamiając odpowiedni skrypt, woltomierz powinien być wyposażony w wyświetlacz LCD podłączony przez interfejs I 2 C, wynik pomiaru powinien być pokazywany na wyświetlaczu LCD, początkowe pomiary powinny być zweryfikowane przez dodatkowy pomiar oscyloskopem lub profesjonalnym multimetrem, wynik pomiaru powinien być zapisywany na zdalnym hoście (serwerze centralnym) adres i sposób autoryzacji zostanie podany na zajęciach, należy zapisać: wartość pomierzonego napięcia, datę i godzinę pomiaru, adres IP układu Galileo, z którego zapisywane są dane oraz imię i nazwisko operatora (studenta), należy wykonać kilka przykładowych pomiarów, np. wykorzystując połączenie szeregowe rezystorów. Wszystkie wykonane pomiary powinny być widziane na stronie internetowej udostępnianej z serwera centralnego. Bonus. Kompilacja skrośna w powłoce systemu operacyjnego Debian w komputerze laboratoryjnym (jako root) 1 # najpierw proszę przygotować system plików, który posłuży do zbudowania programu 2 # do nowo utworzonej lokalizacji: 3 mkdir -p /opt/clanton-tiny/1.4.2/sysroots 4 5 # proszę skopiować z Arduino odpowiednie katalogi: 6 cd /where/you/extracted/the/archive/arduino-1.5.3/hardware/tools/sysroots 7 cp -R i586-poky-linux-uclibc /opt/clanton-tiny/1.4.2/sysroots/ 8 cp -R x86_64-pokysdk-linux /opt/clanton-tiny/1.4.2/sysroots/ demonstracyjny program w języku C o nazwie /home/student/test.c 1 /* prosty demonstracyjny program - hello world */ 2 #include <stdio.h> 3 int main(int argc, char const* argv[]){ 4 printf("hello, World!\,n"); 5 return 0; 6 } 10

w powłoce systemu operacyjnego Debian w komputerze laboratoryjnym (jako student) 1 # kolejnym krokiem powinno być przygotowanie pliku Makefile 2 # proszę pobrać jego wzór z repozytoium GIT - jest tam również dostępny demonstracyjny program: 3 git clone https://github.com/tokoro10g/galileo-makefile.git 4 cp galileo-makefile/makefile /home/student 5 cd /home/student 6 # proszę dostosować plik Makefile, jeżeli jest to konieczne: 7 emacs Makefile 8 # a następnie skompilować program: 9 make 10 /opt/clanton-tiny/1.4.2/sysroots/x86_64-pokysdk-linux//usr/bin/i586-poky-linux-uclibc/i586-poky-linux-uclibc-g++ 11 -O2 -pipe -g -feliminate-unused-debug-types -fpermissive -Wall -I /opt/clanton-tiny/1.4.2/sysroots/i586-poky-lin 12 ux-uclibc//usr/include -I /opt/clanton-tiny/1.4.2/sysroots/i586-poky-linux-uclibc//usr/include/c++ -I /opt/clant 13 on-tiny/1.4.2/sysroots/x86_64-pokysdk-linux//usr/lib/i586-poky-linux-uclibc/gcc/i586-poky-linux-uclibc/4.7.2/inc 14 lude -m32 -march=i586 --sysroot=/opt/clanton-tiny/1.4.2/sysroots/i586-poky-linux-uclibc/ -c -o test.o 15 test.c 16 /opt/clanton-tiny/1.4.2/sysroots/x86_64-pokysdk-linux//usr/bin/i586-poky-linux-uclibc/i586-poky-linux-uclibc-g++ 17 -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -L /opt/clanton-tiny/1.4.2/sysroots/i586-poky-linux-uclibc//lib -L 18 /opt/clanton-tiny/1.4.2/sysroots/i586-poky-linux-uclibc//usr/lib -L /opt/clanton-tiny/1.4.2/sysroots/i586-poky- 19 linux-uclibc//usr/lib/i586-poky-linux-uclibc/4.7.2 -lstdc++ -m32 -march=i586 --sysroot=/opt/clanton-tiny/1.4.2/ 20 sysroots/i586-poky-linux-uclibc/ test.o -o test demonstracyjny plip Makefile dla kompilacji programu /home/student/test.c 1 SHELL = /bin/sh 2 DISTRO = clanton-tiny 3 TARGET_NAME = i586-poky-linux-uclibc 4 NATIVE_NAME = x86_64-pokysdk-linux 5 GCC_VERSION = 4.7.2 6 7 TARGET_BIN = test 8 TARGET_ARCH = -m32 -march=i586 --sysroot=$(sysroot_target) 9 INCLUDE_DIRS = -I $(SYSROOT_TARGET)/usr/include \ 10 -I $(SYSROOT_TARGET)/usr/include/c++ \ 11 -I $(SYSROOT_NATIVE)/usr/lib/$(TARGET_NAME)/gcc/$(TARGET_NAME)/$(GCC_VERSION)/include 12 LIBRARY_DIRS = -L $(SYSROOT_TARGET)/lib \ 13 -L $(SYSROOT_TARGET)/usr/lib \ 14 -L $(SYSROOT_TARGET)/usr/lib/$(TARGET_NAME)/$(GCC_VERSION) 15 COMPILE_OPTS = -O2 -pipe -g -feliminate-unused-debug-types -fpermissive -Wall $(INCLUDE_DIRS) 16 17 SYSROOT_TARGET = /opt/$(distro)/1.4.2/sysroots/$(target_name)/ 18 SYSROOT_NATIVE = /opt/$(distro)/1.4.2/sysroots/$(native_name)/ 19 20 TOOLDIR = $(SYSROOT_NATIVE)/usr/bin/$(TARGET_NAME) 21 22 CC = $(TOOLDIR)/i586-poky-linux-uclibc-g++ 23 CXX = $(CC) 24 AS = $(CC) 25 LD = $(CC) 26 AR = $(TOOLDIR)/i586-poky-linux-uclibc-ar 27 CFLAGS = $(COMPILE_OPTS) 28 CXXFLAGS= $(COMPILE_OPTS) 29 LDFLAGS = -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed $(LIBRARY_DIRS) -lstdc++ 30 31 all: target 32 33 target: $(patsubst %.c,%.o,$(wildcard *.c)) $(patsubst %.cpp,%.o,$(wildcard *.cpp)) 34 $(LD) $(LDFLAGS) $(TARGET_ARCH) $^ -o $(TARGET_BIN) 35 36 clean: 37 rm -f $(TARGET_BIN) *.o 11

Zadania do wykonania Laboratorium 2 (Intel Galileo, Debian, CRON, Gstreamer) 1. Przygotowanie obrazu systemu Debian na karcie SD. (10%) 2. Zwiększenie rozmiaru partycji zawierającej system plików. (15%) 3. Połączenie i konfiguracja systemu operacyjnego: (20%) konfiguracja systemu aktualizacja systemu przy pomocy menadżera pakietów instalacja Gstreamera 4. Cykliczne wykonywanie zadań za pomocą systemu CRON (10%) 5. Przesyłanie plików używając Gstreamera i protokołu UDP konfiguracja w powłoce BASH (10%) 6. Strumieniowanie audio używając Gstreamera i protokołu UDP konfiguracja w powłoce BASH (15%) 7. Opracowanie autorskiej aplikacji cyklicznego strumieniowania audio (20%) 1 Przygotowanie obrazu systemu Debian na karcie SD System operacyjny Debian Wheezy z jądrem Linuksa w wersji 3.8.7 dedykowany dla platformy Intel Galileo (w tym gen. 2) jest udostępniony na wolnej licencji. Projekt zawiera obraz systemu oraz cały system plików, który posłużył do zbudowania tego obrazu. Dzięki czemu możliwe jest przygotowanie własnej dedykowanej dystrybucji Debiana. W omawianym projekcie udostępniono tzw. minimalny obraz, który jednak można rozbudować po instalacji przy pomocy menadżera pakietów APT bez konieczności dodatkowej kompilacji w ramach projektu zostało utworzone repozytorium kompatybilne z menadżerem APT. w powłoce systemu operacyjnego Debian w komputerze laboratoryjnym (jako student) 1 # uwaga wstępna: 2 # jeżeli jakikolwiek program wymagany do przeprowadzenia tego ćwiczenia, 3 # jest niedostępny to należy go zainstalować za pomocą menadżera pakietów: 4 apt-get update 5 apt-get install parted 6 Czytanie list pakietów... Gotowe 7 Budowanie drzewa zależności 8 Odczyt informacji o stanie... Gotowe 9 parted jest już w najnowszej wersji. 10 11 # właściwą nazwę pakietu można odszukać za pomocą: 12 apt-cache search parted 13 gparted - Edytor partycji dla GNOME 14 parted - Program do zarządzania partycjami dyskowymi 15 16 # przy okazji proszę docenić poczucie humoru twórców oprogramowania open source: 17 apt-get moo 18 ( ) 19 (oo) 20 /------\/ 21 / 22 * /\---/\ 23 ~~ ~~ 24..."Have you mooed today?"... 25 26 # zaleca się zapoznanie również z innym popularnym/konkurencyjnym menażdżerem pakietów typu APT 27 # o nazwie aptitude: 28 aptitude search parted 29 i gparted - Edytor partycji dla GNOME 30 i parted - Program do zarządzania partycjami dyskowymi 31 # twórcy zalecają używanie jednego menażdżera APT 32 33 # Proszę rozpocząć ten punkt od przejścia do katalogu roboczego/domowego: 34 cd ~ 35 # pełen system plików systemu można ściągnąć z repozytorium git: 36 git clone git://git.code.sf.net/p/galileodebian/code galileodebian-code 37 # wcześniej proszę się upewnić czy narzędzie git jest dostępne 38 # podczas laboratorium zalecane jest ściągnięcie tylko wypreparowanego obrazu karty SD: 39 wget http://sourceforge.net/projects/galileodebian/files/sd%20card%20image/galileo-1.2.img.gz 40 # lub przez przeglądarkę internetową ze strony: 41 # https://sourceforge.net/projects/galileodebian/files/ 42 # proszę wybrać najnowszą wersję obrazu 43 # kolejnym krokiem, jaki należy wykonać, jest rozpakowanie obrazu: 44 gunzip galileo-1.2.img.gz 45 # jeżeli nie wystąpiły żadne błędy, powinien pojawić się plik z obrazem: galileo-1.2.img 12

w powłoce systemu operacyjnego Debian w komputerze laboratoryjnym (jako root) 1 # należy podłączyć kartę SD do komputera laboratoryjnego 2 # i sprawdzić, który plik specjalny w katalogu /dev/ reprezentuje tę kartę 3 # można to zrobić odczytując ostatnie komunikaty jądra systemu: 4 dmesg 5 [125999.757685] sdc: sdc1 sdc2 6 [125999.758993] sd 4:0:0:0: [sdc] Attached SCSI removable disk 7 # kolejną czynnością jest skopiowanie obrazu bezpośrednio na kartę SD 8 # wcześniej można jeszcze usunąć wszystkie dane znajdujące się na karcie: 9 dd if=/dev/zero of=/dev/sdc 10 # kopiowanie obrazu na kartę: 11 dd if=galileo-1.2.img of=/dev/sdc 12 1843200+0 przeczytanych recordów 13 1843200+0 zapisanych recordów 14 skopiowane 943718400 bajtów (944 MB), 297,821 s, 3,2 MB/s 15 16 # następnie proszę podłączyć kartę SD do układu Galileo i podłączyć zasilanie 17 # jednocześnie proszę obserwować informacje przesyłane do komputera za pomocą interfejsu szeregowego: 18 putty 19 # parametry połączenia należy ustawić tak, jak na loratorium 1: prędkość równą 115200 bodów na sekundę 20 # i komunikować się za pośrednictwem pliku /dev/ttyusb0 - choć to może być zależne od systemu operacyjnego 21 22 # Program rozruchowy GRUB powinien wyświetlić poniższe menu: 23 Debian GNU/Linux, with Linux 3.8.7 24 Debian GNU/Linux, with Linux 3.8.7 (recovery mode) 25 Debian GNU/Linux, with Linux 3.2.0-4-486 26 Debian GNU/Linux, with Linux 3.2.0-4-486 (recovery mode) 27 # należy wybrać pierwszą opcję: Debian GNU/Linux, with Linux 3.8.7 (jest to domyślny wybór) 28 # i uruchomić system operacyjny w powłoce systemu operacyjnego Debian w układzie Galileo za pośrednictwem RS i putty (jako root) 1 Debian GNU/Linux 7 galileo ttys1 2 3 galileo login: root 4 Password: 5 # domyślnym hasłem jest: root 6 # ale powinno ono być zmienione 7 8 # wcześniej jednak proszę sprawdzić ilość dostępnego miejsca na dysku np. 9 df grep -i -e mmcblk -e available 10 Filesystem 1K-blocks Used Available Use% Mounted on 11 /dev/mmcblk0p2 810940 391228 378520 51% / 12 # domyślnie jest ona stosunkowo niewielka 13 # dlatego należy rozszerzyć tę partycję 2 Zwiększenie rozmiaru partycji zawierającej system plików w powłoce systemu operacyjnego Debian w komputerze laboratoryjnym (jako root) 1 # obraz jest zgrany z karty SD o rozmiarze około 1 GB, dlatego należy zaktualizować informację 2 # o dostępnej przestrzeni fizycznego nośnika 3 parted /dev/sdc print 4 Warning: Not all of the space available to /dev/sdc appears to be used, 5 you can fix the GPT to use all of the space (an extra 13680640 blocks) or continue with the current setting? 6 Fix/Ignore? F 7 Model: Mass Storage Device (scsi) 8 Disk /dev/sdc: 7948MB 9 Sector size (logical/physical): 512B/512B 10 Partition Table: gpt 11 Disk Flags: 12 13 Number Start End Size File system Name Flags 14 1 17,4kB 100MB 100MB fat16 boot, esp 15 2 100MB 944MB 844MB ext3 msftdata 16 17 # następnie należy ustalić docelowy rozmiar modyfikowanej partycji (czyli partycji numer 2): 18 # maksymalny rozmiar partycji zależy od wielkości dostępnej przestrzeni na karcie SD 19 # można je odczytać z komunikatu wyświetlonego po wykonaniu polecenia: parted /dev/sdc print 20 parted /dev/sdc resizepart 2 21 End? [7940MB]? 7948MB 22 Information: You may need to update /etc/fstab. 23 24 # proszę sprawdzić czy napewna wykonana operacja odniosła efekt: 25 parted /dev/sdc print 26 Number Start End Size File system Name Flags 27 1 17,4kB 100MB 100MB fat16 boot, esp 28 2 100MB 7948MB 7848MB ext3 msftdata 29 30 # ewentualnie należy dodać dziennik do systemu plików ext3: 31 tune2fs -j /dev/sdc2 32 tune2fs 1.42.12 (29-Aug-2014) 33 System plików już ma kronikę. 34 35 # proszę uzupełnić system plików na całej partycji: 36 resize2fs /dev/sdc2 37 resize2fs 1.42.12 (29-Aug-2014) 38 Zmiana rozmiaru systemu plików /dev/sdc2 na 1916011 (4k) bloków. 39 System plików na /dev/sdc2 ma teraz 1916011 (4k) bloków. 13

w powłoce systemu operacyjnego Debian w komputerze laboratoryjnym (jako root) 1 # zarówno zaraz po nagraniu minimalnego obrazu na kartę SD, 2 # jak i na końcu, proszę sprawdzić poprawność systemu pliku: 3 e2fsck -f /dev/sdc2 4 e2fsck 1.42.12 (29-Aug-2014) 5 /dev/sdd2: odtwarzanie z kroniki 6 Przebieg 1: Sprawdzanie i-węzłów, bloków i rozmiarów 7 Przebieg 2: Sprawdzanie struktury katalogów 8 Przebieg 3: Sprawdzanie łączności katalogów 9 Przebieg 4: Sprawdzanie liczników odwołań 10 Przebieg 5: Sprawdzanie sumarycznych informacji o grupach 11 Błędna liczba wolnych bloków (1790842, naliczono 1790791). 12 Poprawić<t>? tak 13 14 /dev/sdd2: ***** SYSTEM PLIKÓW ZMODYFIKOWANY ***** 15 /dev/sdd2: 18945/434240 plików (3.4% nieciągłych), 125220/1916011 bloków w powłoce systemu operacyjnego Debian w układzie Galileo za pośrednictwem RS i putty (jako root) 1 # o prawidłowym wykonaniu zadania będzie świadczyło to czy w systemie operacyjnym uruchomionym na układzie Galileo 2 # zmodyfikowana partycja będzie miała większy rozmiar: 3 df grep -i -e mmcblk -e available 4 Filesystem 1K-blocks Used Available Use% Mounted on 5 /dev/mmcblk0p2 7554940 391776 6779996 6% / 2.1 Zwiększenie rozmiaru partycji za pomocą Gparted (alternatywnie) Po uruchomieniu programu Gparted może pojawić się komunikat z ostrzeżeniem o tym, że cała przestrzeń dysku nie jest dostępna rys. 2.1. Aplikacja może automatycznie rozwiązać ten problem. Proszę kliknąć Napraw lub Fix (dla anglojęzycznego interfejsu). Rys. 2.1. Zrzut ekranu program gparted. W panelu głównym programu Gparted należy wybrać właściwy plik reprezentujący kartę SD w prezentowanym przykładzie jest to plik /dev/sdd. Jak widać na poniższym rysunku (rys. 2.2.) po nagraniu minimalenego obrazu niewykorzystanych pozostaje ponad 6.5 GB przestrzeni dyskowej. Rys. 2.2. Zrzut ekranu program gparted. 14

Należy zmienić rozmiar drugej partycji klikając na nią prawym przyciskiem myszy (dla trybu praworęcznego) i wybierajac z menu kontekstowego Zmień rozmiar / przenieś. Powinno pojawić się okno analogiczne do tego przedstawionego poniżej na rys. 2.3. Następnie proszę przesunąć prawą krawędź prostokąta symbolizującego rozmiar partycji maksymalnie do prawej strony. Rys. 2.3. Zrzut ekranu program gparted. Następnie proszę zatwierdzić tę operację w tym celu proszę wybrać z menu Edycja przycisk Zastosuj wszystkie działania. Po zapisaniu zmian na karcie SD układ partycji powinien wyglądać tak jak na poniższym rysunku (rys.2.4). Rys. 2.4. Zrzut ekranu program gparted. Podczas zapisywania zmian na karcie SD powinno pojawić się analogiczne okno, jak poniżej. Rys. 2.5. Zrzut ekranu program gparted. 15

w powłoce systemu operacyjnego Debian w układzie Galileo za pośrednictwem RS i putty (jako root) 1 # Pozostaje już tylko sprawdzić dostępne miejsce w systemie działającym na układzie Galileo 2 df grep -i -e mmcblk -e available 3 Filesystem 1K-blocks Used Available Use% Mounted on 4 /dev/mmcblk0p2 7554116 391776 6779212 6% / 3 Połączenie i konfiguracja systemu operacyjnego w powłoce systemu operacyjnego Debian w układzie Galileo za pośrednictwem RS i putty (jako root) 1 # w pierwszej kolejności po ustawieniu hasła roota, należy skonfigurować połączenie internetowe 2 # domyślną konfiguracją systemu jest ustawienie interfejsu eth0 w tryb dhcp 3 ifconfig eth0 4 eth0 Link encap:ethernet HWaddr 98:4f:ee:01:75:8d 5 inet addr:192.168.0.23 Bcast:192.168.0.255 Mask:255.255.255.0 6 inet6 addr: fe80::9a4f:eeff:fe01:758d/64 Scope:Link 7 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 8 RX packets:15642 errors:0 dropped:0 overruns:0 frame:0 9 TX packets:162 errors:0 dropped:0 overruns:0 carrier:0 10 collisions:0 txqueuelen:1000 11 RX bytes:1157343 (1.1 MiB) TX bytes:15025 (14.6 KiB) 12 Interrupt:40 13 # aby zmienić tę konfigurację np. w celu ustawienia stałego adresu IP 14 # należy wyedytować odpowiednio plik /etc/network/interfaces 15 # proszę wzorować się na przykładzie podanym na poprzednim laboratorium przy okazji konfiguracji systemu Yocto 16 # domyślną konfiguracją interfejsu eth0 jest tryb dhcp: 17 cat /etc/network/interfaces 18 auto eth0 19 iface eth0 inet dhcp 3.1 Konfiguracja przy pomocy systemowego menadżera pakietów ATP w powłoce systemu operacyjnego Debian w układzie Galileo za pośrednictwem RS i putty (jako root) 1 # kolejnym etapem konfiguracji systemu jest jego aktualizacja za pomocą menażdżera pakietów APT 2 # proszę sprawdzić aktualne ustawienia repozytoriów, powinny one wyglądać jak poniżej 3 cat /etc/apt/sources.list 4 deb http://ftp.us.debian.org/debian wheezy main contrib non-free 5 deb http://ftp.us.debian.org/debian wheezy-updates main contrib non-free 6 deb http://security.debian.org/ wheezy/updates main contrib non-free 7 # następnie proszę zaktualizować wpisy znanym nam już menażdżerem: 8 apt-get update 9 # oraz zaktualizować system: 10 apt-get upgrade 11 Reading package lists... Done 12 Building dependency tree 13 Reading state information... Done 14 The following packages will be upgraded: 15 apt apt-utils base-files bash cpio debian-archive-keyring krb5-locales 16 libapt-inst1.5 libapt-pkg4.12 libc-bin libc6 libgcrypt11 libgssapi-krb5-2 17 libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0 libssl1.0.0 libtasn1-3 18 linux-image linux-image-3.2.0-4-486 multiarch-support ntpdate perl-base 19 rsyslog tzdata wget 20 27 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 21 Need to get 46.3 MB of archives. 22 After this operation, 509 kb disk space will be freed. 23 Do you want to continue [Y/n]? Y 24 # ten proces może potrwać kilka minut 25 # jeżeli zostały zaktualizowane elementy jądra systemu lub został wygenerowany nowy plik initrd.img 26 # powinno się zrestartować układ: 27 reboot 28 29 # dodatkowo proszę sprawdzić czy jest zainstalowany serwer ssh 30 apt-cache search openssh grep server 31 gesftpserver - sftp server submodule for OpenSSH 32 openssh-server - secure shell (SSH) server, for secure access from remote machines 33 # jeżeli nie to proszę go zainstalować 34 apt-get install openssh-server 35 Reading package lists... Done 36 Building dependency tree 37 Reading state information... Done 38 openssh-server is already the newest version. 3.2 Konfiguracja połączenia SSH logowanie bez hasła Po konfiguracji sieci, ustawieniu hasła oraz aktualizacji systemu należy zalogować się w systemie na układzie Galileo za pośrednictwem SSH. W ramach konfiguracji należy wygenerować i skopiować odpowiednio klucze SSH, tak aby możliwe było zdalne logowanie nie używając hasła. Opis tej procedury był przedstawiony w instrukcji do poprzedniego laboratorium. 16

3.3 Instalacja środowiska GStreamer GStreamer to projekt open source (rozpowszechniany na zasadzie licencji LGPL) jest to środowisko przeznaczone do tworzenia aplikacji multimedialnych. Pełni funkcję silnika przetwarzającego strumienie multimedialne oraz udostępnia interfejs dla wyższych warstw aplikacji głównie graficznego interfejsu użytkownika. GStreamer działa na zasadzie systemu wtyczek, które tworzą struktury i potokowo przetwarzają dane. Zostały opracowane interfejsy w różnych językach programowania m.in. w języku python, które ułatwiaja budowę aplikacji wykorzystujące GStreamer. Więcej informacji na ten temat można uzyskać na wykładach do niniejszego przedmiotu oraz na stronie projektu: http://gstreamer.freedesktop.org/. w powłoce systemu operacyjnego Debian w układzie Galileo za pośrednictwem SSH (jako root) 1 # kolejnym etapem jest instalacja środowiska GStreamer 2 apt-get install gstreamer-tools libgstreamer0.10-0 3 The following extra packages will be installed: 4 gstreamer0.10-tools libclass-isa-perl libffi5 libglib2.0-0 libglib2.0-data libpcre3 libswitch-perl 5 libxml2 perl perl-modules pkg-config sgml-base shared-mime-info xml-core 6 Suggested packages: 7 gstreamer0.10-plugins-base perl-doc libterm-readline-gnu-perl libterm-readline-perl-perl make 8 libpod-plainer-perl sgml-base-doc debhelper 9 The following NEW packages will be installed: 10 gstreamer-tools gstreamer0.10-tools libclass-isa-perl libffi5 libglib2.0-0 libglib2.0-data libgstreamer0.10-0 11 libpcre3 libswitch-perl libxml2 perl perl-modules pkg-config sgml-base shared-mime-info xml-core 12 0 upgraded, 16 newly installed, 0 to remove and 0 not upgraded. 13 Need to get 15.5 MB of archives. 14 After this operation, 50.1 MB of additional disk space will be used. 15 Do you want to continue [Y/n]? Y 16 17 # dodatkowo menażdżer pakietów zaleca instalację dodatkowych paczek m.in. gstreamer0.10-plugins-base, 18 # który zawiera zbiór podstawowych wtyczek, należy je także zainstalować wraz z zależnościami: 19 apt-get install gstreamer0.10-plugins-base 20 21 # dodatkowo proszę zainstalować paczkę gstreamer0.10-plugins-good: 22 apt-get install gstreamer0.10-plugins-good 23 # może to zająć dłużdszą chwilę... 24 25 # spis zainstalowanych wtyczek można uzyskać za pomocą polecenia gst-inspect 26 # do przeprowadzenia laboratorium będą potrzebne m.in. następujace wtyczki: 27 # audiotestsrc, udpsink, filesrc, filesink 28 # proszę sprawdzić czy są one dostępne w systemie: 29 gst-inspect grep audiotestsrc 30 gst-inspect grep udpsink 31 gst-inspect grep -e filesrc -e filesink 32 # szczegóły dotyczące konfiguracji poszczególnych wtyczek można wyświetlić 33 # podając nazwę wtyczki jako argument polecenia gst-inspect np.: 34 gst-inspect udpsink 35 Factory Details: 36 Long name: UDP packet sender 37 Class: Sink/Network 38 Description: Send data over the network via UDP 39 Author(s): Wim Taymans <wim@fluendo.com> 40... 4 Cykliczne wykonywanie zadań za pomocą systemu CRON CRON to system (demon) przeznaczony do cyklicznego wykonywania zadań. Jego konfiguracji można dokonać za pomocą tabel crontab. System przeszukuje m.in. następujące lokalizacje /var/spool/cron/crontabs/, /etc/crontab oraz /etc/cron.*/. Tabele programu cron posiadają specjalny format: pierwsze pięć pozycji oddzielone spacją lub tabulatorem jest deskryptorem częstości wykonywania polecenia, które występuje na miejscu szóstym tej tabeli. demonstracyjny skrypt w języku BASH o nazwie /root/test.sh 1 # na początku proszę utworzyć prosty skrypt, który będzie cyklicznie wywoływany przez system CRON 2 # proszę ustalić nazwępliku do logowania w katalogu /tmp: 3 logfile=/tmp/mylog 4 5 # skrypt powinien zapisać najpierw datę i godzinę do pliku logowania: 6 echo ">> new log <<" >> $logfile 7 date >> $logfile 8 9 # a następnie wpisać do niego 10 procesów, które najbardziej obciążają procesor: 10 ps -eo pcpu,pid,user,args sort -k 1 -r head -10 >> $logfile 11 12 # oraz sprawdzić dostępność wybranego hosta w sieci: 13 ping 192.168.0.70 -c 3 >> $logfile 14 echo " " >> $logfile 15 echo " " >> $logfile 16 17 # proszę zapoznać się ze wszystkimi opcjami przekazanymi do wywoływanych aplikacji 18 # np. man ps 17

demonstracyjny plik konfiguracyjny systemu CRON o nazwie /root/test.cron 1 # następnie proszę utworzyć plik-tabelę kompatybilną z systemem CRON 2 # odpowiednio liczby wpisane na poszczególnych pozycjach oznaczają 3 # minutę godzinę dzień miesiąca miesiąc dzień tygodnia polecenie 4 # (0-59) (0-23) (1-31) (1-12 or Jan-Dec) (0-6 or Sun-Sat) /bin/bash /root/test.sh 5 6 */15 * * * * /bin/bash /root/test.sh # powyższy wpis oznacza że skrypt /root/test.sh będzie wykonywany co 15 minut w powłoce systemu operacyjnego Debian w układzie Galileo za pośrednictwem SSH (jako root) 1 # aby dodać wpis odpowiedzialny za wywoływanie danego polecenia należy skorzystać z programu crontab 2 # crontab z opcją -l listuje tabelę zadań dla danego użytkownika wymienionego w argumencie opcji -u 3 crontab -l -u root 4 no crontab for root 5 # aby dodać wpis proszę podać nazwę pliku konfiguracyjnego jako argument, tak jak poniżej 6 crontab -u root /root/test.cron 7 # odpowiedni wpis powinien teraz być wyświetlany przez polecenie crontab -l 8 crontab -lu root 9 */15 * * * * /bin/bash /root/test.sh 10 # na koniec proszę się upewnić czy polecenie jest wykonywane cyklicznie, jeżeli tak to proszę wyczyścić tabelę 11 crontab -r -u root 5 Przesyłanie plików używając Gstreamera i protokołu UDP konfiguracja w powłoce BASH W niniejszym punkcie należy przetestować działanie Gstreamera i sprawdzić jego przydatność pod kątem przesyłania plików tekstowych za pomocą protokołu UDP. Zadanie to proszę wykonać za pomocą narzędzi pochodzących z pakietu gst-tools: gst-inspect i gst-launch oraz postępując zgodnie z poniższymi wskazówkami. w powłoce systemu operacyjnego Debian w komputerze laboratoryjnym (jako student) 1 # na samym początku należy zestawić tor odbiorczy 2 # używając wtyczek udpsrc oraz filesink 3 gst-launch udpsrc port=5088! filesink location=plik-rec.txt 4 Ustawianie potoku na PAUZOWANIE... 5 Potok jest na żywo i nie wymaga PRZEWINIĘCIA... 6 Ustawianie potoku na ODTWARZANIE... 7 New clock: GstSystemClock 8 10 9 # po wydaniu takiego polecenia tor odbiorczy będzie oczekiwał na przesłanie danych 11 # gst-launch to aplikacja, która pozwala szybko uruchomić łańcuch wtyczek 12 # każdej wtyczce można ustawić jej tzw. właściwości, spis wszystkich właściwości można uzyskać 13 # za pomocą polecenia gst-inspect 14 # wtyczka udpsrc pozwala na ustawienie m.in. numeru portu, na którym będzie prowadzony nasłuch 15 # wtyczka filesink - nazwy pliku na dysku, do którego będzie prowadzony zapis 16 # należy użyć znaku równości do ustawienia poszczególnych właściwości 17 # oraz znaku wykrzyknika do połączenia poszczególnych wtyczek w powłoce systemu operacyjnego Debian w układzie Galileo za pośrednictwem SSH (jako root) 1 # analogicznie (komplementarnie) należy zestawić tor nadawczy na układzie Galileo 2 # najpierw proszę wygenerować plik tekstowy do przesłania 3 i=0 4 while [[ $i -lt 16 ]]; do 5 i=$[$i+1]; 6 echo "$i linia w pliku"; 7 done > plik.txt 8 # proszę upewnić się co zawiera wygenerowany plik: 9 cat plik.txt 10 1 linia w pliku 11 2 linia w pliku 12... 13 14 # następnie zestawić tor nadawczy: 15 gst-launch filesrc location=plik.txt! udpsink host=192.168.0.70 port=5088 16 Setting pipeline to PAUSED... 17 Pipeline is PREROLLING... 18 Pipeline is PREROLLED... 19 Setting pipeline to PLAYING... 20 New clock: GstSystemClock 21 Got EOS from element "pipeline0". 22 Execution ended after 9281999 ns. 23 Setting pipeline to PAUSED... 24 Setting pipeline to READY... 25 Setting pipeline to NULL... 26 Freeing pipeline... 27 28 # wtyczka filesrc pozwala na ustawienie m.in. nazwy czytanego pliku - za pomocą właściwości location 29 # dla poprawnego działania należy ustawić dwie właściwości wtyczki udpsink: 30 # port - numer portu na którym prowadzony jest nasłuch 31 # host - adres ip docelowej maszyny w powłoce systemu operacyjnego Debian w komputerze laboratoryjnym (jako root) 1 # finalnie należy sprawdzić, czy udało się przesłać zawartość pliku z układu Galileo na komputer laboratoryjny 2 cat plik-rec.txt 3 1 linia w pliku 4 2 linia w pliku 5... 18

6 Strumieniowanie audio używając Gstreamera i protokołu UDP konfiguracja w powłoce BASH w powłoce systemu operacyjnego Debian w komputerze laboratoryjnym (jako student) 1 # najpierw proszę upewnić się czy wtyczki obsługujące system ALSA są zainstalowane: 2 apt-get update 3 apt-get install gstreamer1.0-alsa 4 Czytanie list pakietów... Gotowe 5 Budowanie drzewa zależności 6 Odczyt informacji o stanie... Gotowe 7 gstreamer1.0-alsa jest już w najnowszej wersji. 8 # jeżeli nie, to proszę je zainstalować w powłoce systemu operacyjnego Debian w komputerze laboratoryjnym (jako student) 1 # następnie proszę przełączyć się na zwykłego użytkownika (student) 2 # oraz zestawić tor odbiorczy: 3 gst-launch udpsrc port=5088! audio/x-raw-float,rate=4000,width=64,channels=1,endianness=1234 / 4! audioconvert! alsasink 5 Ustawianie potoku na PAUZOWANIE... 6 Potok jest na żywo i nie wymaga PRZEWINIĘCIA... 7 Ustawianie potoku na ODTWARZANIE... 8 New clock: GstSystemClock 9 10 # tor odbiorzy powinien teraz oczekiwać na przesłanie strumienia audio na port nr 5088 11 # Gstreamer posiada wbudowany mechanizm negocjacji formatu przesyłanych danych 12 # jednak czasem może wystąpić potrzeba wymuszenia alternatywnego formatu 13 14 # kolorem purpurowym oznaczono tzw. CAPS - jest to skrót od Capabilities 15 # CAPS wykorzystuje się do wymuszenia właściwego formatu strumienia danych multimedialnych 16 w powłoce systemu operacyjnego Debian w układzie Galileo za pośrednictwem SSH (jako root) 1 # sygnał dźwiękowy proszę wyemitować za pomocą układu Intel Galileo i wtyczki audiotestsrc 2 # komplementarny tor nadawczy można zrealizować w następujący sposób: 3 gst-launch audiotestsrc freq=500! audio/x-raw-float,rate=4000,width=64,channels=1,endianness=1234 / 4! udpsink host=192.168.0.70 port=5088 5 Setting pipeline to PAUSED... 6 Pipeline is PREROLLING... 7 Pipeline is PREROLLED... 8 Setting pipeline to PLAYING... 9 New clock: GstSystemClock 10 11 # tor nadawczy powinien emitować ciągły sygnal jednotonowy o częstotliwości 500 Hz 12 # tu wymuszony został taki sam format strumienia danych jak w torze odbiorczym 13 # zawsze proszę upewnić się, czy zadany format danych jest dostępny dla danej wtyczki 14 # sygnał audio powinien być przesyłany za pomocą prodokołu UDP na adres podany jako host 15 # do portu karty sieciowej określonej przez numer przypisany właściwości port 16 17 # aby określić czas trwania sygnału, należy ustawić właściwość num-buffers 18 gst-launch audiotestsrc freq=500 num-buffers=3! audio/x-raw-float,rate=4000,width=64,channels=1,endianness=1234 / 19! udpsink host=192.168.0.70 port=5088 20 Pipeline is PREROLLING... 21 Pipeline is PREROLLED... 22 Setting pipeline to PLAYING... 23 New clock: GstSystemClock 24 Got EOS from element "pipeline0". 25 Execution ended after 765127542 ns. 26 Setting pipeline to PAUSED... 27 Setting pipeline to READY... 28 Setting pipeline to NULL... 29 Freeing pipeline... 30 31 # o jakiej największej częstotliwości ton można przesyłać przy zadanym formacie danych? 32 33 # tor nadawczy można uruchamiać wiele razy, 34 # tymczasem tor odbiorczy powinien odtwarzać kolejno otrzymane sygnały 7 Opracowanie aplikacji cyklicznego strumieniowania audio Zadanie należy wykonać samodzielnie korzystając ze zdobytej dotąd wiedzy oraz z dokumentacji. Aplikacja może być napisana jako skrypty BASH lub w języku Python. Opracowany system powinien: przesyłać strumienie audio za pomocą frameworka Gstreamer, przesyłać zróżnicowane sygnały dźwiękowe (czas trwania, częstotliwość), sygnały powinny być dobierane np. ze względu na godzinę lub napięcie występujące na portach GPIO, być synchronizowany przez system CRON, wykrywać wyłączenie toru odbiorczego i automatyczne go włączać, może przesyłać do odtwarzania pliki audio np. w formacie WAV. 19