Обзор ODROID-N2 + с Ubuntu 21.10 с использованием Wayland и Panfrost

В июле 2020 года был запущен ODROID-N2 +, но мы только недавно получили Amlogic S922X Rev C SBC, и Hardkernel хочет, чтобы мы протестировали их последний образ Ubuntu 21.10 с драйвером графического процессора Panfrost с открытым исходным кодом.

Распаковка комплекта ODROID-N2 +

Начнем с проверки комплекта, который мы получили от корейского производителя SBC.

В комплект поставки входит одноплатный компьютер ODROID-N2 +, оснащенный флэш-модулем eMMC емкостью 32 ГБ, блоком питания 12 В/2 А с адаптером для вилки европейского стандарта, комплектом вентилятора 80 мм и считывателем USB 3.0 для eMMC.

ODROID-N2 + теперь доступен только с 4 ГБ ОЗУ, так как старый ODROID-N2 с 2 ГБ устарел, и мы получаем четыре порта USB 3.0, видеовыход HDMI 2.0, сеть Gigabit Ethernet и 40-контактный разъем GPIO с охлаждающим плату радиатором большего размера, прикрепленным к нижней части платы.

Установка вентилятора, первая загрузка и системная информация

Как мы увидим ниже, вентилятор не всегда необходим, но поскольку он у нас есть, мы установили его поверх радиатора, используя 4 из 5 имеющихся прокладок.

Мы немного приподнимаем плату, чтобы обеспечить лучший воздушный поток для сверхтихого радиатора, который поставлялся с платой. Поскольку Ubuntu 21.10 предустановлен на флэш-памяти eMMC, поставляемой с платой, мы смогли просто подключить Ethernet, HDMI, USB-клавиатуру и мышь, жесткий диск USB 3.0 и источник питания 12 В/2 А, чтобы начать работу.

Плата большую часть времени полностью бесшумна, поскольку радиатор запускается только в том случае, если температура поднимается выше 65° C, а когда он запускался под нагрузкой, мы не слышали его, и даже проверяли действительно ли вентилятор крутится. Вернемся к первой загрузке.

Как видите, мы до сих пор не сменили  наш сломанный тестовый телевизор 

Плата работает нормально, а вертикальные линии только из-за нашего сломанного телевизора LG. В приглашении журнала отображается пользователь Hardkernel, и мы можем войти в систему с паролем odroid, но когда мы будем использовать SSH позже, мы обнаружим, что нам нужно использовать odroid/odroid, поскольку Hardkernel — это просто имя для пользователя odroid….

Давайте проверим некоторую системную информацию:

odroid@ubuntu:~$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=21.10
DISTRIB_CODENAME=impish
DISTRIB_DESCRIPTION="Ubuntu 21.10"
odroid@ubuntu:~$ uname -a
Linux ubuntu 5.14.0-odroid-arm64 #1 SMP PREEMPT Ubuntu 5.14.13-202110221853~impish (2021-10-22) aarch64 aarch64 aarch64 GNU/Linux
odroid@ubuntu:~$ free -mh
               total        used        free      shared  buff/cache   available
Mem:           3.6Gi       628Mi       2.3Gi       137Mi       668Mi       2.8Gi
Swap:          1.3Gi          0B       1.3Gi
odroid@ubuntu:~$ df -mh
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           370M  1.7M  369M   1% /run
/dev/mmcblk0p2   29G  5.6G   22G  21% /
tmpfs           1.9G     0  1.9G   0% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
/dev/mmcblk0p1  220M   37M  166M  19% /boot
tmpfs           370M   88K  370M   1% /run/user/1000
/dev/sda2       241G   85G  144G  38% /media/odroid/USB3_EXT4
/dev/sda1       245G  194G   51G  80% /media/odroid/USB3_NTFS
/dev/sda4       200G  175G   24G  89% /media/odroid/USB3_BTRFS
/dev/sda3       245G  163G   82G  67% /media/odroid/USB3_EXFAT
odroid@ubuntu:~$ 

Ubuntu 21.10, как и ожидалось, устанавливается на флэш-память eMMC емкостью 32 ГБ (29 ГБ rootfs), а система поставляется с 4 ГБ оперативной памяти, 3,6 ГБ из которых доступны для Linux.

Мы можем получить более подробную информацию о inxi, включая подтверждение использование драйвера графического процессора с открытым исходным кодом Panfrost в образе Ubuntu 21.10:

