Emulator konsoli NES w systemie Linux na komputerze SoMLabs VisonSOM
Środowisko kompilacji jądra Linux oraz Device Tree
Wraz z obrazem systemu Debian, firma SoMLabs dostarcza użytkownikowi wygodne środowisko konfiguracji i kompilacji jądra systemu oraz plików Device Tree. Środowisko to zostało zbudowane w oparciu o narzędzia Qemu oraz chroot, co pozwala na uruchomienie na komputerze PC (np. x86) nienatywnych plików wykonywalnych (np. dla architektury ARM) w standardowy dla plików natywnych sposób, tj. ./program. Do poprawnego działania środowiska w dystrybucji Ubuntu, niezbędna jest uprzednia instalacja pakietów qemu, binfmt-support oraz qemu-user-static:
apt-get install qemu binfmt-support qemu-user-static
Pobranie, rozpakowanie i uruchomienie (w tym wykonanie operacji chroot zmieniającej katalog główny) kompletnego środowiska:
wget http://somlabs.com/os_images/somlabs-visionsom-6ull-debian-rootfs-qemu.tar.xz sudo tar xf somlabs-visionsom-6ull-debian-rootfs-qemu.tar.xz sudo ./somlabs-debian/chtoolchain
Po uruchomieniu skryptu chtoolchain, źródła systemu Linux są dostępne w katalogu /home/developer/source/kernel/linux-rel_imx_4.1.15_2.1.0_ga. Dla uproszczenia dalszego opisu, przejdźmy zatem do katalogu z kodem źródłowym:
cd /home/developer/source/kernel/linux-rel_imx_4.1.15_2.1.0_ga
W kolejnym kroku, do katalogu arch/arm/configs należy skopiować domyślną konfigurację jądra (plik visionsom-6ull-linux_defconfig) udostępnioną przez producenta płytki VisionSOM:
cp ../../somlabs-dts-1.0/visionsom-6ull-linux_defconfig arch/arm/configs/
W chwili tworzenia niniejszego artykułu, opis Device Tree (w postaci pliku arch/arm/boot/dts/somlabs-visionsom-6ull.dts) nie zawierał pełnego wsparcia dla ekranu LCD-TFT. Aby poprawnie uruchomić wyświetlacz, niezbędne jest pobranie i zaaplikowanie dodatkowej łatki:
wget http://wiki.somlabs.com/images/c/cd/Enable-tft-lcd.zip unzip Enable-tft-lcd.zip patch arch/arm/boot/dts/somlabs-visionsom-6ull.dts ./enable-tft-lcd.patch
W tak przygotowanym środowisku, konfiguracja i kompilacja jądra oraz opisu Device Tree może zostać zrealizowana za pomocą następujących poleceń:
make ARCH=arm visionsom-6ull-linux_defconfig make ARCH=arm menuconfig make -j4 ARCH=arm zImage make ARCH=arm somlabs-visionsom-6ull.dtb
Pliki wynikowe powyższych kompilacji, tj.:
- arch/arm/boot/zImage
- arch/arm/boot/dts/somlabs-visionsom-6ull.dtb
powinny zostać skopiowane do katalogu /boot na karcie SD z obrazem systemu.
Instalacja środowiska Xfce oraz emulatora Fceux
W domyślnej konfiguracji, dostarczony przez producenta modułu obraz z dystrybucją Debian nie posiada zainstalowanego środowiska graficznego. Dzięki wykorzystaniu wbudowanego w system menadżera pakietów, instalacja wybranego środowiska ogranicza się do dwóch prostych poleceń w konsoli systemu (w odróżnieniu od np. Buildroota, gdzie wymagana byłaby rekonfiguracja i ponowne przebudowanie obrazu systemu). Instalacja lekkiego środowiska graficznego Xfce:
root@somlabs:~# apt-get update root@somlabs:~# apt-get install xfce4
Po podłączeniu klawiatury i myszki do portów USB (urządzenia te przydadzą się do pierwszych testów emulatora – zanim w kolejnych podpunktach przystąpimy do konfiguracji dedykowanych kontrolerów) oraz ponownym uruchomieniu komputera, urządzenie jest gotowe do pracy. Uruchomione środowisko Xfce (przy rozdzielczości ekranu 800×480) przedstawiono na rysunku 2.
Rys. 2. Środowisko graficzne Xfce uruchomione na module VisionSOM
Również z wykorzystaniem narzędzia apt-get, zainstalujmy w systemie jeden z dostępnych emulatorów konsoli NES – oprogramowanie Fceux (nie jest to oczywiście jedyny dostępny w repozytoriach dystrybucji Ubuntu, emulator konsoli Famicon/NES):
root@somlabs:~# apt-get install fceux
Po zakończonym etapie instalacji pakietu, w sekcji Games środowiska Xfce, zostanie dodany nowy wpis pozwalający na uruchomienie emulatora bezpośrednio z interfejsu graficznego – rysunek 3.
Rys. 3. Zainstalowany emulator konsoli Famicon/NES – pakiet Fceux
Po uruchomieniu emulatora należy skonfigurować dołączoną klawiaturę, wybierając z górnej belki programu opcję Fceux→Options→Gamepad Config. Wczytanie gry jest realizowane poprzez wybranie opcji Fceux→File→Open ROM i wskazanie pliku *.rom. Ze względu na aspekty prawne (emulacja sprzętu jest w pełni legalna – wątpliwości prawne może budzić wykorzystywanie plików ROM, nawet jeśli jesteśmy w posiadaniu oryginalnego kartridża z grą), autor nie umieścił w tekście bezpośrednich odnośników do źródeł.