Poradnik z cyklu dla programistów. Wykonywanie zadań w czasie rzeczywistym nie jest łatwe . Niestety system operacyjny robi swoje przekazując sterowanie do wielu procesów na nim uruchomionych skutecznie zwalniając inne procesy. Co zrobić, aby zatem dokładnie zmierzyć czas wykonania jakiejś operacji ? Potrzeba pomiarów w czasie rzeczywistym. A to nie jest łatwe na zwykłym systemie . W tym miejscu przydaje się Linux z jądrem czasu rzeczywistego z wykorzystaniem projektu RTAI.
W tym przypadku wszystko polega na tym, że jądro otrzymuje najniższy z możliwych priorytetów, zaś nasze zadanie staje się najważniejsze .
Jest kilka ciekawych projektów związanych z czasem rzeczywistym. Pierwszym jest RTLinux, jednak niestety został on dość dawno zawieszony . Innym rozwiązaniem jest RTAI.
W poradniku tym pokażę jak zainstalować Linuksa czasu rzeczywistego, co wbrew pozorom nie jest łatwe, a zgodne wykonywanie poleceń z instrukcją dawaną przez autorów kończy się fiaskiem.
Cały proces zostanie zademonstrowany na
RTAI 3.8 oraz najnowszej dystrybucji Slackware.
Proces instalacji RTAI Linux:
1. Zainstaluj Linuksa
Instalacja całego systemu jest prosta, jednak zwróć uwagę, że chcesz mieć system RT (Real Time), więc nie instaluj śmieci. Zainstaluj tylko samo jądro, programy do konsoli (przyda się np MC), biblioteki. Nie instaluj źródeł jądra, są zbędne oraz Xów. Jako główny system plików wybierz EXT3.
2. Ściągnij jądro Linux 2.6.32.2. To najnowsze jądro w pełni zgodne z RTAI. Jądro to znajdziesz na serwerze kernel.org
Jądro wypakuj do folderu
/usr/src/linux
To ważne, gdyż instalator RTAIa tam będzie go szukał.
3. Ściągnij
RTAI 3.8 i wypakuj go do
/usr/src/rtai/
4. Z katalogu
/usr/src/rtai/base/arch/x86/ bierzemy patcha dla naszego jądra i kopiujemy go do folderu
/usr/src/
Dla ułatwienia zmień mu nazwę na
patch
5. Wchodzimy do
/usr/src/linux/ i tam wywołujemy polecenie
patch -p1 < ../patch
W tym momencie nasze jądro zostanie zmodyfikowane do używania go w trybie RT.
6. Wykonujemy
make menuconfig
Włączamy obsługę USB, systemu plików EXT3 i inne potrzebne nam opcje. Ważne aby także wybrać odpowiedni procesor. Liczbę rdzeni można zostawić domyślnie na 8 chyba, że mamy więcej.
Zapisz konfigurację .config
5. W zapisanym .config zmienić trzeba ręcznie kilka opcji
CONFIG_SPARSE_IRQ=n
CONFIG_EXT3_FS=y
CONFIG_EXT3_FS_XATTR=y
CONFIG_EXT3_FS_POSIX_ACL=y
CONFIG_EXT3_FS_SECURITY=y
Ustaw te zmienne, gdyż inaczej jądro się nie skompiluje lub też nie będzie się chciało uruchomić.
Na razie jądro pozostaw takie jakie jest.
6. Przejdź do folderu z RTAI czyli
/usr/src/rtai/
Co najważniejsze to ustaw prawa dostępu na 777 poleceniem
chmod
7. Niestety makefile posiada błąd w składni przez co nie uruchomi się on do końca. Trzeba go edytować.
W linijce mniej więcej o numerze 133 znajdziesz all
%::
Zmień to na
all ::
8. Teraz można już swobodnie wykonać polecenie
make menuconfig
W opcjach ustaw dokładną liczbę posiadanych rdzeni procesora.
9. Wykonaj kolejno komendy
make i
make install
W tym momencie RTAI już się zainstaluje. Czas zatem wrócić do instalacji jądra.
10. Przejdź do folderu
/usr/src/linux/
11. Wykonaj kolejno polecenia:
make dep
make clean
make bzImage
make modules
make modules_install
cp arch/i386/boot/bzImage /boot/rtlinuz
Dzięki temu stworzysz nowe jądro, które następnie umieścisz w folderze rozruchowym. Teraz pozostało dodać opcje uruchamiania systemu w trybie RT
12. Otwórz
/etc/lilo.conf i na samym końcu edytuj bootowanie dodając startowanie nowego jądra. Zwróć uwagę co miało podane normalne jądro w pozycji root, musisz dodać tak samo. W moim przypadku dodałem następujące pozycje:
image = boot/rtlinuz
label=RTAILinux
root = dev/sda2
read-only
Po zapisaniu zostaje już tylko stworzenie nowego punktu ładowania, a więc w konsoli wydaj polecenie
lilo
W tym momencie powinno wszystko zostać zakończone, wystarczy komenda reboot aby na nowo włączyć komputer i sprawdzić czy RTAI działa. Jeśli nie ruszy, uruchom system na zwykłym jądrze. Jeśli nie dałeś sobie rady napisz na naszym
FORUM.
Jeśli jednak działa wszystko, czas na test. Wpisz
cd /usr/realtime/modules
sudo insmod rtai_hal.ko
sudo insmod rtai_lxrt.ko
I już wszystko będzie jasne. Nie możesz mieć oczywiście żadnych błędów.
A więc miłego użytkowania i pozdrawiam.
Wszelkie prawa zastrzeżone