odroid@ubuntu:~$ inxi -Fc0
System:    Host: ubuntu Kernel: 5.14.0-odroid-arm64 aarch64 bits: 64 Console: tty pts/1 Distro: Ubuntu 21.10 (Impish Indri) 
Machine:   Type: ARM Device System: Hardkernel ODROID-N2Plus details: N/A 
CPU:       Info: 6-Core (2-Die) model: N/A variant-1: cortex-a73 variant-2: cortex-a53 bits: 64 type: MCP MCM 
           Speed: 2208 MHz min/max: 1000/2016:2400 MHz Core speeds (MHz): 1: 2016 2: 2016 3: 2208 4: 2208 5: 2208 6: 2208 
Graphics:  Device-1: meson-g12a-vpu driver: meson_drm v: kernel 
           Device-2: meson-g12a-mali driver: panfrost v: kernel 
           Device-3: meson-g12a-dw-hdmi driver: meson_dw_hdmi v: kernel 
           Display: server: X.org 1.20.13 driver: loaded: meson_dw_hdmi note: n/a (using device driver) tty: 203x55 
           Message: Advanced graphics data unavailable in console. Try -G --display 
Audio:     Device-1: meson-g12a-dw-hdmi driver: meson_dw_hdmi 
           Device-2: axg-sound-card driver: axg_sound_card 
           Sound Server-1: ALSA v: k5.14.0-odroid-arm64 running: yes 
           Sound Server-2: PulseAudio v: 15.0 running: yes 
           Sound Server-3: PipeWire v: 0.3.32 running: yes 
Network:   Device-1: meson-g12a-dwmac driver: meson8b_dwmac 
           IF: eth0 state: up speed: 1000 Mbps duplex: full mac: 00:1e:06:42:cb:88 
Drives:    Local Storage: total: 960.63 GiB used: 620.82 GiB (64.6%) 
           ID-1: /dev/mmcblk0 vendor: Samsung model: BJTD4R size: 29.12 GiB 
           ID-2: /dev/sda type: USB vendor: Seagate model: 1 Expansion size: 931.51 GiB 
Partition: ID-1: / size: 28.3 GiB used: 5.57 GiB (19.7%) fs: ext4 dev: /dev/mmcblk0p2 
           ID-2: /boot size: 219.4 MiB used: 36.7 MiB (16.7%) fs: ext4 dev: /dev/mmcblk0p1 
Swap:      ID-1: swap-1 type: file size: 1.34 GiB used: 0 KiB (0.0%) file: /swapfile 
Sensors:   System Temperatures: cpu: 42.6 C mobo: N/A 
           Fan Speeds (RPM): N/A 
Info:      Processes: 256 Uptime: 9m Memory: 3.61 GiB used: 859 MiB (23.2%) Init: systemd runlevel: 5 Shell: Bash inxi: 3.3.06 

Аудио часть также интересна новым аудио/видео сервером PipeWire, работающим вместе с более традиционными ALSA и PulseAudio.

Контрольные показатели

Давайте проведем на плате несколько тестов без монитора и графики.

Начнем с SBC Bench:

$ wget https://raw.githubusercontent.com/ThomasKaiser/sbc-bench/master/sbc-bench.sh
$ sudo /bin/bash ./sbc-bench.sh -c
WARNING: this tool is meant to run only on Debian Stretch, Buster, Bullseye or Ubuntu Bionic, Focal.
When running on other distros results are partially meaningless or can't be collected.
Press [ctrl]-[c] to stop or [enter] to continue.
 
 
sbc-bench v0.8.1
 
Installing needed tools. This may take some time... Done.
Checking cpufreq OPP... Done.
Executing tinymembench. This will take a long time... Done.
Executing OpenSSL benchmark. This will take 3 minutes... Done.
Executing 7-zip benchmark. This will take a long time... Done.
Checking cpufreq OPP... Done.
 
Memory performance (big.LITTLE cores measured individually):
memcpy: 2256.6 MB/s (0.9%)
memset: 7755.6 MB/s 
memcpy: 4299.9 MB/s 
memset: 7477.0 MB/s 
 
7-zip total scores (3 consecutive runs): 9800,9774,9802
 
