Skip to content

Images 0.6.x

Verschoben Images
  • Kurz vor der Auslieferung ist nicht bekannt ob und welche Images es geben wird. Da das SOC aber vermutlich viele interessieren wird, siehe das der letzte Batch schnell "Out of stock" war, wird es wohl relativ schnell was zum Spielen geben 😉

    Laut ein paar Info's vom Thomas K. sollte man ein Auge auf den Entwickler ayufan haben. Dieser macht aktuell viele Images für das SOC Rock64. https://github.com/ayufan-rock64/linux-build/releases

    Vor drei Monaten hat ayufan schon angefangen das Paket auf den ROCKPro64 vorzubereiten.
    https://github.com/ayufan-rock64/linux-build/commit/bce555e9adcc8b3b6d098dca0efe4820bfac75c5

    Auch Armbian unterstützt den Rock64 -> https://dl.armbian.com/rock64/ deswegen liegt die Vermutung nahe, das da auch was kommen wird. Denke viele Entwickler wird die PCIe x4 Schnittstelle reizen 🙂

    Da ich gelesen habe, das Rockchip ganz ordentlich mit dran arbeitet die Platinen auch in den aktuellen Kernel zu bekommen, hoffe ich das das Geld nicht zum Fenster raus geschmissen ist.

    Für Endanwender, die nur einen Server aufsetzen wollen, würde ich im Moment von einem Kauf abraten! Ich erinnere hier mal an die Textzeile aus dem Shop

    1. The ROCKPro64 still in early stage development cycle, the current batch is only suitable for developer and early adopter.1. er.
  • Laut Forum soll am 15. Mai ein Android-Image veröffentlicht werden.

  • Das Android 7.1.2 Stock Image hat schon mal eine Wiki-Page 🙂

    Sieht nach leicht verspätet aus.

  • Ayufan, ein polnischer Entwickler der schon ganz viel für das Rock64-Board gemacht hat ist "Gewehr bei Fuß" 🙂

    16/05/18 08:44
    <ayufan1> lukasz: yeah, I have everything prep for rpro64 so I should release something quickly 🙂
    16/05/18 08:45
    <ayufan1> including dts/uboot and so
    16/05/18 08:45
    <ayufan1> I run my linux on pre-pre-pre unit
    16/05/18 08:45
    <lukasz> so cool!
    16/05/18 08:45
    <ayufan1> it worked, the problem was the stability of the board
    16/05/18 08:45
    <ayufan1> so, everything should work
    16/05/18 08:45
    <ayufan1> or almost everything
    16/05/18 08:45
    <lukasz> heh, TL has the bit that makes DDR4 work
    16/05/18 08:45
    <ayufan1> I will push as soon as I confirm it
    16/05/18 08:45
    <ayufan1> ah, ddr4 change
    16/05/18 08:45
    <ayufan1> this is not a big deal
    16/05/18 08:45
    <ayufan1> easy change

    Das Warten auf ein erstes Linux-Image kann also nicht so lange dauern. Dran denken, das erste Linux-Image wird mit Sicherheit instabil sein und viele Fehler haben. Aber, wenn die Kiste bootet, ist schon mal ein Anfang gemacht.

  • So, da hätten wir das erste Image, ein Android in Version 7.1.2. Nennt sich auch "Nougat". Läuft aktuell noch auf 31.1% der Geräte. Ist jetzt nicht so uralt, ob man was damit anfangen kann? Ich weiß es nicht, komm ja aus der headless Ecke. Aber wenn ich nichts anderes zu testen habe, dann nehmen wir das 🙂

    https://frank-mankel.org/topic/56/android-7-1-2-stock-image-emmc-boot-20180515

  • Ich Depp hab vergessen bei der Bestellung die eMMC-Sachen mit in den Warenkorb zu legen. Somit kann ich im Moment das Android-Image nicht testen, da dieses für eMMC gemacht ist 😞

    Das microSD Image lässt leider noch auf sich warten.
    http://wiki.pine64.org/index.php/ROCKPro64_Software_Release#Android_7.1.2_Stock_Image_.5BmicroSD_Boot.5D_.5B20180515.5D

    Da bleibt mir im Moment nichts anderes übrig als zu warten bis das Image veröffentlicht ist, oder bis Ayufan seinen ROCKPro64 hat und sein Image veröffentlicht.

    Meine Versuche einen U-Boot auf eine Karte zu schreiben, sind auch nicht von Erfolg gekrönt. Noch viel zu lernen....
    Weiter geht's.... 😉

  • Mittlerweile gibt es ja ein Android Image (mit Fehlern) für die SD-Karte. Aber, ganz ehrlich, was will man mit Android? Evt. nützlich für eine TV-Box, aber das war es dann auch (für mich). Linux muss her, egal was, Hauptsache es startet! 🙂

    Ayufan hat wohl so weit alles fertig und hat gestern schon mal einen Prer-Release veröffentlicht, der leider nicht startete. Für mich sah es so aus, als wenn der U-Boot nicht funktionierte. Drei verschiedene Images getestet, ohne Erfolg. Und da ich schon dachte ich bin zu blöd, war ich froh das lukasz es ebenfalls nicht zum Starten bracht.

    Also, heute mal schön feste Daumen drücken, damit Ayufan endlich seinen ROCKPro64 heute geliefert bekommt. In Polen ist wohl heute kein gesetzlicher Feiertag, wie bei uns.

  • Ayufan, der polnische Linuxkenner, der die Images baut, hat folgendes im Angebot. Das sind im Moment noch die Bezeichnungen für den Rock64 !

    • Ubuntu

      • bionic-containers-rock64-0.6.38-224-arm64.img.xz
        Ein Ubuntu 18.04 mit Docker Unterstütztung.

      • bionic-lxde-rock64-0.6.38-224-arm64.img.xz
        Ein Ubuntu 18.04 mit dem LXDE Desktop.

      • bionic-minimal-rock64-0.6.38-224-arm64.img.xz
        Ein Ubuntu 18.04 in Minimalausstattung. Ohne Desktop usw.

    • Debian

      • stretch-minimal-rock64-0.6.38-224-arm64.img.xz
        Ein Debian 9 Strech in Minimalausführung. Ohne Desktop usw.

      • stretch-openmediavault-rock64-0.6.38-224-arm64.img.xz
        Eine Openmediavault(OMV) Edition, basierend auf Debian 9 Stretch. OMV ist eine auf Debian basierende NAS Lösung.

    • Tools

      • u-boot-erase-spi-rock64.img.xz
        Tool um den eingebauten SPI Speicher zu löschen.

      • u-boot-flash-spi-rock64.img.xz
        Tool um den u-boot auf den SPI Speicher zu flashen.

  • Ayufan hat geliefert! Vielen Dank!

    Dran denken, noch mit Fehlern, aber es ist ein Anfang.

  • Aktueller Stand der Entwicklung.

    Es gibt wohl einige Probleme mit dem.dts File.

    Was aktuell nicht geht (Bionic-minimal 0.7.1)

    • USB2/3
    • LAN (teilweise, Fehler vor allen Dingen bei RX)
    • PCIe
    • UART2

    Das sind mal auf die schnelle die gröbsten Sachen. Die Liste läßt sich bestimmt noch verlängern. Aber von der oberen Liste können wir lt. Ayufan zwei Positionen streichen, das wären

    • LAN
    • UART2

    Damit wären wir schon mal ein wenig weiter. Jetzt mal auf ein gefixtes Image warten.

  • Neue Version erschienen 0.7.2

    Sollte LAN und UART2 lösen. Bestätigen kann ich das das LAN jetzt geht, UART2 leider nicht.

  • Neuer Release ist am Bauen.

    Soll folgendes bringen

    • USB
    • PCIe
    • LED's
    • und den richtigen MALI Treiber (Grafik)

    Ich bin gespannt.

  • Neue Version 0.7.4 erschienen.

    • 0.7.4: Rebase 4.4 kernel on rockchip-linux/kernel@3dd9af3,
    • 0.7.4: RockPro64: use 933MHz DDR config,
    • 0.7.4: Add additional opp for cpu/mem,
    • 0.7.4: Enable dmc for memory,

    Quelle: https://github.com/ayufan-rock64/linux-build/releases

  • Neue Version 0.7.5 erschienen

    • 0.7.5: Disable dmc/dfi for memory,

    Meine ersten Tests zeigen, das das Board jetzt wieder deutlicher stabiler läuft, als mit der v0.7.4

  • Ayufan ist zurückgekehrt zur 0.6.xx Nummerierung. Warum? Das habe ich ihn auch gefragt.

    (12:21:33) ayufan1: not enough changes to consider 0.7.x to be used
    (12:21:49) ayufan1: 0.7.x should be board independent images

    Somit hat er dann heute 0.6.42 released.

    Diese Version 0.6.42 entspricht der Version 0.7.5 in Bezug auf die Änderungen bzgl des ROCKPro64.
    Ich habe sie trotzdem mal testweise geflasht, bootet einwandfrei und läuft scheinbar stabil.

    Wenn ich das richtig verstehe, wird er ab Version 0.7.x die Entwicklung für den ROCK64 und den ROCKPro64 splitten.

  • Neue Version 0.6.43 erschienen.

    • 0.6.43: Revert rk3328 clock changes for DDR

    und 0.6.44

    • 0.6.44: Bring back clock changes for DDR, enable DMC,

    Keine besonderen Dinge für den ROCKPro64 dabei. Das einzige was mir aufgefallen ist

    lspci
    

    geht jetzt. Info.

    Beide Versionen laufen hier in der Bionic-Minimal Version stabil. Incl. Memtest.

    rock64@rockpro64:/usr/local/sbin$ uname -a
    Linux rockpro64 4.4.126-rockchip-ayufan-239 #1 SMP Sun May 27 18:38:24 UTC 2018 aarch64 aarch64 aarch64 GNU/Linux
    

    Memtest

    rock64@rockpro64:~$ sudo memtester 3072 1
    memtester version 4.3.0 (64-bit)
    Copyright (C) 2001-2012 Charles Cazabon.
    Licensed under the GNU General Public License version 2 (only).
    
    pagesize is 4096
    pagesizemask is 0xfffffffffffff000
    want 3072MB (3221225472 bytes)
    got  3072MB (3221225472 bytes), trying mlock ...locked.
    Loop 1/1:
      Stuck Address       : ok         
      Random Value        : ok
      Compare XOR         : ok
      Compare SUB         : ok
      Compare MUL         : ok
      Compare DIV         : ok
      Compare OR          : ok
      Compare AND         : ok
      Sequential Increment: ok
      Solid Bits          : ok         
      Block Sequential    : ok         
      Checkerboard        : ok         
      Bit Spread          : ok         
      Bit Flip            : ok         
      Walking Ones        : ok         
      Walking Zeroes      : ok         
      8-bit Writes        : ok
      16-bit Writes       : ok
    
    Done.
    
  • Seit dem letzten Image 0.6.44 sind ein paar Tage vergangen und Kamil hat einige weitere Images veröffentlicht.

    0.6.45 - 0.6.49

    • 0.6.49: Disable force sram for rockchip snd soc,
    • 0.6.48: Test re-enabling mali for android on rockpro64,
    • 0.6.47: Disable mali as it causes kernel panic on rockpro64 for now,
    • 0.6.46: Rebase 4.4 kernel on rockchip-linux/kernel@f113aef,
    • 0.6.45: Improve rockpro64 support,
    • 0.6.45: Reduce timeouts to speed-up the boot (u-boot, extlinux)

    Alle Images haben das gleiche Problem, sie booten nicht. Ich bin leider kein Kernelguru, für mich sieht das aber nach falschen Settings für den Speicher aus. Seltsamerweise gibt es Boards, wie meines, was mit 0.6.44 stabil läuft bei anderen aber erst gar nicht startet !?!?

    Man liest auch mittlerweile einen gewissen Frust bei Kamil heraus, was ich sehr gut verstehen kann.

    Für mich die Kernfrage, was ist an 0.6.44 anders, als an den anderen?

  • Gute Nachrichten, wir haben ein Image das bootet. 0.6.50

    • 0.6.50: Disable mali and vdd_gpu, and overvolt big cores a little to increase stability,

    Kann sein das die HDMI-Ausgabe jetzt nicht geht, aber ihr wisst ja das ich ein Headless Junkie bin 😉 Was brauch ich einen Bildschirm, UART-Schnittstelle und fertig 🙂

    Nach einer Stunde testen, kann ich sagen, das läuft im Moment rund. Kurzer Memtest

    rock64@rockpro64:~$ sudo memtester 3072 1
    [sudo] password for rock64: 
    memtester version 4.3.0 (64-bit)
    Copyright (C) 2001-2012 Charles Cazabon.
    Licensed under the GNU General Public License version 2 (only).
    
    pagesize is 4096
    pagesizemask is 0xfffffffffffff000
    want 3072MB (3221225472 bytes)
    got  3072MB (3221225472 bytes), trying mlock ...locked.
    Loop 1/1:
      Stuck Address       : ok         
      Random Value        : ok
      Compare XOR         : ok
      Compare SUB         : ok
      Compare MUL         : ok
      Compare DIV         : ok
      Compare OR          : ok
      Compare AND         : ok
      Sequential Increment: ok
      Solid Bits          : ok         
      Block Sequential    : ok         
      Checkerboard        : ok         
      Bit Spread          : ok         
      Bit Flip            : ok         
      Walking Ones        : ok         
      Walking Zeroes      : ok         
      8-bit Writes        : ok
      16-bit Writes       : ok
    
    Done.
    
  • Image 0.6.51 ist da.

    • 0.6.51: Fix hdmi output, enable hdmi sound,

    Ok, das mit HDMI kann ich bestätigen, das geht jetzt wieder. Image war mir zu unstabil, bin wieder zurück auf 0.6.50

  • Kamil ist wieder da. war wohl ein wenig arbeiten 😉

    0.6.52 wird gerade gebaut

    Das soll sich ändern

    • 0.6.52: Enable dfi/dmc,
    • 0.6.52: Revert DMA patches,
    • 0.6.52: Make PCIE and HDMI an kernel module,

    SD-Karte liegt hier parat.

  • Images 0.11.x

    Images
    5
    0 Stimmen
    5 Beiträge
    323 Aufrufe
    FrankMF

    0.11.2: gitlab-ci-linux-build-187 released

    0.11.2: Update OMV install (to also be able to run OMV6)
  • ROCKPro64 - Das erste Mal

    Angeheftet Verschoben Hardware
    5
    1 Stimmen
    5 Beiträge
    821 Aufrufe
    FrankMF

    Ich kann heute die Fragen aller Fragen beantworten 🙂

    Damit ist leider die Frage immer noch unbeantwortet ob WLan und PCIe zusammen nutzbar ist!! Es geht!!

    Ich habe von MrFixit ein Testimage der RecalBox, benutzt das selbe Debian wie oben. Die Tage konnte man im IRC verfolgen, wie man dem Grundproblem näher kam und wohl einen Fix gebastelt hat, damit beides zusammen funktioniert. Mr.Fixit hat das in RecalBox eingebaut und ich durfte testen.

    # ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP8000> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 62:03:b0:d6:dc:b3 brd ff:ff:ff:ff:ff:ff 3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP8000> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether ac:83:f3:e6:1f:b2 brd ff:ff:ff:ff:ff:ff inet 192.168.178.27/24 brd 192.168.178.255 scope global wlan0 valid_lft forever preferred_lft forever inet6 2a02:908:1262:4680:ae83:f3ff:fee6:1fb2/64 scope global dynamic valid_lft 7145sec preferred_lft 3545sec inet6 fe80::ae83:f3ff:fee6:1fb2/64 scope link valid_lft forever preferred_lft forever # ls /mnt bin etc media recalbox sd.img test2.img boot home mnt root selinux tmp crypthome lib opt run srv usr dev lost+found proc sbin sys var # fdisk BusyBox v1.27.2 (2019-02-01 22:43:19 EST) multi-call binary. Usage: fdisk [-ul] [-C CYLINDERS] [-H HEADS] [-S SECTORS] [-b SSZ] DISK Change partition table -u Start and End are in sectors (instead of cylinders) -l Show partition table for each DISK, then exit -b 2048 (for certain MO disks) use 2048-byte sectors -C CYLINDERS Set number of cylinders/heads/sectors -H HEADS Typically 255 -S SECTORS Typically 63 # fdisk -l Disk /dev/mmcblk0: 15 GB, 15931539456 bytes, 31116288 sectors 486192 cylinders, 4 heads, 16 sectors/track Units: cylinders of 64 * 512 = 32768 bytes Device Boot StartCHS EndCHS StartLBA EndLBA Sectors Size Id Type /dev/mmcblk0p1 * 2,10,9 10,50,40 32768 163839 131072 64.0M c Win95 FAT32 (LBA) Partition 1 does not end on cylinder boundary /dev/mmcblk0p2 * 16,81,2 277,102,17 262144 4456447 4194304 2048M 83 Linux Partition 2 does not end on cylinder boundary /dev/mmcblk0p3 277,102,18 1023,254,63 4456448 31115263 26658816 12.7G 83 Linux Partition 3 does not end on cylinder boundary Disk /dev/nvme0n1: 233 GB, 250059350016 bytes, 488397168 sectors 2543735 cylinders, 12 heads, 16 sectors/track Units: cylinders of 192 * 512 = 98304 bytes Device Boot StartCHS EndCHS StartLBA EndLBA Sectors Size Id Type /dev/nvme0n1p1 1,0,1 907,11,16 2048 488397167 488395120 232G 83 Linux #

    Oben sieht man eine funktionierende WLan-Verbindung, das LAN-Kabel war entfernt. Unten sieht man die PCIe NVMe SSD, gemountet nach /mnt und Inhaltsausgabe.

    Das sollte beweisen, das der Ansatz der Lösung funktioniert. Leider kann ich nicht sagen, das es zum jetzigen Zeitpunkt stabil läuft. Ich habe einfach so Reboots, kann den Fehler aktuell aber nicht fangen. Mal sehen ob ich noch was finde.

    Aber, es ist ein Anfang!

  • Batocera Image released

    Images
    1
    0 Stimmen
    1 Beiträge
    268 Aufrufe
    Niemand hat geantwortet
  • ROCKPro64 - RP64.GPIO

    Angeheftet Verschoben Hardware
    6
    0 Stimmen
    6 Beiträge
    6k Aufrufe
    FrankMF

    Hallo zusammen,

    da ich weiß das dieser Artikel recht beliebt ist, wollen wir den heute mal aktualisieren. Vieles aus den vorherigen Beiträgen passt noch. Es gibt aber kleine Anpassungen.

    Hardware ROCKPro64v21. 2GB RAM Software Kamils Release 0.10.9 Linux rockpro64 5.6.0-1132-ayufan-g81043e6e109a #ayufan SMP Tue Apr 7 10:07:35 UTC 2020 aarch64 GNU/Linux Installation apt install python

    Danach laden wir das Projekt

    git clone https://github.com/Leapo/Rock64-R64.GPIO

    PIN Nummern anpassen

    cd Rock64-R64.GPIO/R64 nano _GPIO.py

    Datei ergänzen

    # Define GPIO arrays #ROCK_valid_channels = [27, 32, 33, 34, 35, 36, 37, 38, 64, 65, 67, 68, 69, 76, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 96, 97, 98, 100, 101, 102, 103, 104] #BOARD_to_ROCK = [0, 0, 0, 89, 0, 88, 0, 0, 64, 0, 65, 0, 67, 0, 0, 100, 101, 0, 102, 97, 0, 98, 103, 96, 104, 0, 76, 68, 69, 0, 0, 0, 38, 32, 0, 33, 37, 34, 36, 0, 35, 0, 0, 81, 82, 87, 83, 0, 0, 80, 79, 85, 84, 27, 86, 0, 0, 0, 0, 0, 0, 89, 88] #BCM_to_ROCK = [68, 69, 89, 88, 81, 87, 83, 76, 104, 98, 97, 96, 38, 32, 64, 65, 37, 80, 67, 33, 36, 35, 100, 101, 102, 103, 34, 82] ROCK_valid_channels = [52,53,152,54,50,33,48,39,41,43,155,156,125,122,121,148,147,120,36,149,153,42,45,44,124,126,123,127] BOARD_to_ROCK = [0,0,0,52,0,53,0,152,148,0,147,54,120,50,0,33,36,0,149,48,0,39,153,41,42,0,45,43,44,155,0,156,124,125,0,122,126,121,123,0,127] BCM_to_ROCK = [43,44,52,53,152,155,156,45,42,39,48,41,124,125,148,147,124,54,120,122,123,127,33,36,149,153,121,50]

    Abspeichern.

    Datei test.py anlegen

    nano test.py

    Inhalt

    #!/usr/bin/env python # Frank Mankel, 2018, LGPLv3 License # Rock 64 GPIO Library for Python # Thanks Allison! Thanks smartdave! import R64.GPIO as GPIO from time import sleep print("Output Test R64.GPIO Module...") # Set Variables var_gpio_out = 156 var_gpio_in = 155 # GPIO Setup GPIO.setwarnings(True) GPIO.setmode(GPIO.ROCK) GPIO.setup(var_gpio_out, GPIO.OUT, initial=GPIO.HIGH) # Set up GPIO as an output, with an initial state of HIGH GPIO.setup(var_gpio_in, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Set up GPIO as an input, pullup enabled # Test Output print("") print("Testing GPIO Input/Output:") while True: var_gpio_state_in = GPIO.input(var_gpio_in) var_gpio_state = GPIO.input(var_gpio_out) # Return State of GPIO if var_gpio_state == 0 and var_gpio_state_in == 1: GPIO.output(var_gpio_out,GPIO.HIGH) # Set GPIO to HIGH print("Input State: " + str(var_gpio_state_in)) # Print results print("Output State IF : " + str(var_gpio_state)) # Print results else: GPIO.output(var_gpio_out,GPIO.LOW) # Set GPIO to LOW print("Input State: " + str(var_gpio_state_in)) # Print results print("Output State ELSE: " + str(var_gpio_state)) # Print results sleep(0.5) exit() Beispiel

    Bild Text

    Wenn der Taster im Bild betätigt wird, soll die LED blinken.

    Wir benutzen folgende Ein- Augänge des ROCKPro64.

    # Set Variables var_gpio_out = 156 var_gpio_in = 155

    Das heißt:

    an Pin 1 (3,3V) kommt eine Strippe des Tasters an Pin 29 (Input) kommt eine Strippe des Tasters an Pin 31 (Output) kommt der Plus-Pol der LED an Pin 39 (GND) kommt der Minus-Pol der LED

    Somit wird auf den Eingang (Pin 29) bei Betätigung des Tasters 3,3 Volt angelegt. Damit wird dann der Eingang als High (1) erkannt. Die LED wird über den Ausgang (Pin 31) gesteuert.

    Starten kann man das Script mit

    python test.py

  • Lakka Image

    Images
    2
    0 Stimmen
    2 Beiträge
    824 Aufrufe
    FrankMF

    Lakka 2.2 Christmas Release

    lakka.png

    Quelle: http://www.lakka.tv/articles/2018/12/24/lakka-22-christmas-release/

  • NVMe-Platte einrichten

    ROCKPro64
    1
    0 Stimmen
    1 Beiträge
    1k Aufrufe
    Niemand hat geantwortet
  • Wichtig!

    Verschoben Archiv
    1
    0 Stimmen
    1 Beiträge
    724 Aufrufe
    Niemand hat geantwortet
  • stretch-minimal-rockpro64

    Verschoben Linux
    3
    0 Stimmen
    3 Beiträge
    985 Aufrufe
    FrankMF

    Mal ein Test was der Speicher so kann.

    rock64@rockpro64:~/tinymembench$ ./tinymembench tinymembench v0.4.9 (simple benchmark for memory throughput and latency) ========================================================================== == Memory bandwidth tests == == == == Note 1: 1MB = 1000000 bytes == == Note 2: Results for 'copy' tests show how many bytes can be == == copied per second (adding together read and writen == == bytes would have provided twice higher numbers) == == Note 3: 2-pass copy means that we are using a small temporary buffer == == to first fetch data into it, and only then write it to the == == destination (source -> L1 cache, L1 cache -> destination) == == Note 4: If sample standard deviation exceeds 0.1%, it is shown in == == brackets == ========================================================================== C copy backwards : 2812.7 MB/s C copy backwards (32 byte blocks) : 2811.9 MB/s C copy backwards (64 byte blocks) : 2632.8 MB/s C copy : 2667.2 MB/s C copy prefetched (32 bytes step) : 2633.5 MB/s C copy prefetched (64 bytes step) : 2640.8 MB/s C 2-pass copy : 2509.8 MB/s C 2-pass copy prefetched (32 bytes step) : 2431.6 MB/s C 2-pass copy prefetched (64 bytes step) : 2424.1 MB/s C fill : 4887.7 MB/s (0.5%) C fill (shuffle within 16 byte blocks) : 4883.0 MB/s C fill (shuffle within 32 byte blocks) : 4889.3 MB/s C fill (shuffle within 64 byte blocks) : 4889.2 MB/s --- standard memcpy : 2807.3 MB/s standard memset : 4890.4 MB/s (0.3%) --- NEON LDP/STP copy : 2803.7 MB/s NEON LDP/STP copy pldl2strm (32 bytes step) : 2802.1 MB/s NEON LDP/STP copy pldl2strm (64 bytes step) : 2800.7 MB/s NEON LDP/STP copy pldl1keep (32 bytes step) : 2745.5 MB/s NEON LDP/STP copy pldl1keep (64 bytes step) : 2745.8 MB/s NEON LD1/ST1 copy : 2801.9 MB/s NEON STP fill : 4888.9 MB/s (0.3%) NEON STNP fill : 4850.1 MB/s ARM LDP/STP copy : 2803.8 MB/s ARM STP fill : 4893.0 MB/s (0.5%) ARM STNP fill : 4851.7 MB/s ========================================================================== == Framebuffer read tests. == == == == Many ARM devices use a part of the system memory as the framebuffer, == == typically mapped as uncached but with write-combining enabled. == == Writes to such framebuffers are quite fast, but reads are much == == slower and very sensitive to the alignment and the selection of == == CPU instructions which are used for accessing memory. == == == == Many x86 systems allocate the framebuffer in the GPU memory, == == accessible for the CPU via a relatively slow PCI-E bus. Moreover, == == PCI-E is asymmetric and handles reads a lot worse than writes. == == == == If uncached framebuffer reads are reasonably fast (at least 100 MB/s == == or preferably >300 MB/s), then using the shadow framebuffer layer == == is not necessary in Xorg DDX drivers, resulting in a nice overall == == performance improvement. For example, the xf86-video-fbturbo DDX == == uses this trick. == ========================================================================== NEON LDP/STP copy (from framebuffer) : 602.5 MB/s NEON LDP/STP 2-pass copy (from framebuffer) : 551.6 MB/s NEON LD1/ST1 copy (from framebuffer) : 667.1 MB/s NEON LD1/ST1 2-pass copy (from framebuffer) : 605.6 MB/s ARM LDP/STP copy (from framebuffer) : 445.3 MB/s ARM LDP/STP 2-pass copy (from framebuffer) : 428.8 MB/s ========================================================================== == Memory latency test == == == == Average time is measured for random memory accesses in the buffers == == of different sizes. The larger is the buffer, the more significant == == are relative contributions of TLB, L1/L2 cache misses and SDRAM == == accesses. For extremely large buffer sizes we are expecting to see == == page table walk with several requests to SDRAM for almost every == == memory access (though 64MiB is not nearly large enough to experience == == this effect to its fullest). == == == == Note 1: All the numbers are representing extra time, which needs to == == be added to L1 cache latency. The cycle timings for L1 cache == == latency can be usually found in the processor documentation. == == Note 2: Dual random read means that we are simultaneously performing == == two independent memory accesses at a time. In the case if == == the memory subsystem can't handle multiple outstanding == == requests, dual random read has the same timings as two == == single reads performed one after another. == ========================================================================== block size : single random read / dual random read 1024 : 0.0 ns / 0.0 ns 2048 : 0.0 ns / 0.0 ns 4096 : 0.0 ns / 0.0 ns 8192 : 0.0 ns / 0.0 ns 16384 : 0.0 ns / 0.0 ns 32768 : 0.0 ns / 0.0 ns 65536 : 4.5 ns / 7.2 ns 131072 : 6.8 ns / 9.7 ns 262144 : 9.8 ns / 12.8 ns 524288 : 11.4 ns / 14.7 ns 1048576 : 16.0 ns / 22.6 ns 2097152 : 114.0 ns / 175.3 ns 4194304 : 161.7 ns / 219.9 ns 8388608 : 190.7 ns / 241.5 ns 16777216 : 205.3 ns / 250.5 ns 33554432 : 212.9 ns / 255.5 ns 67108864 : 222.3 ns / 271.1 ns