Skip to content

ROCKPro64 - RP64.GPIO

Angeheftet Verschoben Hardware
  • Heute mal eine Bastelstunde und direkt vorne weg eine dicke fette Warnung!

    Hiermit kann man seinen ROCKPro64 in Elektroschrott verwandeln! Ich hafte nicht für Schäden! Hirn einschalten vorher! 😉

    0_1537440456037_IMG_20180920_124609_ergebnis.jpg

    Für den Rock64 gibt es ein Projekt das die RPi.GPIO cloned. https://github.com/Leapo/Rock64-R64.GPIO

    A Python GPIO library for the Rock64 single-board computer (RPi.GPIO clone).

    GPIO - was ist das? Wiki

    Gut, damit läuft das aber nicht auf einem ROCKPro64, weil die Nummerierungen der Pins nicht passen. Aber dafür gibt es da draußen Leute, die sich solche Themen erarbeiten.

    Quelle: https://forum.pine64.org/showthread.php?tid=6419&pid=40185#pid40185

    Erstmal das Ergebnis 🙂

    Output Test R64.GPIO Module...
    This channel (ROCK 52) is already in use, continuing anyway.  Use GPIO.setwarnings(False) to disable warnings.
    
    Testing GPIO Input/Output:
    Output State ELSE: 1
    Output State IF : 0
    Output State ELSE: 1
    Output State IF : 0
    Output State ELSE: 1
    Output State IF : 0
    Output State ELSE: 1
    Output State IF : 0
    Output State ELSE: 1
    Output State IF : 0
    Output State ELSE: 1
    

    Video

    So, nun das Ganze mal von vorne.

    Software

    Wir brauchen Python

    sudo apt-get install python
    

    Danach laden wir das Projekt

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

    Wie oben schon geschrieben, passen die Pin Nummern nicht.

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

    In dieser Datei ergänzen wir wie folgt.

    # 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] 
    

    Das Ganze dann abspeichern.

    Im Pfad rock64@rockpro64v_2_1:~/Rock64-R64.GPIO$ eine Datei anlegen test.py

    #!/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 = 52
    #var_gpio_in = 18
    
    
    # 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 = GPIO.input(var_gpio_out)       # Return State of GPIO
            if var_gpio_state == str(0):
                    GPIO.output(var_gpio_out,1)                         # Set GPIO to LOW
                    print("Output State IF : " + str(var_gpio_state))              # Print results
            else:
                    GPIO.output(var_gpio_out,0)                         # Set GPIO to LOW
                    print("Output State ELSE: " + str(var_gpio_state))
            sleep(0.5)
    exit()
    

    Was fehlt noch? Der Anschluß der LED. In meinem Beispiel ist die LED wie folgt angeschlossen.

    • Plus(+) der LED an PIN 3 (GPIO1_C4)
    • Minus(-)- der LED an Pin 39 (GND)

    Zum korrekten Anschließen der LED empfehle ich die Lektüre dieses Beitrages!


    Starten des Scriptes

    Um das Script zu starten benutzt man

    sudo python test.py
    

    Ohne sudo bekam ich Fehlermeldungen.


    Fazit

    Es gibt da für mich einige Unbekannte bei dem Thema. Das wären

    • Stimmt die Nummerierung, ist sie komplett?
    • GPIO.setmode(GPIO.ROCK) ermöglichte mir dann mit 52 endlich was zu finden?

    Wir brauchen eine vernünftige Auflistung der Nummern zu den PINs. Gibt es das ? Stimmen alle PIN-Nummern!?

    Bitte dran denken, da kann man sich evt. den ROCKPro64 mit schrotten! Also schön vorsichtig!!

    Danke an Allison und smartdave für die Arbeit!

    Ach, fast vergessen. Ich hab von Python recht wenig Ahnung, macht aber Spaß weil man unkompliziert und schnell zu Ergebnissen kommt.

  • 0_1537460597625_ROCKPro64_GPIO_Reference.png

  • Hiermit kann man seinen ROCKPro64 in Elektroschrott verwandeln! Ich hafte nicht für Schäden! Hirn einschalten vorher! 😉

    Ich bin Euch noch was schuldig geblieben. Nur Ausgänge steuern ist blöd, man braucht auch Eingänge 🙂

    0_1537522069566_Input_ergebnis.jpg

    Beispiel

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

    Script

    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 (Putput) 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.

    #!/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 == str(0) and var_gpio_state_in == str(1):
                    GPIO.output(var_gpio_out,1)                             # 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,0)                             # 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()
    
  • Das Projekt (ein Fork) ist aktualisiert und kann jetzt für den ROCK64 und den ROCKPro64 benutzt werden.

    https://github.com/mrfixit2001/Rock64-R64.GPIO/blob/master/R64/_GPIO.py

    Mit

    setrock('ROCKPRO64')
    

    kann man das Script für den ROCKPro64 anpassen.

    Quelle: https://forum.pine64.org/showthread.php?tid=6419&pid=41270#pid41270

    Sobald ich mal Zeit und Lust habe, werde ich das Testen und hier berichten.

  • Die Coderin von dieser Library Leapo schreibt folgendes

    For anyone using my GPIO library: Just fixed a pretty major bug with GPIO.input, where it would return "1" or "0" as a string rather than as an integer. This fix greatly improves compatibility with scripts written originally for RPI.GPIO. Edit: I've also also fixed Python 3 compatibility (library would crash-out under python 3 if certain debug text was called for).

    Quelle: discordapp.com

    Für den ein oder anderen, der das nutzt vermutlich sehr interessant.

  • 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
    

  • ROCKPro64 - LAN Schnittstelle

    Verschoben ROCKPro64
    1
    0 Stimmen
    1 Beiträge
    368 Aufrufe
    Niemand hat geantwortet
  • Der 3. ROCKPro64

    ROCKPro64
    3
    0 Stimmen
    3 Beiträge
    911 Aufrufe
    FrankMF

    Nachdem ich jetzt mein NAS neu gemacht habe, schauen wir mal, was die Chinesen geliefert haben. Bestellt hatte ich

    ROCKPro64 v2.1 2GB RAM Kühlkörper Netzteil 3A USB-Adapter für eMMC-Modul

    Endlich habe ich mal an den USB-Adapter für das eMMC-Modul gedacht 🙂

    0_1540029624802_IMG_20181020_115348_ergebnis.jpg

    Was ist mir aufgefallen? Das Versionsdatum ist neu (siehe oben) Die PCIe NVMe Karte ist neu

    Bei der PCIe NVMe Karte liegt eine Abstandshülse aus Messing und eine winzig kleine Schraube bei. Damit bekomme ich aber nicht die NVMe-SSD befestigt. Ich habe dann gemurkst 😉 Da sollte Pine64 unbedingt nachbessern!

    So sieht das dann zusammengebaut aus.

    0_1540029756582_IMG_20181020_115425_ergebnis.jpg

    0_1540029767082_IMG_20181020_115438_ergebnis.jpg

    Da ich ein paarmal gelesen hatte, das Leute Probleme mit dem PCIe NVMe Adapter hatten, direkt als erstes mal ein Test ob das reibungslos funktioniert.

    Sys rock64@rockpro64:/mnt$ uname -a Linux rockpro64 4.4.132-1075-rockchip-ayufan-ga83beded8524 #1 SMP Thu Jul 26 08:22:22 UTC 2018 aarch64 aarch64 aarch64 GNU/Linux lspci rock64@rockpro64:/mnt$ sudo lspci -vvv [sudo] password for rock64: 00:00.0 PCI bridge: Rockchip Inc. RK3399 PCI Express Root Port Device 0100 (prog-if 00 [Normal decode]) Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort+ <TAbort+ <MAbort+ >SERR+ <PERR+ INTx- Latency: 0 Interrupt: pin A routed to IRQ 238 Bus: primary=00, secondary=01, subordinate=01, sec-latency=0 I/O behind bridge: 00000000-00000fff Memory behind bridge: fa000000-fa0fffff Prefetchable memory behind bridge: 00000000-000fffff Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- <SERR- <PERR- BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: [80] Power Management version 3 Flags: PMEClk- DSI- D1+ D2- AuxCurrent=0mA PME(D0+,D1+,D2-,D3hot+,D3cold-) Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME+ Capabilities: [90] MSI: Enable+ Count=1/1 Maskable+ 64bit+ Address: 00000000fee30040 Data: 0000 Masking: 00000000 Pending: 00000000 Capabilities: [b0] MSI-X: Enable- Count=1 Masked- Vector table: BAR=0 offset=00000000 PBA: BAR=0 offset=00000008 Capabilities: [c0] Express (v2) Root Port (Slot+), MSI 00 DevCap: MaxPayload 256 bytes, PhantFunc 0 ExtTag- RBE+ DevCtl: Report errors: Correctable+ Non-Fatal+ Fatal+ Unsupported+ RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+ MaxPayload 128 bytes, MaxReadReq 512 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend- LnkCap: Port #0, Speed 5GT/s, Width x4, ASPM L1, Exit Latency L0s <256ns, L1 <8us ClockPM- Surprise- LLActRep- BwNot+ ASPMOptComp+ LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk- ExtSynch- ClockPM- AutWidDis- BWInt+ AutBWInt+ LnkSta: Speed 5GT/s, Width x4, TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt- SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise- Slot #0, PowerLimit 0.000W; Interlock- NoCompl- SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg- Control: AttnInd Off, PwrInd Off, Power+ Interlock- SltSta: Status: AttnBtn- PowerFlt- MRL+ CmdCplt- PresDet- Interlock- Changed: MRL- PresDet- LinkState- RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna+ CRSVisible- RootCap: CRSVisible- RootSta: PME ReqID 0000, PMEStatus- PMEPending- DevCap2: Completion Timeout: Range B, TimeoutDis+, LTR+, OBFF Via message ARIFwd+ DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled ARIFwd- LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis- Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS- Compliance De-emphasis: -6dB LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1- EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest- Capabilities: [100 v2] Advanced Error Reporting UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol- CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr- CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+ AERCap: First Error Pointer: 00, GenCap+ CGenEn- ChkCap+ ChkEn- Capabilities: [274 v1] Transaction Processing Hints Interrupt vector mode supported Device specific mode supported Steering table in TPH capability structure Kernel driver in use: pcieport 01:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller SM961/PM961 (prog-if 02 [NVM Express]) Subsystem: Samsung Electronics Co Ltd NVMe SSD Controller SM961/PM961 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0 Interrupt: pin A routed to IRQ 237 Region 0: Memory at fa000000 (64-bit, non-prefetchable) [size=16K] Capabilities: [40] Power Management version 3 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-) Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME- Capabilities: [50] MSI: Enable- Count=1/32 Maskable- 64bit+ Address: 0000000000000000 Data: 0000 Capabilities: [70] Express (v2) Endpoint, MSI 00 DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimited ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset+ SlotPowerLimit 0.000W DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported- RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+ FLReset- MaxPayload 128 bytes, MaxReadReq 512 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend- LnkCap: Port #0, Speed 8GT/s, Width x4, ASPM L1, Exit Latency L0s unlimited, L1 <64us ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+ LnkCtl: ASPM L1 Enabled; RCB 64 bytes Disabled- CommClk- ExtSynch- ClockPM+ AutWidDis- BWInt- AutBWInt- LnkSta: Speed 5GT/s, Width x4, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt- DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR+, OBFF Not Supported DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis- Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS- Compliance De-emphasis: -6dB LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, EqualizationPhase1- EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest- Capabilities: [b0] MSI-X: Enable+ Count=8 Masked- Vector table: BAR=0 offset=00003000 PBA: BAR=0 offset=00002000 Capabilities: [100 v2] Advanced Error Reporting UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol- UESvrt: DLP+ SDES+ TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol- CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr- CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+ AERCap: First Error Pointer: 00, GenCap+ CGenEn- ChkCap+ ChkEn- Capabilities: [148 v1] Device Serial Number 00-00-00-00-00-00-00-00 Capabilities: [158 v1] Power Budgeting <?> Capabilities: [168 v1] #19 Capabilities: [188 v1] Latency Tolerance Reporting Max snoop latency: 0ns Max no snoop latency: 0ns Capabilities: [190 v1] L1 PM Substates L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+ PortCommonModeRestoreTime=10us PortTPowerOnTime=10us L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1- T_CommonMode=0us LTR1.2_Threshold=0ns L1SubCtl2: T_PwrOn=10us Kernel driver in use: nvme

    Da sieht alles gut aus. x4 alles Bestens!

    iozone rock64@rockpro64:/mnt$ sudo iozone -e -I -a -s 100M -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.429 $ Compiled for 64 bit mode. Build: linux Contributors:William Norcott, Don Capps, Isom Crawford, Kirby Collins Al Slater, Scott Rhine, Mike Wisner, Ken Goss Steve Landherr, Brad Smith, Mark Kelly, Dr. Alain CYR, Randy Dunlap, Mark Montague, Dan Million, Gavin Brebner, Jean-Marc Zucconi, Jeff Blomberg, Benny Halevy, Dave Boone, Erik Habbinga, Kris Strecker, Walter Wong, Joshua Root, Fabrice Bacchella, Zhenghua Xue, Qin Li, Darren Sawyer, Vangel Bojaxhi, Ben England, Vikentsi Lapa. Run began: Sat Oct 20 10:08:28 2018 Include fsync in write timing O_DIRECT feature enabled Auto Mode File size set to 102400 kB Record Size 4 kB Record Size 16 kB Record Size 512 kB Record Size 1024 kB Record Size 16384 kB Command line used: iozone -e -I -a -s 100M -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2 Output is in kBytes/sec Time Resolution = 0.000001 seconds. 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 102400 4 63896 108269 91858 95309 32845 73173 102400 16 123393 236653 273766 275807 118450 199130 102400 512 471775 570571 484612 496942 441345 575817 102400 1024 544229 642558 508895 511834 486506 647765 102400 16384 1044520 1100322 1069825 1092146 1089301 1086757 iozone test complete.

    Das sieht nicht optimal aus, schau ich mir später an. Das hier soll nur ein kurzer Test sein ob das Board rennt 🙂

    Nachdem ich mittlerweile zwei ROCKPro64 im "produktiven" Einsatz habe, war es immer sehr mühsam mal eben was zu testen. Man will die anderen ja nicht immer ausmachen, dran rumhantieren usw. Deswegen jetzt der dritte, der im Moment dann die Rolle des Testkandidaten einnimmt. Ab sofort kann ich wieder nach Lust und Laune, neue Images testen usw.

  • Recover Button

    Hardware
    2
    0 Stimmen
    2 Beiträge
    788 Aufrufe
    FrankMF

    Ich hab das mal ausprobiert.

    Den Recover Button so lange drücken, bis folgendes erscheint.

    In: serial@ff1a0000 Out: serial@ff1a0000 Err: serial@ff1a0000 Model: Pine64 RockPro64 rockchip_dnl_mode = 1 mode rockchip_dnl_mode = 2 mode rockchip_dnl_mode = 3 mode rockchip_dnl_mode = 4 mode entering maskrom mode...

    RKFlashTool clonen

    root@thinkpad:/home/frank/test# git clone https://github.com/rockchip-linux/rkflashtool Klone nach 'rkflashtool' ... remote: Counting objects: 663, done. remote: Total 663 (delta 0), reused 0 (delta 0), pack-reused 663 Empfange Objekte: 100% (663/663), 114.94 KiB | 0 bytes/s, Fertig. Löse Unterschiede auf: 100% (367/367), Fertig.

    In das Verzeichnis wechseln

    root@thinkpad:/home/frank/test# cd rkflashtool/

    Inhalt

    root@thinkpad:/home/frank/test/rkflashtool# ls doc Makefile rkcrc.h rkflashtool.h rkparametersblock examples README rkflashall rkmisc rkunpack.c fixversion.sh release.sh rkflashloader rkpad rkunsign flashuboot rkcrc.c rkflashtool.c rkparameters version.h

    RKFlashtool bauen

    root@thinkpad:/home/frank/test/rkflashtool# make gcc -O2 -W -Wall -I/usr/include/libusb-1.0 rkflashtool.c -o rkflashtool -lusb-1.0 gcc -O2 -W -Wall -I/usr/include/libusb-1.0 rkcrc.c -o rkcrc -lusb-1.0 gcc -O2 -W -Wall -I/usr/include/libusb-1.0 rkunpack.c -o rkunpack -lusb-1.0

    Ich habe ein USB-A to USB-A Kabel vom USB-C Port des ROCKPro64 zu meinem Notebook hergestellt.

    root@thinkpad:/home/frank/test/rkflashtool# sudo ./rkflashtool v rkflashtool: info: rkflashtool v5.2 rkflashtool: info: Detected RK3399... rkflashtool: info: interface claimed rkflashtool: info: MASK ROM MODE rkflashtool: info: chip version: -..-

    Ok, Verbindung steht.

    Eine Übersicht der Befehle

    root@thinkpad:/home/frank/test/rkflashtool# sudo ./rkflashtool rkflashtool: info: rkflashtool v5.2 rkflashtool: fatal: usage: rkflashtool b [flag] reboot device rkflashtool l <file load DDR init (MASK ROM MODE) rkflashtool L <file load USB loader (MASK ROM MODE) rkflashtool v read chip version rkflashtool n read NAND flash info rkflashtool i offset nsectors >outfile read IDBlocks rkflashtool j offset nsectors <infile write IDBlocks rkflashtool m offset nbytes >outfile read SDRAM rkflashtool M offset nbytes <infile write SDRAM rkflashtool B krnl_addr parm_addr exec SDRAM rkflashtool r partname >outfile read flash partition rkflashtool w partname <infile write flash partition rkflashtool r offset nsectors >outfile read flash rkflashtool w offset nsectors <infile write flash rkflashtool p >file fetch parameters rkflashtool P <file write parameters rkflashtool e partname erase flash (fill with 0xff) rkflashtool e offset nsectors erase flash (fill with 0xff)
  • 0 Stimmen
    3 Beiträge
    2k Aufrufe
    FrankMF

    Echtes Problem gefunden.

    Wenn die eMMC-Karte verbaut ist, ich mit der SD-Karte starte (Jumper gesetzt), kann ich keinen Kernel updaten. Es ist alles ganz normal installiert, er startet aber immer den letzten vorhandenen.

    Jumper entfernt, eMMC-Modul entfernt!

    Bootvorgang mit unveränderter SD-Karte, neuer Kernel wird geladen.

    OK, das verstehe ich im Moment überhaupt nicht !?!?!?

  • Image 0.6.57 - NVMe paar Notizen

    Verschoben Archiv
    1
    0 Stimmen
    1 Beiträge
    642 Aufrufe
    Niemand hat geantwortet
  • Wichtig!

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

    Verschoben Linux
    4
    0 Stimmen
    4 Beiträge
    1k Aufrufe
    FrankMF
    Neue Version 0.7.3

    Soll gefixt sein.

    USB2/3 PCIe LED's LED's

    Weiße LED starten nach dem Booten dauerhaft OK

    PCIe

    Treiber soll drin sein, aber die 3,3V werden nicht zur Karte durchgeschaltet. Somit funktioniert PCIe nicht.
    Nicht OK

    USB2

    USB-Funkadapter wird erkannt

    Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 002: ID 1113:3163 Medion AG Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

    Funktastur getestet OK

    USB3

    Angeschlossene SSD wird erkannt OK

    Kurzer Speed-Test. Bitte dran denken, wir haben hier noch kein optimiertes Release, sondern einen ersten Gehversuch. Da sind noch ganz viele Dinge anzupassen, was sicherlich noch Wochen, wenn nicht Monate dauert! Also, die Messergebnisse mit der nötigen Vorsicht genießen. Und dran denken, wenn @tkaiser das Ding richtig untersucht, dann haben wir auch ordentliche Meßergebnisse! 😉

    Haupt-PC

    2,5Zoll am USB3-Port

    sudo dd if=/dev/zero of=sd.img bs=1M count=4096 conv=fdatasync [sudo] Passwort für frank: 4096+0 Datensätze ein 4096+0 Datensätze aus 4294967296 bytes (4,3 GB, 4,0 GiB) copied, 38,171 s, **113 MB/s** ROCKPro64

    Ich benutze eine SAN Disk 240GB SSD an einem Inateck USB 3.0 2,5 Zoll Adapter.

    Info zum USB-Adapter

    lsusb Bus 004 Device 002: ID 174c:55aa ASMedia Technology Inc. ASM1051E SATA 6Gb/s bridge, ASM1053E SATA 6Gb/s bridge, ASM1153 SATA 3Gb/s bridge

    2,5 Zoll SSD am USB2-Port

    sudo dd if=/dev/zero of=sd.img bs=1M count=4096 conv=fdatasync 4096+0 records in 4096+0 records out 4294967296 bytes (4.3 GB, 4.0 GiB) copied, 160.058 s, **26.8 MB/s**

    2,5 Zoll SSD am USB3 Port

    sudo dd if=/dev/zero of=sd.img bs=1M count=4096 conv=fdatasync 4096+0 records in 4096+0 records out 4294967296 bytes (4.3 GB, 4.0 GiB) copied, 36.2588 s, **118 MB/s**

    Der @tkaiser erreicht deutlich höhere Geschwindigkeiten. Bis zu 400 MB/s. Hier nachzulesen.

    Wenn ich so einen iozone Test mache wie der Thomas, dann erreiche ich ähnliche Werte

    sudo iozone -a -g 1000m -s 1000m -i 0 -i 1 -r 16384K Iozone: Performance Test of File I/O Version $Revision: 3.429 $ Compiled for 64 bit mode. Build: linux Contributors:William Norcott, Don Capps, Isom Crawford, Kirby Collins Al Slater, Scott Rhine, Mike Wisner, Ken Goss Steve Landherr, Brad Smith, Mark Kelly, Dr. Alain CYR, Randy Dunlap, Mark Montague, Dan Million, Gavin Brebner, Jean-Marc Zucconi, Jeff Blomberg, Benny Halevy, Dave Boone, Erik Habbinga, Kris Strecker, Walter Wong, Joshua Root, Fabrice Bacchella, Zhenghua Xue, Qin Li, Darren Sawyer, Vangel Bojaxhi, Ben England, Vikentsi Lapa. Run began: Sat May 26 05:16:40 2018 Auto Mode Using maximum file size of 1024000 kilobytes. File size set to 1024000 kB Record Size 16384 kB Command line used: iozone -a -g 1000m -s 1000m -i 0 -i 1 -r 16384K Output is in kBytes/sec Time Resolution = 0.000001 seconds. 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 383912 348782 1515506 1659394

    Da muss ich den Thomas nochmal was zu fragen. ?? 🤔

    UART2

    Und zum Schluss ist mir noch aufgefallen, das die UART2 Schnittstelle jetzt funktioniert 🙂 Ok, den Adapter, der morgen kommt, habe ich dann umsonst bestellt. LOL

    OK

  • ROCKPro64 - Übersicht

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

    Bericht der Zeitschrift Make.

    Link Preview Image Bastelrechner NanoPC-T4 und ROCKPro64: Mehr Raspi-Konkurrenz mit Rockchip

    Leistungsfähige Raspi-Konkurrenten setzen zunehmend auf den Chip-Hersteller Rockchip. Zwei neue RK3399-Boards eröffnen die Alternative: kompakt oder günstig?

    favicon

    Make (www.heise.de)