У нас был образец одноплатного компьютера Khadas Edge2 с восьмиядерным процессором Rockchip RK3588S Cortex-A76/A55 в течение нескольких недель, и теперь, когда плата официально выпущена, мы можем опубликовать наш обзор платы с Ubuntu 22.04, и позже мы проверим Android 12.
Аксессуары Khadas Edge2 Pro
Khadas Edge2 поставляется в двух вариантах: Basic и Pro, мы получили Edge2 Pro SBC с 16 ГБ оперативной памяти и 64 ГБ флэш-памяти, который по умолчанию поставляется с двумя антеннами Wi-Fi, но компания также отправила низкопрофильный вентилятор и термопасту для охлаждения, которые теоретически необязательны, но на практике это необходимо, поскольку, хотя плата не сильно нагревается во время работы, учитывая производительность, которую она обеспечивает, ей все равно нужно охлаждение для предотвращения перегрева и дросселирования. Однако, как мы увидим ниже, вентилятор на самом деле может и не понадобиться.
Мы бы порекомендовали установить антенны перед вентилятором. Антенные разъемы MHF4 крошечные, и мы считаем, что антенны очень трудно правильно вставить на плату. Они также могут легко отсоединяться, но, в итоге, мы повредили один из разъемов, как и в случае с Khadas VIM4 с точно такими же крошечными разъемами. SBC Khadas VIM1S имеет разъем u.FL большего размера, и гораздо проще установить единственную антенну, которая поставляется с платой. Нам бы хотелось, чтобы Khadas могли использовать их на всех своих платах, но место на печатной плате может быть проблемой.
Плата остается довольно тонкой даже после установки радиатора. Штангенциркулем измерил толщину около 11 мм.
Установка Ubuntu 22.04 с системой OOWOW
Давайте подключим плату к разъему HDMI и клавиатуре, а затем – к адаптеру USB PD для питания. Если вам не нравится возиться с картами MicroSD и/или USB-кабелями вместе с Windows или инструментами командной строки, вам понравятся платы Khadas, поскольку теперь они поставляются с системой OOWOW, которая позволяет пользователю загружать и прошивать свои/выбранный им образы ОС с простым в использовании интерфейсом.
При первой загрузке нас встречает мастер OOWOW, чтобы настроить WiFi, а затем выбрать образ операционной системы.
На момент тестирования были доступны Android 11, Android 12, Ubuntu 22.04 Desktop и Ubuntu 22.04 Server. Мы выбрали образ рабочего стола Ubuntu 22.04 (Gnome), и через пару минут нас приветствовало приглашение для входа в систему.
Пароль по умолчанию для пользователя Khadas — просто «khadas». Нас не просят изменить имя пользователя или пароль при первом входе в систему, поэтому это может быть что-то, что необходимо реализовать позже, чтобы соответствовать некоторым новым правилам, если мы правильно помним, openssh-сервер включен по умолчанию. На данный момент мы можем просто изменить пароль вручную.
Информация о системе Ubuntu 22.04 на Khadas Edge2
Давайте проверим некоторую системную информацию, начиная с журнала ядра, полученного с помощью dmesg.
После подключения к нашему WiFi-маршрутизатору мы обновили систему и перезагрузили ее. Подробнее:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
khadas@Khadas:~$ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=22.04 DISTRIB_CODENAME=jammy DISTRIB_DESCRIPTION="Ubuntu 22.04.1 LTS" khadas@Khadas:~$ uname -a Linux Khadas 5.10.66 #1.1.1 SMP Wed Sep 7 15:39:24 CST 2022 aarch64 aarch64 aarch64 GNU/Linux khadas@Khadas:~$ free -mh total used free shared buff/cache available Mem: 15Gi 524Mi 14Gi 33Mi 448Mi 14Gi Swap: 1.0Gi 0B 1.0Gi khadas@Khadas:~$ df -mh Filesystem Size Used Avail Use% Mounted on tmpfs 1.6G 11M 1.6G 1% /run /dev/mmcblk0p2 57G 3.4G 53G 7% / tmpfs 7.7G 0 7.7G 0% /dev/shm tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 7.7G 8.0K 7.7G 1% /tmp /dev/mmcblk0p1 217M 47M 161M 23% /boot tmpfs 1.6G 76K 1.6G 1% /run/user/117 tmpfs 1.6G 68K 1.6G 1% /run/user/1000 |
Он работает под управлением Ubuntu 22.04 на Linux 5.10.66, и у нас есть около 16 ГБ ОЗУ и 57 ГБ корневого раздела, как и ожидалось. Давайте установим и запустим inxi:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
khadas@Khadas:~$ sudo inxi -Fc0 System: Host: Khadas Kernel: 5.10.66 aarch64 bits: 64 Console: pty pts/1 Distro: Ubuntu 22.04.1 LTS (Jammy Jellyfish) Machine: Type: ARM System: Khadas Edge2 details: N/A serial: 8a6cc05fd8d15662 CPU: Info: 3x 4-core model: N/A variant-1: cortex-a76 variant-2: cortex-a55 bits: 64 type: MCP AMP cache: L2: 3x 512 KiB (1.5 MiB) Speed (MHz): avg: 2052 min/max: 408/1800:2304 cores: 1: 1800 2: 1800 3: 1800 4: 1800 5: 2304 6: 2304 7: 2304 8: 2304 Graphics: Device-1: display-subsystem driver: rockchip_drm v: N/A Device-2: mali-bifrost driver: mali v: N/A Device-3: rk3588-dw-hdmi driver: dwhdmi_rockchip v: N/A Display: server: X.org v: 1.21.1.3 with: Xwayland v: 22.1.1 driver: gpu: rockchip_drm,mali,dwhdmi_rockchip note: X driver n/a tty: 80x24 resolution: 1280x800 Message: GL data unavailable in console for root. Audio: Device-1: simple-audio-card driver: N/A Device-2: hdmi driver: rk_hdmi_sound Device-3: simple-audio-card driver: asoc_simple_card Device-4: rk3588-dw-hdmi driver: dwhdmi_rockchip Device-5: simple-audio-card driver: asoc_simple_card Device-6: simple-audio-card driver: asoc_simple_card Sound Server-1: ALSA v: k5.10.66 running: yes Sound Server-2: PulseAudio v: 15.99.1 running: yes Sound Server-3: PipeWire v: 0.3.48 running: yes Network: Device-1: Broadcom driver: pcieh Device-2: wlan-platdata driver: wlan_platdata IF-ID-1: wlan0 state: up mac: 70:f7:54:b9:4f:73 Bluetooth: Device-1: rk3588-uart driver: dw_apb_uart Report: hciconfig ID: hci0 state: up address: 70:F7:54:B9:4F:74 bt-v: 3.0 Drives: Local Storage: total: 58.24 GiB used: 3.41 GiB (5.9%) ID-1: /dev/mmcblk0 model: CJTD4R size: 58.24 GiB Partition: ID-1: / size: 56.45 GiB used: 3.36 GiB (6.0%) fs: ext4 dev: /dev/mmcblk0p2 ID-2: /boot size: 216.5 MiB used: 46.8 MiB (21.6%) fs: ext4 dev: /dev/mmcblk0p1 Swap: ID-1: swap-1 type: zram size: 256 MiB used: 0 KiB (0.0%) dev: /dev/zram1 ID-2: swap-2 type: zram size: 256 MiB used: 0 KiB (0.0%) dev: /dev/zram2 ID-3: swap-3 type: zram size: 256 MiB used: 0 KiB (0.0%) dev: /dev/zram3 ID-4: swap-4 type: zram size: 256 MiB used: 0 KiB (0.0%) dev: /dev/zram4 Sensors: System Temperatures: cpu: 47.2 C mobo: N/A Fan Speeds (RPM): N/A Info: Processes: 284 Uptime: 2m Memory: 15.34 GiB used: 679.1 MiB (4.3%) Init: systemd runlevel: 5 Shell: Sudo inxi: 3.3.13 |
Мы видим, что Cortex-A76 работает на частоте до 2304 МГц, а ядра Cortex-A55 — до 1800 МГц, но об этом подробнее. ZRAM также включен (хорошо!), хотя с 16 ГБ у нас много физической памяти.
Тесты Khadas Edge2 в Linux
Теперь мы можем запустить некоторые тесты Linux на плате Khadas Edge2, чтобы сравнить ее с ROCK 5B на базе Rockchip RK3588 , Raspberry Pi 4 и другими одноплатными компьютерами. Обратите внимание, что после перезагрузки процессор по умолчанию использует регулятор производительности.
1 2 3 4 5 6 7 8 9 |
khadas@Khadas:~$ cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor performance performance performance performance performance performance performance performance |
Мы начали с обычного sbc-bench.sh от Томаса Кайзера:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
khadas@Khadas:~$ sudo ./sbc-bench.sh Average load and/or CPU utilization too high (too much background activity). Waiting... Too busy for benchmarking: 13:02:47 up 4 min, 2 users, load average: 0.12, 0.10, 0.04, cpu: 2% Too busy for benchmarking: 13:02:52 up 4 min, 2 users, load average: 0.11, 0.10, 0.04, cpu: 0% Too busy for benchmarking: 13:02:57 up 4 min, 2 users, load average: 0.10, 0.10, 0.04, cpu: 0% Too busy for benchmarking: 13:03:02 up 4 min, 2 users, load average: 0.09, 0.10, 0.04, cpu: 0% sbc-bench v0.9.8 Installing needed tools: apt -f -qq -y install lshw, tinymembench, ramlat, mhz.. Done. Checking cpufreq OPP. Done (results will be available in 22-34 minutes). Executing tinymembench. Done. Executing RAM latency tester. Done. Executing OpenSSL benchmark. Done. Executing 7-zip benchmark. Done. Checking cpufreq OPP. Done (23 minutes elapsed). Memory performance (different CPU cores measured individually): memcpy: 6246.4 MB/s memset: 21830.2 MB/s memcpy: 10855.0 MB/s memset: 29113.6 MB/s (0.6%) memcpy: 10849.5 MB/s memset: 29040.2 MB/s 7-zip total scores (3 consecutive runs): 16458,16469,16488 OpenSSL results (different CPU cores measured individually): type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes aes-128-cbc 159159.98k 471394.54k 920594.26k 1219531.78k 1343911.25k 1354235.90k (Cortex-A55) aes-128-cbc 630376.10k 1255956.48k 1628019.54k 1746813.27k 1793103.19k 1797565.10k (Cortex-A76) aes-128-cbc 641552.95k 1274298.15k 1635059.46k 1751368.70k 1797278.38k 1802245.46k (Cortex-A76) aes-192-cbc 151839.98k 420351.79k 749525.76k 939204.95k 1013820.07k 1019740.16k (Cortex-A55) aes-192-cbc 593842.50k 1116928.60k 1384821.16k 1457585.49k 1498999.47k 1501959.51k (Cortex-A76) aes-192-cbc 599591.83k 1118869.76k 1385524.65k 1459217.75k 1499878.74k 1502866.09k (Cortex-A76) aes-256-cbc 147179.67k 386230.29k 647709.44k 784962.56k 835922.60k 840095.06k (Cortex-A55) aes-256-cbc 563814.41k 990876.86k 1197297.24k 1260580.86k 1284167.00k 1286427.99k (Cortex-A76) aes-256-cbc 571227.48k 994213.65k 1200338.09k 1261701.80k 1285199.19k 1287487.49k (Cortex-A76) Full results uploaded to http://ix.io/4a5U. |
Если мы посмотрим на полные результаты, то увидим, что измеренная частота для ядер Corex-A76 составляет 2257 МГц для одного двухъядерного кластера и 2259 для другого двухъядерного кластера, что примерно равно 2,25 ГГц, заявленным Khadas. Температура системы ни разу не превышала 61,9°C во время тестирования в помещении с температурой окружающей среды 28°C, так что решение для охлаждения идеально подходит, и троттлинга не произошло. Сначала мы подумали, что вентилятор никогда не использовался, но, приглядевшись, вентилятор действительно был активирован. Он просто близок к бесшумному.
SBC Khadas Edge2 имеет примерно такую же производительность, как Rock 5B , как и следовало ожидать, и довольно быстрее, чем Khadas VIM4 на базе процессора Amlogic A311D2 , более чем в два раза быстрее, чем Raspberry Pi 4. ODROID -N2+SBC на базе более старого процессора Amlogic S922X с тактовой частотой 2,4 ГГц находится в середине.
Давайте теперь переключимся на браузерный бенчмарк Speedometer 2.0 .
Мы используем небольшой 10,1-дюймовый дисплей с разрешением 1280×720, но перед тестированием мы установили его на 1920×1080 с дробным масштабированием 125%.
Чтобы убедиться, мы протестировали его еще раз, подключив к дисплею Full HD с разрешением 1920×1080 и без дробного масштабирования, и получили аналогичные результаты в 78,84 балла в Chromium и 53,14 в Firefox, так что разница невелика.
Плата Khadas Edge2 почти в четыре раза быстрее разогнанной Raspberry Pi 4 в этом конкретном тесте. Обратите внимание, что улучшения в Chromium и ускорение 3D-графики здесь также могут сыграть свою роль, но производительность, тем не менее, впечатляет. Как видно из других Arm SBC, Chromium работает намного лучше, чем Firefox со Speedometer 2.0.
Давайте запустим несколько тестов из Phoronix TestSuite, чтобы сравнить Khadas Edge2 с UP 4000 SBC с двухъядерным процессором Intel Celeron N3350 Apollo Lake с тактовой частотой 2,4 ГГц, а также с Jetson Nano и Raspberry Pi 4. Полные результаты вы найдете на Openbenchmarking. сайт .
Некоторые из тестов не удалось завершить:
1 2 3 4 5 6 7 8 9 10 11 12 |
LAME MP3 Encoding 3.100: pts/encode-mp3-1.7.4 [WAV To MP3] Test 9 of 15 Estimated Trial Run Count: 3 Estimated Test Run-Time: 3 Minutes Estimated Time To Completion: 35 Minutes [04:01 CDT] Started Run 1 @ 03:27:03 The test quit with a non-zero exit status. Started Run 2 @ 03:27:07 The test quit with a non-zero exit status. Started Run 3 @ 03:27:11 The test quit with a non-zero exit status. |
Но Khadas Edge2 Pro превосходил все остальные платформы во всех завершенных тестах, кроме SQLite. Поэтому мы ожидаем, что Rockchip RK3588S будет предлагать производительность, аналогичную некоторым системам Gemini Lake или даже Jasper Lake.
Обратите внимание, что Khadas Edge2 была единственной платформой, на которой регулятор был настроен на производительность:
1 2 3 4 5 |
UP 4000 2GB: Scaling Governor: intel_pstate powersave - CPU Microcode: 0x28 - Thermald 1.9.1 UPboard 2GB: Scaling Governor: intel_pstate powersave - CPU Microcode: 0x411 - Thermald 1.9.1 Jetson Nano 4GB: Scaling Governor: tegra-cpufreq schedutil RPi4 4GB: Scaling Governor: cpufreq-dt ondemand Khadas Edge2 Pro 16GB: Scaling Governor: cpufreq-dt performance |
Phoronix предоставляет готовый «тестовый опыт», и, следует отметить, что оценки других систем могли бы быть выше, если бы регулятор был настроен на производительность, в какой степени трудно сказать.
Ускорение 3D-графики в Ubuntu 22.04
Когда мы впервые протестировали поддержку 3D-графики, мы запустили glxinfo:
1 2 3 4 5 6 7 8 9 10 11 12 |
Extended renderer info (GLX_MESA_query_renderer): Vendor: Mesa/X.org (0xffffffff) Device: llvmpipe (LLVM 13.0.1, 128 bits) (0xffffffff) Version: 22.0.5 Accelerated: no Video memory: 15704MB Unified memory: no Preferred profile: core (0x1) Max core profile version: 4.5 Max compat profile version: 4.5 Max GLES1 profile version: 1.1 Max GLES[23] profile version: 3.2 |
Кажется, это указывает на то, что ускорение 3D-графики не включено, поскольку оно зависит от программного драйвера llvmpipe. Но эта команда действительна только для X11, а образ Ubuntu 22.04 Khadas вместо этого использует систему Wayland.
Поэтому вместо этого нам нужно использовать eglinfo, и мы видим, что используется драйвер графического процессора Mali:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
khadas@Khadas:~$ eglinfo EGL client extensions string: EGL_EXT_client_extensions EGL_EXT_platform_base EGL_KHR_client_get_all_proc_addresses EGL_KHR_platform_gbm EGL_KHR_platform_wayland EGL_EXT_platform_wayland GBM platform: arm_release_ver of this libmali is 'g6p0-01eac0', rk_so_ver is '6'. eglinfo: eglInitialize failed Wayland platform: EGL API version: 1.4 EGL vendor string: ARM EGL version string: 1.4 Valhall-"g6p0-01eac0" EGL client APIs: OpenGL_ES EGL extensions string: EGL_WL_bind_wayland_display EGL_NV_context_priority_realtime EGL_KHR_partial_update EGL_EXT_swap_buffers_with_damage EGL_KHR_swap_buffers_with_damage EGL_KHR_config_attribs EGL_KHR_image EGL_KHR_image_base EGL_KHR_fence_sync EGL_KHR_wait_sync EGL_KHR_gl_colorspace EGL_KHR_get_all_proc_addresses EGL_IMG_context_priority EGL_KHR_no_config_context EGL_EXT_image_dma_buf_import EGL_EXT_image_dma_buf_import_modifiers EGL_EXT_yuv_surface EGL_EXT_pixel_format_float EGL_ARM_pixmap_multisample_discard EGL_KHR_gl_texture_2D_image EGL_KHR_gl_renderbuffer_image EGL_KHR_create_context EGL_KHR_surfaceless_context EGL_KHR_gl_texture_cubemap_image EGL_EXT_image_gl_colorspace EGL_EXT_create_context_robustness Configurations: bf lv colorbuffer dp st ms vis cav bi renderable supported id sz l r g b a th cl ns b id eat nd gl es es2 vg surfaces --------------------------------------------------------------------- 0x01 32 0 8 8 8 8 0 0 0 0 0x00-- a y y win,pb 0x02 32 0 8 8 8 8 24 0 0 0 0x00-- a y y win,pb 0x03 32 0 8 8 8 8 24 8 0 0 0x00-- a y y win,pb 0x04 32 0 8 8 8 8 24 8 4 1 0x00-- a y y win,pb 0x05 16 0 5 6 5 0 0 0 0 0 0x00-- y y y win,pb 0x06 16 0 5 6 5 0 24 0 0 0 0x00-- y y y win,pb 0x07 16 0 5 6 5 0 24 8 0 0 0x00-- y y y win,pb 0x08 16 0 5 6 5 0 24 8 4 1 0x00-- y y y win,pb 0x09 24 0 8 8 8 0 0 0 0 0 0x00-- y y y win,pb 0x0a 24 0 8 8 8 0 24 8 0 0 0x00-- y y y win,pb 0x0b 24 0 8 8 8 0 0 0 4 1 0x00-- y y y win,pb 0x0c 24 0 8 8 8 0 24 8 4 1 0x00-- y y y win,pb 0x0d 16 0 5 5 5 1 24 8 0 0 0x00-- a y y win,pb 0x0e 16 0 5 5 5 1 24 8 4 1 0x00-- a y y win,pb 0x0f 16 0 4 4 4 4 24 8 0 0 0x00-- a y y win,pb 0x10 16 0 4 4 4 4 24 8 4 1 0x00-- a y y win,pb 0x11 32 0 8 8 8 8 24 8 8 1 0x00-- a y y win,pb 0x12 16 0 5 6 5 0 24 8 8 1 0x00-- y y y win,pb 0x13 24 0 8 8 8 0 24 8 8 1 0x00-- y y y win,pb 0x14 32 0 8 8 8 8 24 8 16 1 0x00-- a y y win,pb 0x15 16 0 5 6 5 0 24 8 16 1 0x00-- y y y win,pb 0x16 24 0 8 8 8 0 24 8 16 1 0x00-- y y y win,pb 0x17 24 0 8 8 8 0 0 0 0 0 0x00-- y y pb 0x18 64 0 16 16 16 16 24 8 0 0 0x00-- y y pb 0x19 32 0 10 10 10 2 24 8 0 0 0x00-- a y y pb 0x1a 24 0 8 8 8 0 0 0 0 0 0x00-- y y y win,pb |
В приведенном выше выводе есть ошибка, но мы можем подтвердить, что это работает, используя glmark2-es2-wayland с инструкциями от Khadas. Сначала нас просят установить регулятор GPU на производительность:
1 2 3 |
sudo sh -c 'echo performance > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor' sudo sh -c 'echo performance > /sys/devices/system/cpu/cpufreq/policy4/scaling_governor' sudo sh -c 'echo performance > /sys/devices/system/cpu/cpufreq/policy6/scaling_governor' |
Теперь мы можем установить программу и запустить программу:
1 2 |
sudo apt install glmark2-es2-wayland glmark2-es2-wayland |
Вот вывод glmark2-es2-wayland:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
khadas@Khadas:~$ glmark2-es2-wayland arm_release_ver of this libmali is 'g6p0-01eac0', rk_so_ver is '6'. arm_release_ver of this libmali is 'g6p0-01eac0', rk_so_ver is '6'. ======================================================= glmark2 2021.02 ======================================================= OpenGL Information GL_VENDOR: ARM GL_RENDERER: Mali-LODX GL_VERSION: OpenGL ES 3.2 v1.g6p0-01eac0.ba52c908d926792b8f5fe28f383a2b03 ======================================================= [build] use-vbo=false: FPS: 4355 FrameTime: 0.230 ms [build] use-vbo=true: FPS: 4991 FrameTime: 0.200 ms [texture] texture-filter=nearest: FPS: 5970 FrameTime: 0.168 ms [texture] texture-filter=linear: FPS: 5893 FrameTime: 0.170 ms [texture] texture-filter=mipmap: FPS: 5608 FrameTime: 0.178 ms [shading] shading=gouraud: FPS: 4256 FrameTime: 0.235 ms [shading] shading=blinn-phong-inf: FPS: 4327 FrameTime: 0.231 ms [shading] shading=phong: FPS: 4161 FrameTime: 0.240 ms [shading] shading=cel: FPS: 4104 FrameTime: 0.244 ms [bump] bump-render=high-poly: FPS: 2764 FrameTime: 0.362 ms [bump] bump-render=normals: FPS: 6402 FrameTime: 0.156 ms [bump] bump-render=height: FPS: 6343 FrameTime: 0.158 ms [effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 4992 FrameTime: 0.200 ms [effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 3499 FrameTime: 0.286 ms [pulsar] light=false:quads=5:texture=false: FPS: 5799 FrameTime: 0.172 ms [desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 1630 FrameTime: 0.613 ms [desktop] effect=shadow:windows=4: FPS: 4561 FrameTime: 0.219 ms [buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 556 FrameTime: 1.799 ms [buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 505 FrameTime: 1.980 ms [buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 856 FrameTime: 1.168 ms [ideas] speed=duration: FPS: 2402 FrameTime: 0.416 ms [jellyfish] <default>: FPS: 3955 FrameTime: 0.253 ms [terrain] <default>: FPS: 305 FrameTime: 3.279 ms [shadow] <default>: FPS: 3988 FrameTime: 0.251 ms [refract] <default>: FPS: 667 FrameTime: 1.499 ms [conditionals] fragment-steps=0:vertex-steps=0: FPS: 5024 FrameTime: 0.199 ms [conditionals] fragment-steps=5:vertex-steps=0: FPS: 4575 FrameTime: 0.219 ms [conditionals] fragment-steps=0:vertex-steps=5: FPS: 5055 FrameTime: 0.198 ms [function] fragment-complexity=low:fragment-steps=5: FPS: 4917 FrameTime: 0.203 ms [function] fragment-complexity=medium:fragment-steps=5: FPS: 4710 FrameTime: 0.212 ms [loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 4959 FrameTime: 0.202 ms [loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 5140 FrameTime: 0.195 ms [loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 4913 FrameTime: 0.204 ms ======================================================= glmark2 Score: 4005 ======================================================= |
Оценка 4005 весьма впечатляет и в четыре раза превышает оценку ODROID-N2+ (970 баллов), а плата Khadas Edge2 намного лучше даже после «оптимизации», когда плата ODROID-N2+ может получить 1244 балла.
Мы также можем играть в некоторые игры, используя эмулятор PPSSPP:
1 2 |
wget https://dl.khadas.com/.test/.test/ppsspp_1.12.3-1138-g36bc7a3e6~jammy_arm64.deb sudo dpkg -i ppsspp_1.12.3-1138-g36bc7a3e6~jammy_arm64.deb |
Просто введите PPSSPP, чтобы запустить эмулятор и установить несколько игр.
Игра, похожая на тетрис выше, работает со скоростью 60 кадров в секунду без проблем. Нам также сказали, что SuperTuxkart будет работать нормально, но он показывался только в четверти окне, и изменение настроек дисплея в игре не помогло.
Странно то, что на Khadas это работает, и непонятно, почему не работает у нас.
Также есть один конкретный случай использования, когда ускорение 3D-графики не работает: настройки с двумя дисплеями, когда один монитор подключен к HDMI, а другой — через порт USB-C. В этом случае система переключится на систему X11, а ускорение 3D-графики поддерживается только с Wayland.
Поддержка NPU Khadas Edge2
Еще одна хорошая новость заключается в том, что поддержка NPU работает при запуске с Python и C++ SDK. Пришлось использовать SDK и примеры из файла 7z , но сейчас код выложен на Github.
Сначала нам нужно установить зависимости и цепочку инструментов NPU для запуска примеров Python:
1 2 3 4 5 6 7 |
git clone https://github.com/rockchip-linux/rknpu2/ sudo cp rknpu2/runtime/RK3588/Linux/librknn_api/aarch64/librknnrt.so /usr/lib wget https://dl.khadas.com/.test/.test/edge2npu.7z 7z x edge2npu.7z cd edge2npu/Python sudo apt install -y python3-dev python3-pip python3-opencv python3-numpy pip3 install ./wheel/rknn_toolkit_lite2-1.3.0-cp310-cp310-linux_aarch64.whl |
Теперь мы можем попробовать такой образец, как resnet18:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
$ cd resnet18 $ python3 resnet18.py --> Load RKNN model done --> Init runtime environment I RKNN: [21:59:32.726] RKNN Runtime Information: librknnrt version: 1.4.0 (a10f100eb@2022-09-09T09:07:14) I RKNN: [21:59:32.726] RKNN Driver Information: version: 0.7.2 I RKNN: [21:59:32.726] RKNN Model Information: version: 1, toolkit version: 1.3.0-11912b58(compiler version: 1.3.0 (c193be371@2022-05-04T20:23:58)), target: RKNPU v2, target platform: rk3588, framework name: PyTorch, framework layout: NCHW done --> Running model resnet18 -----TOP 5----- [812]: 0.9996383190155029 [404]: 0.00028062646742910147 [657]: 1.632110434002243e-05 [833 895]: 1.015904672385659e-05 [833 895]: 1.015904672385659e-05 done |
Программа в основном загружает изображение «space_shuttle_224.jpg» и предварительно обученную модель и находит, что это космический шаттл или, может быть, просто космический корабль с вероятностью 99,96% по сравнению с другими предварительно обученными объектами.
Мы также можем попробовать демо-версию face_mask:
1 2 3 4 5 6 7 8 9 10 11 |
$ cd ../face_mask/ $ python3 face_mask.py --> Load RKNN model done --> Init runtime environment I RKNN: [22:04:42.138] RKNN Runtime Information: librknnrt version: 1.4.0 (a10f100eb@2022-09-09T09:07:14) I RKNN: [22:04:42.139] RKNN Driver Information: version: 0.7.2 I RKNN: [22:04:42.139] RKNN Model Information: version: 1, toolkit version: 1.3.0-11912b58(compiler version: 1.3.0 (c193be371@2022-05-04T20:23:58)), target: RKNPU v2, target platform: rk3588, framework name: TensorFlow, framework layout: NHWC done --> Running model done |
В выводе терминала нет ничего интересного, но программа Python сгенерирует изображение (out.jpg) с рамкой, показывающей, где находится/находятся маски для лица.
Мы заменили изображение в /data/img/face.jpg на толпу в масках, чтобы проверить результат:
Как вы можете видеть выше, полученный файл out.jpg не содержит никаких полей, что означает, что программа не обнаружила на фотографии никаких масок. Мы полагаем, нам нужно изменить несколько параметров в программе Python, чтобы они соответствовали изображению:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
INPUT_SIZE = 260 NUM_RESULTS = 1917 NUM_CLASSES = 91 Y_SCALE = 10.0 X_SCALE = 10.0 H_SCALE = 5.0 W_SCALE = 5.0 feature_map_sizes = [[33, 33], [17, 17], [9, 9], [5, 5], [3, 3]] anchor_sizes = [[0.04, 0.056], [0.08, 0.11], [0.16, 0.22], [0.32, 0.45], [0.64, 0.72]] anchor_ratios = [[1, 0.62, 0.42]] * 5 |
Мы просто не уверены, какие именно, и Khadas не смог вовремя ответить на возникшие у нас вопросы. Мы обновим этот раздел, если решение будет найдено.
Тестирование хранилища и тесты
Мы установили iozone3, чтобы сначала проверить производительность флэш-памяти eMMC емкостью 64 ГБ:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
$ iozone -e -I -a -s 1000M -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2 Iozone: Performance Test of File I/O Version $Revision: 3.489 $ Compiled for 64 bit mode. Build: linux Processor cache size set to 1024 kBytes. Processor cache line size set to 32 bytes. File stride size set to 17 * record size. random random bkwd record stride kB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 1024000 4 27232 32682 26385 26384 21000 31066 1024000 16 74798 86684 75798 75628 64568 84228 1024000 512 204519 210910 241968 241825 227516 208831 1024000 1024 212747 214321 269673 269612 256720 206418 1024000 16384 197618 203153 307716 308170 306382 200012 iozone test complete. |
У нас есть скорость последовательного чтения до 300 МБ/с, записи до 200 МБ/с и приличная производительность произвольного чтения/записи. Для сравнения, скорость флэш-памяти eMMC в Raspberry Pi CM4 ограничена 100 МБ/с.
Теперь давайте протестируем порт USB 3.0 Type-C (5 Гбит/с) с корпусом ORICO USB 3.2 Gen 1 , оснащенным твердотельным накопителем Apacer NVMe со скоростью чтения до 1800 МБ/с и записью до 1100 МБ/с и отформатированным с помощью EXT-4.
1 2 3 4 5 6 7 8 9 |
khadas@Khadas:/media/sda1$ iozone -e -I -a -s 1000M -r 16384k -i 0 -i 1 Processor cache size set to 1024 kBytes. Processor cache line size set to 32 bytes. File stride size set to 17 * record size. random random bkwd record stride kB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread 1024000 16384 397606 398500 342547 342983 iozone test complete. |
Мы повторили тест несколько раз, с теми же результатами. около 342 МБ/с при последовательном чтении и 398 МБ/с при записи. Мы полагаем, что это примерно то, что мы должны ожидать от порта USB 5 Гбит/с, хотя некоторые оптимизации могут увеличить скорость до 400 МБ/с.
Сеть (Wi-Fi и 2,5GbE)
Давайте проверим производительность WiFi 6, имея в виду, что у нас подключена только большая антенна:
- Загрузка
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ iperf3 -t 60 -c 192.168.31.48 -i 10 Connecting to host 192.168.31.48, port 5201 [ 5] local 192.168.31.197 port 43180 connected to 192.168.31.48 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-10.00 sec 543 MBytes 455 Mbits/sec 0 3.15 MBytes [ 5] 10.00-20.00 sec 539 MBytes 452 Mbits/sec 0 3.15 MBytes [ 5] 20.00-30.00 sec 540 MBytes 453 Mbits/sec 1 2.97 MBytes [ 5] 30.00-40.00 sec 488 MBytes 409 Mbits/sec 0 3.01 MBytes [ 5] 40.00-50.00 sec 489 MBytes 410 Mbits/sec 0 3.01 MBytes [ 5] 50.00-60.00 sec 576 MBytes 483 Mbits/sec 0 3.01 MBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-60.00 sec 3.10 GBytes 444 Mbits/sec 1 sender [ 5] 0.00-60.02 sec 3.10 GBytes 443 Mbits/sec receiver iperf Done. |
Скачивание
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
----------------------------------------------------------- Server listening on 5201 ----------------------------------------------------------- Accepted connection from 192.168.31.197, port 43182 [ 5] local 192.168.31.48 port 5201 connected to 192.168.31.197 port 43184 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-10.00 sec 988 MBytes 829 Mbits/sec 0 3.03 MBytes [ 5] 10.00-20.00 sec 981 MBytes 823 Mbits/sec 0 3.03 MBytes [ 5] 20.00-30.00 sec 985 MBytes 826 Mbits/sec 0 3.03 MBytes [ 5] 30.00-40.00 sec 991 MBytes 832 Mbits/sec 0 3.03 MBytes [ 5] 40.00-50.00 sec 985 MBytes 826 Mbits/sec 0 3.03 MBytes [ 5] 50.00-60.00 sec 984 MBytes 825 Mbits/sec 0 3.03 MBytes [ 5] 60.00-60.02 sec 1.25 MBytes 663 Mbits/sec 0 3.03 MBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-60.02 sec 5.78 GBytes 827 Mbits/sec 0 sender ----------------------------------------------------------- Server listening on 5201 ----------------------------------------------------------- |
Результат хороший и скорость загрузки не так уж далека от того, что мы получили бы с портом Gigabit Ethernet.
Хотя Khadas Edge2 вообще поставляется без порта Ethernet, все же можно добавить 2,5GbE через USB Type-C dongle.
Ультракомпактные платы — это хорошо, но, как видите, для тестирования 2.5GbE нам пришлось отключить USB-мышь и кабель HDMI. Эту проблему легко решить с помощью удлинителя. Приступаем к результатам:
- Загрузка
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Accepted connection from 192.168.31.112, port 33996 [ 5] local 192.168.31.48 port 5201 connected to 192.168.31.112 port 33998 [ ID] Interval Transfer Bitrate [ 5] 0.00-10.00 sec 702 MBytes 589 Mbits/sec [ 5] 10.00-20.00 sec 1.40 GBytes 1.20 Gbits/sec [ 5] 20.00-30.00 sec 1.09 GBytes 936 Mbits/sec [ 5] 30.00-40.00 sec 472 MBytes 396 Mbits/sec [ 5] 40.00-50.00 sec 1.30 GBytes 1.11 Gbits/sec [ 5] 50.00-60.00 sec 480 MBytes 403 Mbits/sec [ 5] 60.00-61.30 sec 0.00 Bytes 0.00 bits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate [ 5] 0.00-61.30 sec 5.40 GBytes 757 Mbits/sec receiver |
Скачивание
1 2 3 4 5 6 7 8 9 10 11 12 |
[ 5] local 192.168.31.48 port 5201 connected to 192.168.31.112 port 33994 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-10.00 sec 509 MBytes 427 Mbits/sec 83 112 KBytes [ 5] 10.00-20.00 sec 460 MBytes 386 Mbits/sec 88 80.6 KBytes [ 5] 20.00-30.00 sec 479 MBytes 401 Mbits/sec 75 94.7 KBytes [ 5] 30.00-40.00 sec 507 MBytes 426 Mbits/sec 70 191 KBytes [ 5] 40.00-50.00 sec 500 MBytes 419 Mbits/sec 74 139 KBytes [ 5] 50.00-60.00 sec 470 MBytes 394 Mbits/sec 79 83.4 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-60.00 sec 2.86 GBytes 409 Mbits/sec 470 sender ----------------------------------------------------------- |
Действительно ужасающие цифры, но мы видим, что драйвер cdc_ncm загружен:
1 2 3 4 5 6 |
$ lsmod Module Size Used by cdc_mbim 16384 0 cdc_wdm 24576 1 cdc_mbim cdc_ncm 28672 1 cdc_mbim cdc_ether 16384 1 cdc_ncm |
Вместо этого мы хотели использовать драйвер r8152, но метод, который мы использовали на нашем ноутбуке, почему-то не сработал, и мы не готовы снова тратить бесчисленные часы на то, чтобы USB-ключ Realtek 2.5GbE работал должным образом…
Поэтому мы переключились на док-станцию MINI USB-C с Gigabit Ethernet.
и это хорошо работает в обоих направлениях:
- Загрузка
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Accepted connection from 192.168.31.104, port 40016 [ 5] local 192.168.31.48 port 5201 connected to 192.168.31.104 port 40018 [ ID] Interval Transfer Bitrate [ 5] 0.00-10.00 sec 1.09 GBytes 932 Mbits/sec [ 5] 10.00-20.00 sec 1.09 GBytes 933 Mbits/sec [ 5] 20.00-30.00 sec 1.09 GBytes 933 Mbits/sec [ 5] 30.00-40.00 sec 1.09 GBytes 933 Mbits/sec [ 5] 40.00-50.00 sec 1.09 GBytes 933 Mbits/sec [ 5] 50.00-60.00 sec 1.09 GBytes 933 Mbits/sec [ 5] 60.00-60.00 sec 437 KBytes 902 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate [ 5] 0.00-60.00 sec 6.52 GBytes 933 Mbits/sec receiver |
Скачивание
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Accepted connection from 192.168.31.104, port 40020 [ 5] local 192.168.31.48 port 5201 connected to 192.168.31.104 port 40022 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-10.00 sec 1.10 GBytes 944 Mbits/sec 0 645 KBytes [ 5] 10.00-20.00 sec 1.10 GBytes 942 Mbits/sec 0 987 KBytes [ 5] 20.00-30.00 sec 1.10 GBytes 942 Mbits/sec 0 987 KBytes [ 5] 30.00-40.00 sec 1.10 GBytes 942 Mbits/sec 0 987 KBytes [ 5] 40.00-50.00 sec 1.10 GBytes 942 Mbits/sec 0 987 KBytes [ 5] 50.00-60.00 sec 1.10 GBytes 942 Mbits/sec 0 987 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-60.00 sec 6.58 GBytes 942 Mbits/sec 0 sender ----------------------------------------------------------- |
Bluetooth
Мы попробовали Bluetooth, подключив наш телефон к плате Khadas Edge2 Pro. Хорошей новостью является то, что Bluetooth включен и соединение установлено успешно.
Однако нам не удалось отправить файлы, так как плата Khadas отображается только как аудиоустройство. Поэтому мы попытались использовать его в качестве динамика через подключенный дисплей HDMI, и звук постоянно прерывался.
Мы также могли подключить плату к гарнитуре Bluetooth, но у нас была та же проблема с регулярным обрезанием звука.
Это может работать лучше с устройствами Bluetooth HID, но нам нечего тестировать.
Тестирование GPIO
Ситуация с GPIO точно такая же, как и на плате Rock 5B.
1 2 3 4 5 6 7 |
khadas@Khadas:~$ ls -l /dev/gpiochip? crw------- 1 root root 254, 0 Sep 18 21:42 /dev/gpiochip0 crw------- 1 root root 254, 1 Sep 18 21:42 /dev/gpiochip1 crw------- 1 root root 254, 2 Sep 18 21:42 /dev/gpiochip2 crw------- 1 root root 254, 3 Sep 18 21:42 /dev/gpiochip3 crw------- 1 root root 254, 4 Sep 18 21:42 /dev/gpiochip4 crw------- 1 root root 254, 5 Sep 18 21:42 /dev/gpiochip5 |
и мы можем управлять ими через sysfs:
1 2 3 4 5 6 7 |
khadas@Khadas:~$ ls -l /dev/gpiochip? crw------- 1 root root 254, 0 Sep 18 21:42 /dev/gpiochip0 crw------- 1 root root 254, 1 Sep 18 21:42 /dev/gpiochip1 crw------- 1 root root 254, 2 Sep 18 21:42 /dev/gpiochip2 crw------- 1 root root 254, 3 Sep 18 21:42 /dev/gpiochip3 crw------- 1 root root 254, 4 Sep 18 21:42 /dev/gpiochip4 crw------- 1 root root 254, 5 Sep 18 21:42 /dev/gpiochip5 |
Основное отличие заключается в аппаратной части, поскольку Khadas Edge2 поставляется не с типичным разъемом, а с двумя разъемами FPC для ввода-вывода, для которых требуются дополнительные платы.
Мы также видим, что установлена библиотека WiringPiu, но мы не смогли ее протестировать из-за нехватки времени:
1 2 3 |
khadas@Khadas:~$ ls /usr/local/lib/ libwiringPi.so libwiringPiDev.so python3.10 libwiringPi.so.3.13 libwiringPiDev.so.3.13 |
VPU (блок обработки видео)
Khadas сказал нам, что на Khadas Edge2 работает как аппаратное, так и программное декодирование видео. Сначала мы попробовали видео 4K YouTube в Firefox.
Он полагается на программное декодирование, учитывая относительно высокую загрузку ЦП, но видео 4K при 30 кадрах в секунду воспроизводится нормально без потери кадров, за исключением нескольких в начале.
Нам нужно будет использовать gstreamer для воспроизведения видео H.264 с аппаратным декодированием. Нам дали эту командную строку:
1 2 |
$ gst-launch-1.0 filesrc location=big_buck_bunny_4k_H264_60fps.mp4 ! qtdemux name=d d.video_0 ! h264parse ! v4l2h264dec capture-io-mode=4 ! video/x-raw,format=NV12 ! waylandsink |
У нас это не сработало:
1 2 |
WARNING: erroneous pipeline: no element "v4l2h264dec" |
Это сложная часть проверки платы перед запуском и без документации…
Мы можем попытаться найти правильный декодер с помощью gst-inpect:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$ gst-inspect-1.0 /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstrockchipmpp.so Plugin Details: Name rockchipmpp Description Rockchip Mpp Video Plugin Filename /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstrockchipmpp.so Version 1.14.4 License LGPL Source module gst-rockchip Binary package GStreamer Rockchip Plug-ins Origin URL Unknown package origin mpph264enc: Rockchip Mpp H264 Encoder mpph265enc: Rockchip Mpp H265 Encoder mppjpegdec: Rockchip's MPP JPEG image decoder mppjpegenc: Rockchip Mpp JPEG Encoder mppvideodec: Rockchip's MPP video decoder mppvp8enc: Rockchip Mpp VP8 Encoder |
Похоже, вместо v4l2h264dec нужно использовать mppvideodec, но нам не удалось найти нужную команду…
[ Обновление от Khadas :Аппаратный декодер Edge2 gstreamer под Ubuntu 22.04 все еще имеет некоторые проблемы, которые необходимо исправить, поэтому на данный момент он не работает должным образом из-за проблемы с приемником waylans.]
Потребляемая мощность
Некоторые цифры энергопотребления для справки:
- Выключение – 0,0 Вт
- Ilde — 2,9 Вт
- Видео 4K YouTube в Firefox (полный экран) — от 7,5 до 10,9 Вт
- Стресс-тест на всех 8 ядрах (stress -c 8) — 9,0 Вт
Это довольно энергоэффективная плата, учитывая вычислительную мощность устройства. Это также еще раз иллюстрирует, что ЦП является лишь частью уравнения в современных сложных процессоров, поскольку пиковое энергопотребление при воспроизведении видео 4K приближается к 11 Вт.
Резюме
Khadas Edge2 Pro хорошо работает в Ubuntu 22.04, а функции в Linux поддерживаются лучше, чем мы ожидали в то время, с большим прогрессом, так как мы тестировали Debian 11 на плате Rock 5B всего два месяца назад. У нас все еще есть несколько проблем здесь и там, но этого следовало ожидать, учитывая, что мы получили плату до ее запуска.
На днях Khadas Edge2 был запущен в рамках осеннего запуска Khadas как в виде комплекта для сборки, как описано здесь, так и в виде мини-ПК Arm с корпусом. Другие продукты, входящие в состав запуска, включают Khadas VIM1S SBC начального уровня и устройства для аудиофилов: ЦАП Tone2 и модуль BT Magic . Вы можете приобрести Khadas Edge2 на Amazon или в интернет-магазине Khadas .
Khadas обещает отправить комплекты Edge2 Maker Kit в течение 2 дней после подтверждения заказа, а компьютеры Edge2 ARM будут отправлены в середине декабря 2022 года или ранее.
Выражаем свою благодарность источнику из которого взята и переведена статья, сайту cnx-software.com.
Оригинал статьи вы можете прочитать здесь.
очень сырая ubuntu обновления через репозиторий постоянно сбрасывают систему, может спокой отвалиться hdmi и некоторые другие настройки могут крутиться бесконечно в обновлении. Мое мнение перепробовал все образы предоставляемые через owoow и среди них нет ни одного стабильно работающего, wifi отваливается в общем много проблема и как мне кажется после выхода mind поддержка одноплатных решений очень сильно просела, что вызывает огорчение. Тот же orange pi имеющий гораздо большее сообщество где можно найти интересующее вас решение в отличие от ожиданий неделями а то и вовсе без решения