{{WarningMessage|text=This technical note was validated against specific versions of hardware and software. What is described here may not work with other versions.}}
|First public release
|}
==Introduction==
Mito8M is the first DAVE Embedded Systems' product based on a core implementing the [https://en.wikipedia.org/wiki/ARM_architecture#64/32-bit_architecture ARMv8-A] architecture.
Specifically, it is built upon the [https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/i.mx-applications-processors/i.mx-8-processors/i.mx-8m-family-armcortex-a53-cortex-m4-audio-voice-video:i.MX8M NXP i.MX8M] system-on-chip (SoC).
==Results==This section details Technical Note (TN) describes how to run [https://www.armbian.com Armbian Buster] distribution on this platform. For the results sake of completeness, it is worth remembering that were achieved by the different benchmarksArmbian Buster is based on Debian 10.
===General configuration=Testbed==This section illustrates To a good extent, '''Mito8M is electrically and mechanically compatible with [[:Category:AxelLite|Axel Lite]]'''. For this reason, the cofiguration settings common testbed used for this TN is pretty similar to all the tests performedone described [[SBCX-TN-004:_Running_Armbian_Buster_(Debian_10)|here]]. Even though the SBCX carrier board is designed to host Axel Lite, in fact, '''it supports Mito8M as well'''. [[File:SBCX-Mito8M.jpg|thumb|center|600px|Mito8M SoM on SBCX carrier board]]
====SoC and SDRAM bank organization====
{| class="wikitable"
|+
!
!
!Mito8M
!
|-
| rowspan="2" |SoC
|SoC
|NXP i.MX8M Quad
|
|-
|ARM frequency
[MHz]
|800
|
|-
| rowspan="5" |SDRAM
|Type
|LPDDR4
|
|-
|Frequency
[MHz]
|1600
|
|-
|Bus witdth
[bit]
|32
|
|-
|Theoretical bandiwidth
[Gb/s]
|102.4
|
|-
|Size
[MB]
|3072
|
|}
====Software configuration====Apart from the SoM, the most relevant difference with SBCX-TN-004 is related to the root file system. In this case, it was built for the <code>aarch64</code> architecture.
* Linux kernel: 4The root file system was stored on a partition of the microSD card inserted in the slot J26.14.98* Architecture: aarch64* GovernorThis partition is associated with the <code>/dev/mmcblk1p2</code> device file: userspace @ 800 MHz
<pre class="board-terminal">
rootarmbian@Mito8M:~# echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTmmcblk0 179:0 0 7.3G 0 disk `-mmcblk0p1 179:1 0 7.3G 0 part mmcblk0boot0 179:32 0 4M 1 disk mmcblk0boot1 179:64 0 4M 1 disk mmcblk0rpmb 179:96 0 4M 0 disk root@Mito8Mmmcblk1 179:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor128 0 14.6G 0 disk userspace|-mmcblk1p1 179:129 0 42.9M 0 part root@Mito8M`-mmcblk1p2 179:~# cat /sys/devices/system130 0 14.4G 0 part /cpu/cpu0/cpufreq/scaling_cur_freq800000
</pre>
GCC==Bootstrap process==This section shows the complete bootstrap log retrieved from the serial console. To expand the box, please click on the ''Expand'' link on the top right corner.<pre class="board-terminalmw-collapsible mw-collapsed">armbian@Mito8M:~/devel/lmbench$ gcc U-Boot SPL 2018.03-08018-g59e59e6f85-vUsing builtdirty (Nov 29 2019 -in specs.12:42:16 +0100)COLLECT_GCCPMIC: PFUZE100 ID=gcc0x10DDRINFO: start lpddr4 ddr initDRAM PHY training for 3200MTScheck ddr4_pmu_train_imem codecheck ddr4_pmu_train_imem code passcheck ddr4_pmu_train_dmem codeCOLLECT_LTO_WRAPPER=/usr/lib/gcc/aarch64-linux-gnu/8/lto-wrappercheck ddr4_pmu_train_dmem code passTraining PASSDRAM PHY training for 667MTScheck ddr4_pmu_train_imem codecheck ddr4_pmu_train_imem code passcheck ddr4_pmu_train_dmem codecheck ddr4_pmu_train_dmem code passTraining PASSDRAM PHY training for 3200MTScheck ddr4_pmu_train_imem codecheck ddr4_pmu_train_imem code passcheck ddr4_pmu_train_dmem codecheck ddr4_pmu_train_dmem code passTraining PASSTargetDDRINFO: aarch64-linux-gnuddrphy calibration doneConfigured withDDRINFO: ddrmix config doneNormal BootTrying to boot from MMC1 U-Boot 2018../src/configure 03-v 08018-g59e59e6f85-withdirty (Nov 29 2019 -pkgversion='Debian 812:42:16 +0100) CPU: Freescale i.3MX8MQ rev2.0-6' --with-bugurl=file1300 MHz (running at 800 MHz)CPU:///usr/share/doc/gcc Industrial temperature grade (-8/README.Bugs --enable-languages40C to 105C)CPU Temperature test bypass!!!!CPU Temperature =c(23000C),ada,c++alert = (85000C),go,d,fortran,objc,obj-c++ --prefixcritical =/usr --with-gcc-major-version-only --program-suffix=-8 --program-prefix=aarch64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --disable-libphobos --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu(95000C) at 23CReset cause: PORThread modelModel: posixDAVE iMX8MQ Mitogcc version 8.DRAM: 3GiBMMC: FSL_SDHC: 0, FSL_SDHC: 1Loading Environment from MMC.0 (Debian 8.3.0OKNo panel detected: default to HDMIDisplay: HDMI (1280x720)In: serialOut: serialErr: serial BuildInfo: -6)ATF bac189b</pre> - U-Boot 2018.03-08018-g59e59e6f85-dirty
switch to partitions #0, OKmmc0(part 0) is current deviceflash target is MMC:0Net: eth0: ethernet@30be0000Fastboot: NormalNormal Bootu-boot=> edit mmcrootedit: /dev/mmcblk1p2 rootwait rwu-boot=> run net_mmcswitch to partitions #0, OKmmc1 is current deviceUsing ethernet@30be0000 deviceTFTP from server 192.168.0.23; our IP address is 192.168.0.81Filename 'mito/Image.msil'.Load address: 0x40480000Loading: #################################################################... ################################################# 1.7 MiB/sdoneBytes transferred =Testbed 23542272 (1673a00 hex)Using ethernet@30be0000 deviceTFTP from server 192.168.0.23; our IP address is 192.168.0.81Filename 'mito/imx8mq-mito.dtb'.Load address: 0x43000000Loading: ####### 619.1KiB/sdoneBytes transferred ===34885 (8845 hex)## Flattened Device Tree blob at 43000000 Booting using the fdt blob at 0x43000000 Using Device Tree in place at 0000000043000000, end 000000004300b844
====Building====<pre class="board-terminal">git clone https:Welcome to Debian GNU//github.com/jeffhammond/STREAM.gitmake</pre>Linux 10 (buster)!
[ 4.515276] systemd[1]: Set hostname to <syntaxhighlight langMito8M>.[ 4.798924] systemd[1]: File /lib/systemd/system/systemd-journald.service:12 configures an IP firewall (IPAddressDeny="makefile" lineany), but the local system does not support BPF/cgroup based firewalling.[ 4.816132] systemd[1]: Proceeding WITHOUT firewalling in effect! (This warning is only shown for the first loaded unit using IP firewalling.)[ 5.184210] random: systemd: uninitialized urandom read (16 bytes read)[ 5.198783] random: systemd: uninitialized urandom read (16 bytes read)[ 5.205577] systemd[1]: Reached target Remote File Systems.[ OK ] Reached target Remote File Systems.[ 5.228045] random: systemd: uninitialized urandom read (16 bytes read)[ 5.235082] systemd[1]: Listening on Syslog Socket.[ OK ] Listening on Syslog Socket.[ 5.252714] systemd[1]: Listening on initctl Compatibility Named Pipe.[ OK ] Listening on initctl Compatibility Named Pipe.[ 5.276050] systemd[1]: Reached target System Time Synchronized.[ OK ] Reached target System Time Synchronized.[ 5.300434] systemd[1]: Reached target Swap.[ OK ] Reached target Swap.[ OK ] Created slice system-serial\x2dgetty.slice.[ OK ] Started Forward Password Rcuests to Wall Directory Watch.[ OK ] Listening on Journal Audit Socket.[ OK ] Started Dispatch Password cts to Console Directory Watch.[ OK ] Reached target Local Encrypted Volumes.[ OK ] Listening on Journal Socket. Mounting Kernel Debug File System... Starting Load Kernel Modules... Starting Restore / save the current clock... Starting Set the console keyboard layout... Mounting Huge Pages File System...[ OK ] Reached target Paths.[ OK ] Listening on fsck to fsckd communication Socket.[ OK ] Listening on Journal Socket (/dev/log). Starting Journal Service...[ OK ] Listening on udev Kernel Socket. Mounting POSIX Message Queue File System...[ OK ] Created slice system-getty.slice.[ OK ] Created slice User and Session Slice.[ OK ] Reached target Slices. Starting Remount Root and Kernel File Systems... Starting Nameserver information manager...[ OK ] Listening on udev Control Socket. Starting udev Coldplug all Devices...[ OK ] Mounted Kernel Debug File System.[ OK ] Started Journal Service.[ OK ] Started Load Kernel Modules.[ OK ] Started Restore / save the current clock.[ OK ] Mounted Huge Pages File System.[ OK ] Mounted POSIX Message Queue File System.[ OK ] Started Set the console keyboard layout. Starting Apply Kernel Variables... Mounting Kernel Configuration File System...[ OK ] Mounted Kernel Configuration File System.[ OK ] Started Nameserver information manager.[ OK ] Started Apply Kernel Variables.[FAILED] Failed to start Remount Root and Kernel File Systems.See 'systemctl status systemd-remount-fs.service' for details. Starting Create System Users... Starting Flush Journal to Persistent Storage... Starting Load/Save Random Seed...[ 6.095290] systemd-journald[2035]: Received request to flush runtime journal from PID 1[ OK ] Started udev Coldplug all Devices. Starting Helper to synchronize boot up for ifupdown...[ OK ] Started Create System Users.[ OK ] Started Flush Journal to Persistent Storage.[ OK ] Started Load/Save Random Seed. Starting Create Static Device Nodes in /dev...[ OK ] Started Create Static Device Nodes in /dev. Starting udev Kernel Device Manager...[ OK ] Reached target Local File Systems (Pre). Mounting /tmp...[ OK ] Mounted /tmp.[ OK ] Reached target Local File Systems. Starting Set console font and keymap... Starting Create Volatile Files and Directories... Starting Armbian ZRAM config...[ OK ] Started Set console font and keymap.[ OK ] Started Create Volatile Files and Directories.[ OK ] Started Entropy daemon using the HAVEGE algorithm. Starting Update UTMP about System Boot/Shutdown...[ OK ] Started udev Kernel Device Manager.[ OK ] Started Update UTMP about System Boot/Shutdown.[ OK ] Started Armbian ZRAM config.[ OK ] Found device /dev/ttymxc0. Starting Armbian memory supported logging...[ 6.802574] imx-sdma 30bd0000.sdma: external firmware not found, using ROM firmware[ 6.804322] imx-sdma 302c0000.sdma: external firmware not found, using ROM firmware[ OK ] Found device /dev/ttyS0.[ OK ] Found device /sys/subsystem/net/devices/eth0.[ OK ] Started Helper to synchronize boot up for ifupdown. Starting Raise network interfaces...[ OK ] Started ifup for eth0.[ 7.868653] Micrel KSZ9031 Gigabit PHY 30be0000.ethernet-1:07: attached PHY driver [Micrel KSZ9031 Gigabit PHY] (mii_bus:phy_addr="line">30be0000.ethernet-1:07, irq=POLL)[ 7.883969] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready[ OK ] Started Raise network interfaces.[ OK ] Started Armbian memory supported logging.[ OK ] Reached target System Initialization. Starting Armbian hardware monitoring...[ 9.921638] fec 30be0000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx[ 9.929973] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready[ OK ] Started Daily rotation of log files.[ OK ] Started Daily Cleanup of Temporary Directories.[ OK ] Listening on D-Bus System Message Bus Socket.[ OK ] Reached target Sockets. Starting Armbian hardware optimization...[ OK ] Started Daily man-db regeneration.[ OK ] Started Daily apt download activities.[ OK ] Started Daily apt upgrade and clean activities.[ OK ] Reached target Timers.[ OK ] Started Armbian hardware monitoring.[ OK ] Started Armbian hardware optimization.[ OK ] Reached target Basic System. Starting System Logging Service...[ OK ] Started D-Bus System Message Bus. Starting LSB: Load kernel cd to enable cpufreq scaling... Starting WPA supplicant... Starting Resets System Activity Data Collector... Starting rng-tools.service... Starting Dispatcher daemon for systemd-networkd... Starting Login Service...[ OK ] Started Regular background program processing daemon.[ 13.697766] random: crng init done[ 13.701351] random: 7 urandom warning(s) missed due to ratelimiting[ 19.415996] nr_pdflush_threads exported in /proc is scheduled for removal[ OK ] Started System Logging Service.[ OK ] Started Resets System Activity Data Collector.[ OK ] Started rng-tools.service.[ OK ] Started Login Service.[ OK ] Started WPA supplicant.[ OK ] Reached target Network. Starting chrony, an NTP client/server...[ OK ] Reached target Network is Online. Starting LSB: Advanced IEEE 802.11 management daemon... Starting Permit User Sessions... Starting OpenBSD Secure Shell server... Starting /etc/rc.local Compatibility...[ OK ] Started Unattended Upgrades Shutdown.[ OK ] Started LSB: Load kernel mcded to enable cpufreq scaling.[ OK ] Started LSB: Advanced IEEE 802.11 management daemon.[ OK ] Started Permit User Sessions.[ OK ] Started /etc/rc.local Compatibility.[ OK ] Started Getty on tty1.[ OK ] Started Serial Getty on ttymxc0.[ OK ] Started Serial Getty on ttyS0.[ OK ] Reached target Login Prompts. Starting LSB: set CPUFreq kernel parameters...[ OK ] Started chrony, an NTP client/server.[ OK ] Started LSB: set CPUFreq kernel parameters. Starting LSB: Set sysfs variables from /etc/sysfs.conf...armbian@Mito8M[ OK ] Started LSB:~Set sysfs variables from /develetc/STREAM$ cat Makefile sysfs.conf.CC = gcc[ OK ] Started OpenBSD Secure Shell server.CFLAGS = [ OK ] Started Dispatcher daemon for systemd-O2 networkd.[ OK ] Reached target Multi-fopenmpUser System.[ OK ] Reached target Graphical Interface. Starting Update UTMP about System Runlevel Changes...[ OK ] Started Update UTMP about System Runlevel Changes.
FC = gfortran-4Armbian 19.9FFLAGS = -O2 -fopenmp11.6 Buster ttymxc0
====Running====<pre class="board-terminal">armbianroot@Mito8M:~/devel/STREAM$ ./stream_c.exe # lscpu-------------------------------------------------------------Architecture: aarch64STREAM version $RevisionByte Order: 5.10 $ Little Endian-------------------------------------------------------------CPU(s): 4This system uses 8 bytes per array element.---------------On----------------------------------------------Array size = 10000000 line CPU(elementss), Offset = list: 0 -3Thread(elementss)Memory per array = 76.3 MiB (= 0.core: 1 GiB).Total memory required = 228.9 MiB Core(= 0.2 GiBs).per socket: 4Each kernel will be executed 10 times. The *best* time for each kernel Socket(excluding the first iterations) will be used to compute the reported bandwidth.-------------------------------------------------------------Number of Threads requested = 4Number of Threads counted = 4-------------------------------------------------------------Your clock granularity/precision appears to be : 1 microseconds.Each test below will take on the order of 46427 microseconds.NUMA node(= 46427 clock tickss): 1Increase the size of the arrays if this shows thatVendor ID: ARMyou are not getting at least 20 clock ticks per test.Model: 4Model name: Cortex-------------------------------------------------------------A53Stepping: r0p4WARNING -- The above is only a rough guidelineCPU max MHz: 1300.0000For best results, please be sure you know theprecision of your system timerCPU min MHz: 800.0000-------------------------------------------------------------Function Best Rate MB/s Avg time Min time Max timeCopyBogoMIPS: 677016.5 0.024010 0.023632 0.02511766L1d cache: unknown sizeScaleL1i cache: 6093.2 0.027474 0.026259 0.029142unknown sizeAddL2 cache: 5263.5 0.046008 0.045597 0.046230 unknown sizeTriadNUMA node0 CPU(s): 4820.0 0.050297 0.049793 0.050723-------------------------------------------------------------3Solution ValidatesFlags: avg error less than 1.000000e-13 on all three arrays------------------------------------------------------------- fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid