SantyagoSantyago
Avatar

Witaj!
Blog archiwalny. Już niebawem nowy serwis!

YouTube RSS Facebook GitHub

Na łamach mojego Bloga pojawiły się już dwa komputerki z rodziny ODROID-ów - mianowice 4-rdzeniowy ODROID-X2 oparty o układ SoC Exynos 4412 oraz 8-rdzeniowy ODROID-XU wyposażony w jednostkę SoC Exynos 5410 obsługujący technologię big.LITTLE. W ofercie firmy Hardkernel jest jeszcze jeden bardzo ciekawy i często niedoceniany model oznaczony symbolem U3 (nowsza wersja wcześniejszego U2). Dla wielu osób, w tym mnie, jest to chyba najbardziej ciekawy i wszechstronny model, kosztujący zaledwie 65$, a więc odrobinę drożej niż bardzo popularny Raspberry Pi.

Podobnie jak jednostka ODROID-X2, został on wyposażony w układ Exynos4412 Prime Cortex-A9 Quad taktowany częstotliwością 1.7GHz z akceleratorem graficznym Mali-400 i 2GB pamięci RAM. W tym modelu zdecydowano się na chłodzenie pasywne, jednak istnieje możliwość wymiany radiatora na wersję z wentylatorem. To co wyróżnia U3 to niewątpliwie rozmiar wynoszący jedynie 83 x 48 mm oraz wyprowadzenie portów I/O do złącz, które pozwalają na podłączenie dedykowanych rozszerzeń, takich jak: I/O Shield, UPS Shield, Show Shield.

ODROID-U3 posiada również 3 porty USB 2.0, gniazdo Ethernet 10/100Mbps, port HDMI, wyjście słuchawkowe, czytnik katy microSD oraz eMMC. Jedynie czego nie znajdziemy w tym modelu, to gniazda do podłączenia ekranu LCD.

Dwie wersje ODROID-U3 v0.2 i v0.5

Kupując ODROID-U3 zwróć uwagę na jego wersję, bowiem wielu sprzedawców oferuje jeszcze jego starszą wersję oznaczoną numerem v0.2. Od nowszej wersji v0.5 różni się brakiem wyprowadzenia magistrali SPI oraz mocowaniem radiatora. Niemałą różnicą w nowszej wersji, jest również zdolność pracy portu USB w trybie OTG. Wersję 0.5 można również rozpoznać po nadruku ODROID-U3+. Posiadanie nowszej wersji niesie za sobą jeszcze szereg zalet, ale o tym dalej.

ODROID-U3 (po lewo wersja v0.2 / po prawo wersja v0.5)

Akcesoria

Wybór dedykowanych akcesoriów jest bardzo spory, w skład których wchodzą między innymi: karta sieciowa Wi-Fi Realtek RTL8188CUS 802.11n, moduł Bluetooth CSR V2.1 EDR, karta pamięci eMMC oparta o 19nm kości NAND Toshiby, wentylator o prędkości obrotowej 4000rpm zasilany napięciem 5V, moduł USB-UART, bateria CR2032 3V o pojemności 220mAH do podtrzymywania działania zegara RTC, zasilacz 5V/2A oraz kamera 720p z 1Mpix sensorem CMOS Novatek NY99140 i kontrolerem SONIX SN9C259.

Karta eMMC 16GB
Czytnik kart eMMC
Moduł BT (HCI)
Karta Wi-FI USB
Bateria RTC 3V
Moduł USB-UART
Radiator z wentulatorem

Zasilacz 5V / 2A
Obudowa
Kamera 720p 1Mpix

Na stronie producenta, znajdziemy jeszcze szereg innych dodatków w postaci shieldów - zasilania awaryjnego UPS, wyświetlacza LCD, czy I/O shielda przynosząca dobrodziejstwa platformy Arduino. Ale o tym za chwilę...

Ubuntu 14.04 Trusty Dev Center

Aktualna wersja Ubuntu 14.04 Trusty Dev Center (18/05/2014) jest naprawdę konkretna. Zawiera jądro w wersji 3.8.13.18, sterowniki Mali r4p0 do obsługi OpenGL ES2 oraz serwer Xorg z nałożonymi łatkami dla sterownika armsoc, co znacznie przyśpiesza działanie samego pulpitu.

Wiele osób powinna ucieszyć obecność dostosowanego Gstreamera do sprzętowego dekodowania materiału video za pomocą MFC/FIMC, więc materiały w rozdzielczości 1080p nie stanowią już żadnego problemu. Natomiast na osoby chcące przerobić U3 na centrum multimedialne, a nie przepadających za Androidem (swoją drogą, dostępna jest wersja 4.4.4), czeka XBMC 13.1 Gotham, który sprawuje się jak żyleta.

