Skip to content

Serielle Konsole UART2

Angeheftet Verschoben Hardware
  • Hier mal die Info's sammeln zur seriellen Konsole.

    • Baudrate: 1500000
    • Data bits: 8
    • Parity: N
    • Stop bits: 1

    Quelle: http://opensource.rock-chips.com/images/f/f9/RK3399_Linux_Debain_V1.1_Development_Guide170620.pdf

    0_1526196275573_Rockpro64 Pi-2 Connector ver0.2.png

    Es sieht so aus, das es auf den SOC's von Pine64 keinen separaten Steckplatz für die serielle Konsole gibt, so wie ich das von den Bananen her kenne. Man nutzt wohl direkt den UART2 Anschluss des Expansions Steckplatzes. Da hätten wir dann:

    Die rote Ader nicht anschließen!

    • Nr. 6 GND - schwarz
    • Nr. 8 UART2_TX - weiß
    • Nr. 10 UART2_ RX - grün

    Update vom 18. März 2019

    Seit dem Image 0.7.14 stört die Verbindung an Pin 10 das Booten des ROCKPro64, wenn dieser mit einem WiFi-Modul und einer PCIe-Karte bestückt ist. Das entfernen der Verbindung löst das Problem, man hat dann aber nur noch lesend Zugriff und kann keine Kommandos über die Konsole absetzen! Aber, das sollte das kleiner Problem sein. Die Entwickler sind informiert, keine Ahnung ob man das Fixen kann.

    0_1526803326819_konsole3.jpg

    Als Gedankenstütze, vom ROCK64 https://forum.pine64.org/showthread.php?tid=5008

    Damit sollten die vorhandenen USB-Adapter genauso wie bei den Bananen funktionieren!

    Achtung!

    Durch die schnelle Übertragungsrate kommt es bei verschiedenen Adaptern zu Darstellungsfehlern. Ein Adapter bei mir funktioniert nicht, fehlerhafte Darstellung. Mein billigster Adapter funktioniert, einwandfreie Darstellung.

    Also, wenn ihr Probleme habt, einfach mal einen anderen Adapter ausprobieren. Die anderen Angaben oben funktionieren!

    Tools zum Flashen

  • Ich habe ja einige Adapter ausprobiert, habe jetzt eine ordentliche Sammlung davon, aber habe jetzt einen gefunden der mir wohl alles anzeigt 😉

    Problem bei vielen Adaptern scheint die hohe Übertragungsrate zu sein. Wenn ihr als Ausgabe nur Müll bekommt, könnt ihr den Adapter direkt an die Seite legen, korrekter Anschluss vorausgesetzt!

    Einen Adapter den ich jetzt die ganze Zeit benutzt hatte, war folgender.

     Bus 003 Device 017: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR mySmartUSB light
    

    Ging, hatte aber das Problem das beim ersten Start die Ausgaben des U-Boots nicht vernünftig angezeigt werden. Wenn man mit den Platinen rumspielt, ist das sehr unvorteilhaft.

    Ok, nächster Versuch

    Bus 003 Device 016: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
    

    Und der zeigt jetzt auch den U-Boot vernünftig an. Benutzt wird folgendes Linux.

    rock64@rockpro64:~$ 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
    

    Ausgabe

    channel 0 training pass!
    
    channel 1 training pass!
    
    change freq to 800MHz 1,0
    
    ch 0 ddrconfig = 0x101, ddrsize = 0x2020
    
    ch 1 ddrconfig = 0x101, ddrsize = 0x2020
    
    pmugrf_os_reg[2] = 0x3AA1FAA1, stride = 0xD
    
    OUT
    
    U-Boot SPL board init
    
    
    
    U-Boot SPL 2017.09-g03a332b (May 27 2018 - 18:34:10)
    
    booted from SD
    
    Trying to boot from MMC2
    
    NOTICE:  BL31: v1.3(debug):d98d16e
    
    NOTICE:  BL31: Built : 15:03:07, May 10 2018
    
    NOTICE:  BL31: Rockchip release version: v1.1
    
    INFO:    GICv3 with legacy support detected. ARM GICV3 driver initialized in EL3
    
    INFO:    Using opteed sec cpu_context!
    
    INFO:    boot cpu mask: 0
    
    INFO:    plat_rockchip_pmu_init(1151): pd status 3e
    
    INFO:    BL31: Initializing runtime services
    
    WARNING: No OPTEE provided by BL2 boot loader, Booting device without OPTEE initialization. SMC`s destined for OPTEE will return SMC_UNK
    
    ERROR:   Error initializing runtime service opteed_fast
    
    INFO:    BL31: Preparing for EL3 exit to normal world
    
    INFO:    Entry point address = 0x200000
    
    INFO:    SPSR = 0x3c9
    
    
    
    
    
    U-Boot 2017.09-g03a332b (May 27 2018 - 18:34:23 +0000), Build: jenkins-linux-build-rock-64-239
    

    So muss das sein. 🙂

    Mach ich selten, aber um es anderen etwas einfacher zu machen hier ein Amazon Link.

    0_1527938581023_Adapter_bearbeitet2.jpg

    Anschluss

    ROCKPro64 - Adapter

    • GND (6) - GND
    • TX (8) - RX
    • RX (10) - TX

    Zu Pin 10 bitte das Update im ersten Beitrag beachten!

    Die Brücke des Adapters steckt auf VCC / 3V3 und der Anschluss 5V ist frei. Das ist wohl ein Spannungsausgang, den man wahlweise auf 3V3 oder 5V schalten kann, den wir aber nicht benötigen!

    Die Einstellungen der seriellen Schnittstelle findet ihr im Eingangsthread.

    Ihr könnt natürlich, wenn ihr euch einen ROCKPro64 bestellt, direkt einen USB-Adapter mitbestellen!
    https://www.pine64.org/?product=padi-serial-console
    Ich setze mal voraus, das der funktioniert.

  • @FrankM
    Der anschluss 10 RX auf dem Rockpro64 V2.1 und warscheinlich auch anderen da das auf deiner Seite irgendwo erwähnt wurde muss beim booten frei sein.

    Es sieht so aus als ob der Prozessor darüber Spannung bekommt da der TX pin vom adapter "high" gezogen wird da scheint ein fehler in dem Layout oder Prozessor zu sein so das eine versorgung durch diesen pin auch "Rückwärts" funktioniert.

    Sehen kann man das wenn man GND und den pin 10 belegt, Spannung auf das Bord gibt und dann wieder trennt. Danach bleibt die Power LED leicht am glimmen. Nur anstecken des Serial converters reicht da nicht, dabei leuchtet die LED nicht auf. Außerdem geht das auch nur mit 5V Logic Level sonst kommt nicht genug an der LED an um es optisch zu erfassen das müsste man dann Messen, ist aber in jedem fall so nicht richtig.

    Sven

  • Ich mache das seit dem ersten Tag so, noch nie Probleme mit gehabt.

    Das mit der Rückspannung ist mir auch schon aufgefallen.

  • @tux_on_tour

    Hallo Sven,

    ich muss mich zu dem Thema noch mal äußern.

    Du hattest Recht! 👏

    Seit dem Image 0.7.14 (wifi & pcie) hatte ich das Problem das der ROCKPro64 nicht mehr booten möchte. Ein entfernen von Pin 10 löste das Problem.

    Vielen Dank nachträglich!!

    Nachteil, man kann von der Konsole aus nichts mehr machen!

    Ich werde das in meinen Anleitungen entsprechend ändern!

  • Es gibt Berichte im IRC, das es bei einigen auch mit der Verbindung zu Pin 10 geht. Vielleicht auch abhängig vom Adapter!? Im Zweifel einfach mal ausprobieren.

  • @FrankM
    Hallo, ich bin noch ganz unerfahren mit Pi's.
    Wenn ich jetzt eine Physische verbindung mit einer USB-TTL UART Konsole habe,
    wie stelle ich da eine Verbindung her?
    Ich habe Linux auch auf meinem Rechner drauf und bin nicht ganz begriffstuzig, was Konsolen angeht.
    Vielen Dank

    Cri

  • Ich verweise mal auf einen Artikel auf einer Webseite von mir, der Einsteiger Niveau hat.
    https://frank-mankel.de/wichtig/serielle-konsole

    Wenn es dann noch Probleme gibt, einfach fragen.

    Und beachte bitte, das wir hier nicht über PIs schreiben, sondern über ROCKPros. Da könnte es kleine Unterschiede geben. https://www.raspberrypi.org/documentation/configuration/uart.md

  • 0 Stimmen
    1 Beiträge
    292 Aufrufe
    Niemand hat geantwortet
  • Serielle Konsole UART2 (2)

    Angeheftet Hardware
    1
    0 Stimmen
    1 Beiträge
    212 Aufrufe
    Niemand hat geantwortet
  • 0 Stimmen
    1 Beiträge
    420 Aufrufe
    Niemand hat geantwortet
  • ROCKPro64 - Das erste Mal

    Angeheftet Verschoben Hardware
    5
    1 Stimmen
    5 Beiträge
    807 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!

  • ROCKPro WLan Modul

    Verschoben ROCKPro64
    1
    0 Stimmen
    1 Beiträge
    684 Aufrufe
    Niemand hat geantwortet
  • Benchmark Script

    ROCKPro64
    2
    0 Stimmen
    2 Beiträge
    578 Aufrufe
    FrankMF
    Mainline

    Mein gekürztes Ergebnis auf einem ROCKPro64 v2.0 mit 4GB RAM und 4.18er Kernel, dieser ROCK benutzt eine SD-Karte!

    Gekürzt

    Distributor ID: Ubuntu Description: Ubuntu 18.04.1 LTS Release: 18.04 Codename: bionic Architecture: arm64 Uptime: 16:14:56 up 4 min, 1 user, load average: 0.08, 0.02, 0.01 Linux 4.18.0-rc5-1048-ayufan-g69e417fe38cf (rockpro64) 07/27/18 _aarch64_ (6 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0.54 0.00 0.74 0.39 0.00 98.33 Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn mmcblk0 20.63 634.58 48.26 168380 12804 nvme0n1 0.14 4.01 0.00 1064 0 total used free shared buff/cache available Mem: 3.8G 241M 3.4G 19M 201M 3.5G Swap: 0B 0B 0B ##########################################################################

    Komplett -> http://ix.io/1ix7

  • Mainline Kernel 4.20.x

    Verschoben Images
    26
    0 Stimmen
    26 Beiträge
    4k Aufrufe
    FrankMF

    4.20.0-1090-ayufan released

    Änderungen -> https://gitlab.com/ayufan-repos/rock64/linux-mainline-kernel/commits/master

  • stretch-minimal-rockpro64

    Verschoben Linux
    3
    0 Stimmen
    3 Beiträge
    979 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