Tworzenie oprogramowania dr inż. Krzysztof Konopko e-mail: k.konopko@pb.edu.pl 1
Tworzenie oprogramowania dla systemów wbudowanych Program wykładu: Tworzenie aplikacji na systemie wbudowanym. Konfiguracja (IDE Integrated development environments) środowiska do crosskompilacji. Debugowanie aplikacji na urządzeniu i w sposób zdalny. 2
Tworzenie aplikacji na systemie wbudowanym System wbudowany to zwykły Linux z ograniczoną liczbą aplikacji. Tworzenie aplikacji jest zatem takie same jak tworzenie aplikacji dla desktopowych dystrybucji Linuksa. Możliwe jest więc praktycznie swobodne wykorzystanie istniejących kodów źródłowych aplikacji i bibliotek do tworzenia własnych nowych programów dla systemu wbudowanego wykorzystanie dostępnego oprogramowania może być jednak ograniczone ze względu na zasoby samego urządzenia (wydajność, ilość pamięci czy dostępne peryferia). 3
Języki programowanie Najczęściej stosowanym językiem programowania w Linuksie jest C. C ++ jest stosowany raczej dla większych aplikacji należy wtedy dodać odpowiednie biblioteki do systemu. Również języki skryptowe takie jak python, perl czy lua mogą być wykorzystywane do szybkiego tworzenia aplikacji, (np. aplikacji internetowych) wymagają one jednak zainstalowania interpretera na systemie wbudowany, co zazwyczaj zwiększa zużycie pamięci i nieco obniża wydajność systemu. 4
Tworzenie aplikacji Bezpośrednie tworzenie prostych aplikacji na systemie wbudowanym zazwyczaj nie wymaga gwarantowania dużej przenośności czy skomplikowanego procesu konfiguracji kompilacji. Zazwyczaj zatem wystarcza napisanie prostego pliku makefile. Dla bardziej skomplikowanych aplikacji wymagających konfiguracji procesu kompilacji lub kompilacji aplikacji na innym np. desktopowym systemie zazwyczaj wykorzystuje się narzędzia umożliwiające zautomatyzowanie tworzenia pliku makefile autotools, Cmake. 5
Prosty makefile hello: hw_hello.o hw_power.o hw_defs.h hw_hello.h hw_power.h gcc -Wall -ansi -pedantic -lm hw_main.c hw_hello.o hw_power.o -o hello echo hello: zbudowane! hw_hello.o: hw_hello.c hw_defs.h gcc -c -Wall -ansi -pedantic hw_hello.c hw_power.o: hw_power.c hw_defs.h gcc -c -Wall -ansi -pedantic hw_power.c 6
Eclipse Eclipse jest zintegrowanym środowiskiem programistycznym (ang. Integral Development Environment - IDE), które jest szeroko rozpowszechnione w środowisku programistów Javy, PHP, czy C++. Siłą Eclipse'a jest dobrej jakości edytor kodu oraz możliwość rozszerzenie podstawowej funkcjonalności tej platformy o dodatkowe wtyczki, których liczba w tej chwili jest liczona w tysiącach. Projekt został stworzony przez firmę IBM, a następnie udostępniony na zasadach otwartego oprogramowania. W chwili obecnej jest on rozwijany przez Fundację Eclipse. 7
Z menu File New Project 8
9
Wybieramy nazwę projektu i typ toolchaina jako Cross Gcc 10
Następnie określamy opcje naszego toolchaina: Cross compiler prefix: arm-openwrt-linux Cross compiler path: /home/openwrt/openwrt/staging_dir/toolchain-... 11
Wybieramy Project Properties następnie C/C++ General i klikamy na link Configure Workspace Settings 12
Wybieramy C/C++ Build Environment, i klikamy Add... następnie dodajemy nową zmienną STAGING_DIR i określamy jej wartość na /home/openwrt/openwrt/staging_dir/toolchain- 13
Zamykamy preferencje. Eclipse jest gotowy do tworzenia i kompilowania kodu w C. 14
Zdalne uruchamianie aplikacji. 15
Zdalne uruchamianie aplikacji. 16
Zdalne uruchamianie aplikacji. 17
Teraz ustawiamy parametry zdalnego Linuksa. 18
I konfigurujemy dostęp przez ssh 19
Łączymy się z OpenWrt 20
Pliki można przenosić między katalogami na zasadzie przeciągnij i upuść 21
Mamy też bezpośredni dostęp do terminala OpenWrt 22
Debugowanie aplikacji GDB - GNU Debugger: debugger będący częścią projektu GNU, napisany w 1988 r. przez Richarda Stallmana, obsługujący wiele architektur procesorowych, wspiera wiele języków programowania, w tym: Ada, C, C ++, Objective-C, Free Pascal, FORTRAN Java, działa w trybie tekstowym, lecz zdecydowana większość zintegrowanych środowisk programistycznych posiadających interfejs graficzny potrafi prezentować wyniki działania GDB, 23
Debugowanie aplikacji GDB potrafi: uruchomić program, podać mu argumenty, ustawić wszystkie parametry, które mogą mieć wpływ na jego działanie, zatrzymać program po wystąpieniu odpowiedniego zdefiniowanego warunku (na polecenie użytkownika, przy zmianie wartości zmiennej, przy wykonaniu odpowiedniej instrukcji, linii pliku źródłowego czy po wystąpieniu innego zdarzenia). A także wykonywać go krok po kroku, sprawdzić wartość konkretnych zmiennych, rejestrów oraz wyrażeń, zmieniać pamięć procesu w trakcie jego działania. 24
Zdalne debugowanie aplikacji Debugowanie aplikacji w systemie wbudowanym zakłada zazwyczaj uruchamianie niewielkiego programu gdbserver w systemie docelowym. Zajmuje się on wykonywaniem aplikacji oraz zbieraniem danych na podstawie komend otrzymanych za pośrednictwem sieci lub portu szeregowego od programu GDB uruchomionego na stacji roboczej. 25
Konfiguracja eclipse do zdalnego debugowania aplikacji 26
Konfiguracja eclipse do zdalnego debugowania aplikacji 27
Konfiguracja eclipse do zdalnego debugowania aplikacji 28
Konfiguracja eclipse do zdalnego debugowania aplikacji 29
Dziękuję za uwagę Niestety to już koniec :( 30