Więcej informacji na temat tej dystrybucji znajdziecie na forum społeczności Hardkernel.

U3 I/O Shield

U3 I/O Shield to genialna nakładka na ODROID-U3 wyposażona w mikrokontroler ATMEGA328P. Jest ona w pełni zgodna programowo z Arduino UNO, która po wpięciu do U3 jest od razu dostępna pod portem szeregowym ttyACM99. Dzięki temu możemy ją programować bezpośrednio z Arduino IDE. Gdyby tego było mało, dostajemy również expander I2C TCA6416A, który daje nam kolejne 16 portów GPIO, mogących pracować z napięciami od 1.65V do 5.5V, gdzie możemy oddzielnie dobrać napięcia po stronie portów jak i szyny SDA/SCL - oznacza to, że z automatu dostajemy dwukierunkowy konwerter poziomów logicznych.

Jeśli posiadamy nowszą wersję ODROID-U3+ (rev. 0.5) oraz I/O Shield (rev. 0.3), otrzymujemy jeszcze dostęp do sprzętowej magistrali SPI podłączonej do szeregowej pamięci Flash o pojemności 2Mbit (256kB).

Dla majsterkowiczów - żyć, nie umierać!

U3 I/O przed zamontowaniem

Nieśmiertelny przykład blink.ino

Niebieska dioda jako LED13

Porównanie parametrów

  ODROID-X2 ODROID-U3 ODROID-XU
   
Procesor Exynos 4412 Exynos 4412 Exynos 5410
Rodzina ARM Cortex A9 ARM Cortex A9 ARM Cortex A15
ARM Cortex A7 big.LITTLE
Zegar procesora  1,7 GHz  1,7 GHz  1,6G Hz
Liczba rdzeni 4 4 8
Układ graficzny ARM Mali-400
34 GFLOPS
ARM Mali-400
34 GFLOPS
PowerVR SGX 544MP
76 GFLOPS
Zegar grafiki 440 MHz 440 MHz 640 MHz
OpenGL ES 2.0 2.0 2.0
OpenVG 1.1 1.1 1.1
OpenCL Nie Nie 1.1
 Pamięć RAM 2048 MB 2048 MB  2048 MB
 USB 2.0 Tak (6x)   Tak (3x)  Tak (4x)
USB 3.0 Nie Nie Tak (1x)
USB 3.0 OTG Nie Nie Tak (1x)
 HDMI Tak Tak Tak
DisplayPort NIe Nie Tak
eMMC Tak
Version 4.41
Tak
Version 4.41
Tak
Version 4.5
microSD Nie Tak Tak
SDHC Tak Nie Nie
10/100 Ethernet Tak Tak Tak
IO Ports 50 pinów
LCD, I2C, UART, SPI, ADC, GPIO
12 pinów
GPIO, UART, I2C, SPI
30 pinów
GPIO, IRQ, SPI, ADC
LCD panel Tak
LVDS / RGB
Nie Tak
MIPI
Wymiary    90 x 94 mm 83 x 48 mm  69.80 x 94 mm

Reklama

Hardkernel zapowiedział nowego ODROIDa oznaczonego symbolem XU3. Jednostka ta wykorzystuje 8 rdzeniowy procesor Exynos5422 z czterema rdzeniami Cortex A15 oraz Cortex A7, taktowanymi zegarem 2GHz. Exynos5422 wspiera technologię big.LITTLE wraz z systemem system HMP (Heterogeneous Multi-Processing), który umożliwia wykorzystywanie wszystkich 8 rdzeni w dowolnej konfiguracji zwiększając wydajność nawet o 20%.

W przypadku ODROID-XU, który również posiada 8 rdzeni wygląda to tak, że pierwszy czterordzeniowy Cortex A15 odpowiada za obsługę wymagających aplikacji, natomiast drugi Cortex A7 wykorzystywany jest przez mniej wymagające aplikacje. Dzięki systemowi HMP nie będzie miało to już żadnego znaczenia. Drugą zasadniczą różnicą pomiędzy modelem XU, a XU3 jest zastosowanie akceleratora graficznego Mali-T628 MP6, wspierającego OpenGL ES 3.0/2.0/1.1 oraz OpenCL 1.1.

