Skip to content

SPI funktioniert

ROCKPro64
  • Kamil hat dann mal erste Erfolge mit dem SPI flashen ✌

    Fangen wir nochmal kurz von vorne an, für die unter Euch, die nur Bahnhof verstehen 😉

    Der ROCKPro64 besitzt folgenden Speicher

    • 128Mb SPI boot Flash

    SPI müsste dabei die Kommunikation bezeichnen. Serial Peripheral interface

    Fassen wir zusammen, auf dem Board sind 128MB Speicher, die man beschreiben kann. Dort hin kopiert man den u-boot um dann von angeschlossenen USB-Geräten zu booten. Im Moment wären theoretisch

    • USB2
    • USB3

    möglich. Dazu hat Kamil zwei Images erstellt.

    • u-boot-erase-spi-rockpro64.img.xz
    • u-boot-flash-spi-rockpro64.img.xz

    Download

    Also, ein Image zum flashen des Speichers und ein Image um den Speicher wieder zu löschen. Ansonsten hat man nämlich ein Problem von eMMC oder SD-Karte zu booten.

    Das Flash-Image auf eine SD-Karte bügeln, diese in den ROCKPro64 und damit starten. Wenn die weiße Power LED anfängt zu blinken, ist der Schreibvorgang beendet.

    Hier ein Log des erfolgreichen Vorganges https://pastebin.com/vxTazYsx

    Den ROCKPro64 ausmachen, die SD-Karte entnehmen. Ein Boot fähiges USB-Laufwerk erstellen. Also das 0.7.9 Image z.B. auf die USB-Platte schreiben. Das USB-Laufwerk anschließen und den ROCKPro64 einschalten.

    Der u-boot im SPI wird geladen und sucht nach einem bootfähigen Gerät, wenn er eines findet, wird das System geladen.

    Erfolgreich habe ich das mit einer SSD, dem USB3-to-SATA Adapter von Pine64 getestet. Leider geht das im Moment nur am USB2, zu mindestens bei mir. Hab mal Kamil Bescheid gesagt 😉

  • Update 9.8.2018

    Ich kann aktuell den SPI nicht mehr löschen. Das Erase-Image macht hier nichts. Ihr solltet dringend davon absehen, das im Moment auszuprobieren!!

    Laut Kamil kann man den SPI noch auf andere Weise abschalten. Dazu brückt man die Pins 23(CLK) und 25(GND) auf dem Pi-2 Connector. https://forum.frank-mankel.org/topic/28/rockpro64-übersicht/4

    Ausprobiert, funktioniert.

    Sorry, ich hatte eine defekte SD-Karte erwischt! Das Erase-Image geht einwandfrei!

  • Das Booten vom USB3 Port funktioniert, wenn man einen aktiven USB3 Hub dazwischen hängt. Vermutlich ein Timing Problem (Spekulation).

    Eingesetzte Hardware

    • USB3-to-SATA Adapter von pine64
    • Samsung 860 PRO 256GB
    • deleyCON 4port USB3 Hub (nix besonderes)

  • Wie ich jetzt mehrmals festgestellt habe, ist das System von der USB3 Platte instabil.

     [111985.654653] EXT4-fs error (d4: inode #16354: comm systemd: r[111985.837719] EXT4-fs error 
    

    Das killt dann das komplette System.

    Ob das an meiner Hardware liegt, weiß ich nicht. Also, wer da draußen so ein System einsetzen will, Vorsicht! Die USB3-Schnittstelle scheint noch einige Bugs zu haben!!

    Mein NVMe System dagegen ist absolut stabil!

  • [V] ROCKPro64 incl. PCIe SATA-Karte

    Verschoben Archiv
    2
    0 Stimmen
    2 Beiträge
    211 Aufrufe
    FrankMF

    Verkauft!

  • ROCKPro64 - Debian Bullseye Teil 3

    ROCKPro64
    1
    0 Stimmen
    1 Beiträge
    289 Aufrufe
    Niemand hat geantwortet
  • ROCKPro64 - i2c Bus

    Hardware
    1
    0 Stimmen
    1 Beiträge
    521 Aufrufe
    Niemand hat geantwortet
  • ROCKPro64 - Alter u-boot im SPI-Flash

    ROCKPro64
    1
    0 Stimmen
    1 Beiträge
    497 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

  • NVMe-Platte einrichten

    ROCKPro64
    1
    0 Stimmen
    1 Beiträge
    1k Aufrufe
    Niemand hat geantwortet
  • u-boot-erase-spi-rockpro64.img.xz

    Verschoben Tools
    1
    0 Stimmen
    1 Beiträge
    879 Aufrufe
    Niemand hat geantwortet
  • Serielle Konsole UART2

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

    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