OpenSSL results (big.LITTLE cores measured individually):
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes
aes-128-cbc     176082.23k   523975.23k  1013665.45k  1359812.61k  1510255.27k  1520052.91k
aes-128-cbc     421729.18k  1043425.51k  1584737.54k  1810880.17k  1904719.19k  1911783.42k
aes-192-cbc     167821.18k   465602.20k   827600.55k  1048505.69k  1136981.33k  1142565.55k
aes-192-cbc     391623.20k   926669.76k  1324086.87k  1521390.93k  1589032.28k  1593972.05k
aes-256-cbc     162742.46k   427874.47k   717046.87k   877222.91k   938270.72k   942221.99k
aes-256-cbc     378114.54k   847673.83k  1187437.06k  1313454.42k  1363293.53k  1366933.50k
 
Full results uploaded to http://ix.io/3DtN. Please check the log for anomalies (e.g. swapping
or throttling happenend) and otherwise share this URL.

Дросселирования не было обнаружено, и мы не могли слышать вентилятор, но, исходя из заявленных температур, он сработал:

System health while running 7-zip multi core benchmark:
 
Time       big.LITTLE   load %cpu %sys %usr %nice %io %irq   Temp
22:26:18: 2400/2016MHz  4.98   9%   0%   8%   0%   0%   0%  48.8°C
22:26:42: 2400/2016MHz  4.97  90%   0%  89%   0%   0%   0%  64.2°C
22:27:02: 2400/2016MHz  4.99  81%   0%  80%   0%   0%   0%  58.2°C
22:27:22: 2400/2016MHz  4.89  91%   0%  90%   0%   0%   0%  60.2°C
22:27:45: 2400/2016MHz  5.34  91%   0%  90%   0%   0%   0%  65.8°C
22:28:05: 2400/2016MHz  5.16  80%   0%  79%   0%   0%   0%  60.1°C
22:28:25: 2400/2016MHz  5.34  89%   0%  87%   0%   0%   0%  58.6°C
22:28:49: 2400/2016MHz  5.67  91%   0%  90%   0%   0%   0%  65.4°C
22:29:09: 2400/2016MHz  5.56  81%   0%  80%   0%   0%   0%  58.9°C

Несмотря на то, что он не такой громкий, вентилятор нашего ноутбука подавлял шум от вентилятора ODROID-N2 +, поэтому его почти не было слышно. Обратите внимание, что вентилятор запускался только во время более требовательного многопоточного теста 7-zip и большую часть времени не активировался. Тест проводился в помещении с температурой окружающей среды 28 ° C.

Для справки, ODROID-N2 + по-прежнему значительно быстрее, чем Raspberry Pi 4, разогнанный до 2,0 ГГц.

Поскольку поддержка Panfrost является одной из изюминок образа Ubuntu 21.10 для ODROID-N2 +, давайте еще раз проверим, что необходимо включить с помощью glxinfo:

Extended renderer info (GLX_MESA_query_renderer):
    Vendor: Panfrost (0xffffffff)
    Device: Mali-G52 (Panfrost) (0xffffffff)
    Version: 21.3.0
    Accelerated: yes
    Video memory: 3698MB
    Unified memory: yes
    Preferred profile: core (0x1)
    Max core profile version: 3.1
    Max compat profile version: 3.1
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.1
OpenGL vendor string: Panfrost
OpenGL renderer string: Mali-G52 (Panfrost)
OpenGL core profile version string: 3.1 Mesa 21.3.0-devel (git-4e7a777093)
OpenGL core profile shading language version string: 1.40
OpenGL core profile context flags: (none)

Тот Panfrost с веткой разработки Mesa 21.3. Вывод от glxinfo довольно длинный, поэтому мы включили его в pastebin .

Теперь время для обычных тестов es2gears и glmark2-es2.

es2gears может легко работать со скоростью 60 кадров в секунду в полноэкранном режиме

glmark2-es2-wayland также отлично работает с драйвером с открытым исходным кодом Panfrost.

Это результат экранного теста:

$ glmark2-es2-wayland 
=======================================================
    glmark2 2021.02
=======================================================
    OpenGL Information
    GL_VENDOR:     Panfrost
    GL_RENDERER:   Mali-G52 (Panfrost)
    GL_VERSION:    OpenGL ES 3.1 Mesa 21.3.0-devel (git-4e7a777093)