ODRDOID-XU3 wyposażony jest w 2GB pamięci LPDDR3 RAM, taktowanej zegarem  933MHz, co pozwoli na osiągnięcie przepustowości na poziomie 14.9GB/s. Zdecydowano się również na szybsze  pamięci NAND eMMC w wersji 5.0. Deklarowany, sekwencyjny odczyt to 198MB/s oraz zapis na poziomie 74MB/s.

Jeśli chodzi o dostępne porty, to dostajemy do dyspozycji 2 porty USB 3.0 (jeden pracujący w trybie hosta oraz jeden w trybie OTG) oraz 4 porty USB 2.0. Standardowo mamy już możlwiość podłączenia ODROID-a za pomocą gniazda micro-HDMI obsługującego rozdzielczość do 1920x1080 i/lub gniazda DisplayPort1.1 obsługującego rozdzielczość do 3840x2160. Oba gniazda mogą pracować jednocześnie w trybie Dual Head.


Zdecydowano się również na zintegrowane czujniki poboru mocy wszystkich elementów płytki - Big CPU, Little CPU, GPU oraz pamięci DRAM. Dotychczas taki wariant było dostępny jedynie w rozszerzonej wersji ODROID-XU+E.  Na płytce znajdziemy również port Ethernet 10/100Mbps, wyjście słuchawkowe, slot kart pamięci microSD oraz 30 pinowy port rozszerzeń I/O.

ODROID-XU3 został wyceniony na 179$. W ten cenie dostajemy płytkę bazową, 4A zasilacz 5V oraz obudowę. Pierwsze zamówienia realizowane będą już 18 sierpnia 2014. Natomiast w okolicach grudnia 2014 zostanie przedstawiona odchudzona wersja, która ma kosztować poniżej 100$.

Porównanie parametrów

  ODROID-X2 ODROID-XU ODROID-XU3
   
Procesor Exynos 4412 Exynos 5410 Exynos5422
Rodzina ARM Cortex A9 ARM Cortex A15
ARM Cortex A7 big.LITTLE
ARM Cortex A15
ARM Cortex A7 big.LITTLE
HMP
Zegar procesora  1.7 GHz  1.6 GHz 2.0 GHz
Liczba rdzeni 4 8 8
Układ graficzny ARM Mali-400
34 GFLOPS
PowerVR SGX 544MP
76 GFLOPS
Mali-T628 MP6
142 GFLOPS
Zegar grafiki 440 MHz 640 MHz 695 MHz
OpenGL ES 2.0 2.0 3.0
OpenVG 1.1 1.1 b/d
OpenCL Nie 1.1 1.1
 Pamięć RAM 2048 MB  2048 MB 2048 MB
 USB 2.0 Tak (6x)    Tak (4x)  Tak (4x)
USB 3.0 Nie Tak (1x) Tak (1x)
USB 3.0 OTG Nie Tak (1x) Tak (1x)
 HDMI Tak Tak Tak
DisplayPort NIe Tak Tak
eMMC Tak
Version 4.41
Tak
Version 4.5
Tak
Version 5.0
eMMC
Read / Write
44 / 28 MB/s 117 / 56 MB/s 198 / 74 MB/s
microSD Nie Tak Tak
SDHC Tak Nie Nie
10/100 Ethernet Tak Tak Tak
IO Ports 50 pinów
LCD, I2C, UART, SPI, ADC, GPIO
30 pinów
GPIO, IRQ, SPI, ADC
30 pinów
GPIO, IRQ, SPI, ADC
LCD panel Tak
LVDS / RGB
Tak
MIPI
Nie
Wymiary    90 x 94 mm  69.80 x 94 mm 94 x 70 mm

Niedawno pojawiły się informacje o sporych problemach firmy Crytek, które mogą mieć negatywne skutki w doprowadzeniu  silnika Cryengine dla Linuksa. Krótko mówiąc, może się on w ogóle nie pojawić - dlatego warto brać pod uwagę inne możliwości, jaką niewątpliwie jest Unreal Engine 4 o którym jest również ostatnio bardzo głośno.

Jedną z nielicznych (o ile nie jedyną) produkcją wykorzystującą starszy Unreal Engine 3 jest gra Dungeon Defenders, ale prawdę mówiąc nie pokazuje ona za wiele. Tym razem, macie teraz okazję przetestować działanie Unreal Engine 4 na własnych Linuksach, bowiem pojawiły się gotowe binarki takich demonstracji jak Elemental, Effects CaveReflection Subway oraz innych. Do działania wymagają 64-bitowej dystrybucji Linuksa

Na stronie internetowej wiki.unrealengine.com znajdziecie również wszelkie informacje o procesie kompilacji silnika pod system operacyjny Linux.