=======================================================
[build] use-vbo=false: FPS: 687 FrameTime: 1.456 ms
[build] use-vbo=true: FPS: 1242 FrameTime: 0.805 ms
[texture] texture-filter=nearest: FPS: 1460 FrameTime: 0.685 ms
[texture] texture-filter=linear: FPS: 1422 FrameTime: 0.703 ms
[texture] texture-filter=mipmap: FPS: 1551 FrameTime: 0.645 ms
[shading] shading=gouraud: FPS: 867 FrameTime: 1.153 ms
[shading] shading=blinn-phong-inf: FPS: 881 FrameTime: 1.135 ms
[shading] shading=phong: FPS: 736 FrameTime: 1.359 ms
[shading] shading=cel: FPS: 743 FrameTime: 1.346 ms
[bump] bump-render=high-poly: FPS: 402 FrameTime: 2.488 ms
[bump] bump-render=normals: FPS: 2033 FrameTime: 0.492 ms
[bump] bump-render=height: FPS: 1879 FrameTime: 0.532 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 930 FrameTime: 1.075 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 363 FrameTime: 2.755 ms
[pulsar] light=false:quads=5:texture=false: FPS: 1794 FrameTime: 0.557 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 274 FrameTime: 3.650 ms
[desktop] effect=shadow:windows=4: FPS: 597 FrameTime: 1.675 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 216 FrameTime: 4.630 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 83 FrameTime: 12.048 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 261 FrameTime: 3.831 ms
[ideas] speed=duration: FPS: 487 FrameTime: 2.053 ms
[jellyfish] <default>: FPS: 767 FrameTime: 1.304 ms
[terrain] <default>: FPS: 36 FrameTime: 27.778 ms
[shadow] <default>: FPS: 227 FrameTime: 4.405 ms
[refract] <default>: FPS: 71 FrameTime: 14.085 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 1454 FrameTime: 0.688 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 1544 FrameTime: 0.648 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 1537 FrameTime: 0.651 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 1519 FrameTime: 0.658 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 1201 FrameTime: 0.833 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1098 FrameTime: 0.911 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 2077 FrameTime: 0.481 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 1876 FrameTime: 0.533 ms
=======================================================
                                  glmark2 Score: 979 
=======================================================


Рейтинг glmark2 — 979 баллов. Несколько лет назад мы писали о том же тесте с ODROID-N2 под управлением Ubuntu 18.04 + Gnome3 + Linux 5.0 поверх Wayland с драйверами графического процессора от Arm. Результат — 1119 баллов. Это было два года назад, должно быть, многое изменилось, но похоже, что драйвер с открытым исходным кодом может быть немного медленнее, чем драйвер с закрытым исходным кодом. Мы также видим, что Panfrost использует OpenGL ES 3.1, а драйвер Arm использует OpenGL ES 3.2.

Мы также пробовали тестировать в закадровом режиме:

glmark2-es2-wayland --off-screen
=======================================================
    glmark2 2021.02
=======================================================
    OpenGL Information
    GL_VENDOR:     Panfrost
    GL_RENDERER:   Mali-G52 (Panfrost)
    GL_VERSION:    OpenGL ES 3.1 Mesa 21.3.0-devel (git-4e7a777093)
=======================================================
[build] use-vbo=false: FPS: 532 FrameTime: 1.880 ms
[build] use-vbo=true: FPS: 787 FrameTime: 1.271 ms
[texture] texture-filter=nearest: FPS: 822 FrameTime: 1.217 ms
[texture] texture-filter=linear: FPS: 834 FrameTime: 1.199 ms
[texture] texture-filter=mipmap: FPS: 856 FrameTime: 1.168 ms
[shading] shading=gouraud: FPS: 635 FrameTime: 1.575 ms
[shading] shading=blinn-phong-inf: FPS: 610 FrameTime: 1.639 ms
[shading] shading=phong: FPS: 581 FrameTime: 1.721 ms
[shading] shading=cel: FPS: 581 FrameTime: 1.721 ms
[bump] bump-render=high-poly: FPS: 343 FrameTime: 2.915 ms
[bump] bump-render=normals: FPS: 937 FrameTime: 1.067 ms
[bump] bump-render=height: FPS: 879 FrameTime: 1.138 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 931 FrameTime: 1.074 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 393 FrameTime: 2.545 ms
[pulsar] light=false:quads=5:texture=false: FPS: 887 FrameTime: 1.127 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 312 FrameTime: 3.205 ms
[desktop] effect=shadow:windows=4: FPS: 711 FrameTime: 1.406 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 226 FrameTime: 4.425 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 84 FrameTime: 11.905 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 267 FrameTime: 3.745 ms
[ideas] speed=duration: FPS: 314 FrameTime: 3.185 ms
[jellyfish] <default>: FPS: 584 FrameTime: 1.712 ms
[terrain] <default>: FPS: 39 FrameTime: 25.641 ms
[shadow] <default>: FPS: 197 FrameTime: 5.076 ms
[refract] <default>: FPS: 66 FrameTime: 15.152 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 861 FrameTime: 1.161 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 858 FrameTime: 1.166 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 837 FrameTime: 1.195 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 854 FrameTime: 1.171 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 801 FrameTime: 1.248 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 817 FrameTime: 1.224 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 846 FrameTime: 1.182 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 842 FrameTime: 1.188 ms
=======================================================
                                  glmark2 Score: 609 
=======================================================

Оценка ниже, что не имеет для нас никакого смысла.

Пользовательский опыт с ODROID-N2 +

Мы протестировали некоторые из поддерживаемых функций Ubuntu 21.10 на плате, чтобы увидеть, насколько хорошо она будет работать как настольный компьютер:

  • Многозадачность — последовательно запускаем Firefox, Thunderbird, LibreOffice Writer и GIMP из холодной загрузки.
  • Просмотр веб-страниц с помощью Firefox и Chromium — открытие нескольких вкладок, Youtube 1080p, 1440p и 2160p (4K), демонстрация WebGL: Aquarium
  • Игры с SuperTuxKart и эмулятором Dolphin

Вы можете посмотреть видео ниже.

Таким образом, ODROID-N2 + быстр для платформы Arm. Для идеально плавного воспроизведения видео на YouTube лучше использовать сейчас 720p. Firefox использует декодирование видео H.264 с ограничением до 1080p, в то время как Chromium поддерживает до 4K с использованием VP9, ​​но его нельзя смотреть. Демонстрация аквариума WebGL отображается со скоростью 16-17 кадров в секунду в Firefox с 500 рыбками, но только 3 кадра в секунду в Chromium, вероятно, из-за того, что ускорение графического процессора не поддерживается/не включено. SuperTuxKart в полноэкранном режиме работает нормально, но не так плавно, как хотелось бы. Мы попробовали Super Mario Sunshine на эмуляторе Dolphin, и все работало очень хорошо.

У нас была проблема с белым текстом на белом фоне в эмуляторе Dolphin, и обходным путем было переключиться на темную тему в настройках внешнего вида Ubuntu.

Настройки Dolphin до (слева) и после (справа) переключения на темную тему в настройках Ubuntu

Мы также хотели воспроизвести видео 4K с помощью других программ и утилит командной строки, но нам не удалось установить Kodi:

$ sudo add-apt-repository ppa:team-xbmc/ppa
$ sudo apt install kodi
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
 
The following packages have unmet dependencies:
 kodi : Depends: kodi-bin (< 6:19.3+git20211024.1941-49a04cd6a7-0~impish.1~) but it is not installable
        Recommends: i965-va-driver but it is not installable
        Recommends: kodi-peripheral-joystick but it is not installable
        Recommends: kodi-inputstream-adaptive but it is not installable
        Recommends: kodi-inputstream-rtmp but it is not installable
E: Unable to correct problems, you have held broken packages.

VLC просто показывал черный экран с нормальным воспроизведением звука, а инструменты командной строки, перечисленные в Wiki, а именно kplayer и c2play, не были установлены, и нам не удалось собрать последний из исходников. Мы задали вопрос Hardkernel, но до сих пор не получили ответ, и мы обновим сообщение, если появится решение. Мы видим, что на странице загрузки все еще нет Ubuntu 21.10 для загрузки, поэтому это может означать, что над образом все еще работают. В любом случае, это огромный шаг к тому, когда драйвер графического процессора Arm Mali с открытым исходным кодом можно использовать в современных процессорах.

Выражаем свою благодарность источнику из которого взята и переведена статья, сайту cnx-software.com.

Оригинал статьи вы можете прочитать здесь.

5 1 vote
Article Rating
Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 Комментарий
Oldest
Newest Most Voted
Inline Feedbacks
View all comments