Aktualizacja

Dla tych co nie mogą lub nie mają jak - tak to działa:

Jakiś czas temu stałem się posiadaczem karty AVerMedia Live Gamer HD Lite do przechwytywania sygnału HDMI w rozdzielczości FullHD z prędkością 30fps. Głównie mam ją zamiar wykorzystywać do nagrywania materiałów z mini komputerów z układami SoC (Odroid/Marsboard/Cubieboard itp.), gdzie nagrywanie obrazu bezpośrednio z uruchomionego systemu jest praktycznie niemożliwe.

Na upartego problem mnie nie dotyczył, ponieważ zawsze mogę przełączyć się na Windowsa i tam nagrać materiał bezpośrednio z karty graficznej czy dowolnego urządzenia, ale problem pojawił się, gdy chciałem przechwycić w miarę płynny film z pulpitu Linuksa pod większym obciążeniem. Dodatkowo, każdy kto próbował nagrać rozgrywkę gry wykorzystującej OpenGL i tryb pełnoekranowy wie, że to droga przez mękę, która w większości przypadków kończy się niepowodzeniem lub fatalną ilością klatek na sekundę. Gdyby AVerMedia Live Gamer HD / Lite był obsługiwany pod Linuksem, nie było by w ogóle tematu, a tak trzeba sobie jakoś radzić na około. Z pomocą przychodzi nam wirtualizacja.

Wymagania

Do tej sztuczki będzie nam potrzebny procesor z obsługą AMD-VI/VT-D oraz jądro 2.15 z włączoną obsługą IOMMU / KVM oraz nałożoną łatką acs override. Oczywiście nie obejdzie się bez 64-bitowego Windowsa 7 lub 8 i QEMU 2.0. Jeśli macie pecha tak jak ja i posiadacie na płycie głównej kontroler SATA Marvel 88SE91xx to napotkacie problem z dostępem DMA przy włączonej opcji iommu.

  1. ata8: SATA max UDMA/133 abar m2048@0xfa310000 port 0xfa310180 irq 48
  2. ata8: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
  3. ata8.00: qc timeout (cmd 0xec)
  4. ata8.00: failed to IDENTIFY (I/O error, err_mask=0x4)
  5. ata8: SATA link up 6.0 Gbps (SStatus 133 SControl 300)

Problem można rozwiązać wyłączając ten kontroler w BIOS-ie (jeśli z niego nie korzystacie, ja niestety mam podłączony pod niego trzeci dysk twardy) lub nakładając łatki dma-alias-v4. Dlaczego o tym wspominam? Po pierwsze, możesz posiadać taki kontroler na swojej płycie. Po drugie, problem ten może pojawić się z innymi specyficznymi urządzeniami. Zalecam zatem sprawdzić na początek działanie iommu tylko z nałożoną łatką acs override. Osobiście nie doświadczyłem negatywnych skutków działania tej łaty na innych systemach, nawet kiedy nie jest potrzebna.

Uruchomienie jądra z obsługą IOMMU i ACS

Do parametrów tak skompilowanego jądra dołączamy następujące opcje:

intel_iommu=on pci-stub.ids=1af2:a001 pcie_acs_override=downstream

Jeśli posiadasz procesor AMD to intel_iommu zamieniamy na amd_iomu. Użyty identyfikator 1af2:a001 to VendorID oraz ProductID naszej karty. Zweryfikować to można za pomocą polecenia lspci:

  1. # lspci
  2. 02:00.0 Unassigned class [ff00]: Device 1af2:a001

W ten sposób "odłączamy" ją z systemu hosta. Sprawdźmy zatem, czy po ponownym uruchomieniu wszystko jest jak należy:

  1. dmesg | grep dmar
  2. [    0.049835] dmar: Host address width 36
  3. [    0.049839] dmar: DRHD base: 0x000000fed91000 flags: 0x1
  4. [    0.049848] dmar: IOMMU 0: reg_base_addr fed91000 ver 1:0 cap c9008020660262 ecap f0105a
  5. [    0.049851] dmar: RMRR base: 0x000000bf4cc000 end: 0x000000bf4eefff
  1. # dmesg | grep -i iommu
  2. [    0.000000] Warning: PCIe ACS overrides enabled; This may allow non-IOMMU protected peer-to-peer DMA
  3. [    0.000000] Intel-IOMMU: enabled
  4. [    0.049848] dmar: IOMMU 0: reg_base_addr fed91000 ver 1:0 cap c9008020660262 ecap f0105a
  5. [    0.049921] IOAPIC id 0 under DRHD base  0xfed91000 IOMMU 0
  6. [    0.243132] IOMMU 0 0xfed91000: using Queued invalidation
  7. [    0.243135] IOMMU: Setting RMRR:
  8. [    0.243144] IOMMU: Setting identity map for device 0000:00:1a.0 [0xbf4cc000 - 0xbf4eefff]
  9. [    0.243163] IOMMU: Setting identity map for device 0000:00:1d.0 [0xbf4cc000 - 0xbf4eefff]
  10. [    0.243173] IOMMU: Prepare 0-16MiB unity mapping for LPC
  11. [    0.243180] IOMMU: Setting identity map for device 0000:00:1f.0 [0x0 - 0xffffff]
  1. # dmesg | grep pci-stub
  2. [   14.574603] pci-stub: add 1AF2:A001 sub=FFFFFFFF:FFFFFFFF cls=00000000/00000000
  3. [   14.574615] pci-stub 0000:02:00.0: claimed by stub

Podłączenie karty AVerMedia Live Gamer HD

Istnieje kilka sposobów podłączenia tej karty. Zalecana metoda to połączenie karty graficznej kablem HDMI do wejścia Input, a monitora do wyjścia Output.

Ja podłączyłem monitor bezpośrednio do karty graficznej kablem DVI, a na obu systemach ustawiłem tryb pracy klonowania. W ten sposób mam ten sam obraz na obu wyjściach, pozostawiając wciąż wolne HDMI w monitorze.

Bindowanie karty do vfio-pci

W następnej kolejności musimy przypisać naszą kartę do vfio-pci. Dla ułatwienia możemy posłużyć się skryptem avermedia.sh

  1. #!/bin/bash
  2.  
  3. modprobe vfio-pci
  4.  
  5. dev=0000:02:00.0
  6. vendor=$(cat /sys/bus/pci/devices/$dev/vendor)
  7. device=$(cat /sys/bus/pci/devices/$dev/device)
  8.  
  9. if [ -e /sys/bus/pci/devices/$dev/driver ]; then
  10.     echo $dev > /sys/bus/pci/devices/$dev/driver/unbind
  11. fi
  12.  
  13. echo $vendor $device > /sys/bus/pci/drivers/vfio-pci/new_id

Zwróć uwagę na zmienną dev zawierającą ciąg 0000:02:00.0  - powinna zwierać identyfikator Twojej szyny PCI do której wpięta jest karta AVerMedia (sprawdzaliśmy to poleceniem lspci)

Uruchamiamy powyższy skrypt:

  1. # chmod 755 +x avermedia.sh
  2. # avermedia.sh

Dla ułatwienia, możemy dodać ten skrypt do rc.local, aby wykonywał się automatycznie przy starcie systemu.

Uruchomienie QEMU

Zakładam, że nie masz jeszcze zainstalowanego Windowsa, więc tworzymy sobie na początek 20GB dysk twardy,

  1. # dd if=/dev/zero of=windows.img bs=1M seek=20000 count=0

Następnie instalujemy Widnowsa:

  1. #qemu-system-x86_64
  2.     -enable-kvm
  3.     -M q35
  4.     -m 2048
  5.     -cpu host
  6.     -smp 2,sockets=1,cores=2,threads=1
  7.     -bios /usr/share/qemu/bios.bin
  8.     -device ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1
  9.     -device vfio-pci,host=02:00.0,bus=root.1,addr=00.0,multifunction=on
  10.     -drive file=windows.img,id=disk,format=raw
  11.     -device ide-hd,bus=ide.0,drive=disk
  12.     -drive file=cdwin.iso,id=isocd
  13.     -device ide-cd,bus=ide.1,drive=isocd
  14.     -display sdl -sdl

Dobór parametrów pamięci, ilość dostępnych rdzeni i wątków procesora pozostawiam Wam, ponieważ jest to kwestia indywidualna, zależna od procesora i ilości pamięci RAM jaką posiadamy. Tutaj ponownie sprawdźcie, czy parametr -device vfio-pci,host posiada odpowiedni identyfikator szyny PCI hosta.

Uruchomienie i instalacja sterowników

Po uruchomieniu systemu zobaczymy w menadzerze urządzeń naszą kartę:

Po zainstalowaniu sterowników ze strony producenta, urządzenie powinno być w pełni widoczne:

Teraz nie pozostaje nam już nic innego, jak rozpocząć nagrywanie:

Przykład nagrywania rozgrywki z Anomaly Defenders