Skip to content

NVMe - Booten jetzt möglich

Angeheftet ROCKPro64
  • Macht das Bitte nur, wenn ihr wisst was der SPI ist und wenn ihr wisst, was ihr im Fehlerfall machen müsst. Danke!

    Da sich ja schon seit längerer Zeit so nicht mehr richtig viel tut, schau ich nur noch gelegentlich ins Pine64-Forum. Das war gestern Abend mal wieder der Fall und da schreibt jemand, das er den neuen u-boot für den ROCKPro64 fertig hat. Das weckt natürlich meine Neugierde 🙂 Es handelt sich um diesen u-boot

    U-Boot TPL 2020.01-rc5-01969-g0bfd4738c6 (Jan 03 2020 - 15:46:36)
    

    Der liebe Kamil hatte das ja schon vor Monaten angekündigt, aber leider nicht umgesetzt. Gut, das wir uns im Open Source Umfeld bewegen, da haben mehrere Menschen Zugriff auf die Daten. Ok, weiter

    Hier der Link zum Forum.

    Ich oute mich mal, die Binaries die er dort vorstellt, sagen mir zwar was, ich weiß aber nicht so richtig was ich damit anfangen soll. Ein paar Versuche hier waren leider erfolglos. Also habe ich den ganzen Beitrag nochmal aufmerksam gelesen und bin dann über das Script

    flash_spi.img.gz
    

    gestolpert. Dazu hat der Autor sigmaris eine Github Seite mit Anleitung erstellt.

    Ok, das bekommen wir hin 🙂

    Also, das Script entpackt und auf eine SD-Karte geschrieben. Den ROCKPro64 damit gestartet und wir sehen einen u-boot Yeah!

    U-Boot TPL 2020.01-rc5-01969-g0bfd4738c6 (Jan 03 2020 - 15:46:36)               
    Channel 0: LPDDR4, 50MHz                                                        
    BW=32 Col=10 Bk=8 CS0 Row=15 CS=1 Die BW=16 Size=1024MB                         
    Channel 1: LPDDR4, 50MHz                                                        
    BW=32 Col=10 Bk=8 CS0 Row=15 CS=1 Die BW=16 Size=1024MB                         
    256B stride                                                                     
    256B stride                                                                     
    lpddr4_set_rate: change freq to 400000000 mhz 0, 1                              
    lpddr4_set_rate: change freq to 800000000 mhz 1, 0                              
    Trying to boot from BOOTROM                                                     
    Returning to boot ROM...              
    

    Ein paar schnelle Versuche mit verschiedenen Datenträgern war nicht so erfolgreich. Da es spät war, habe ich abgebrochen. Heute Morgen dann beim ersten Kaffee noch mal richtig drüber nachdenken....

    Ok, wenn ich von der PCIe NVMe SSD starten möchte, brauche ich dort das komplette Image drauf. Doch wie stelle ich das dann jetzt an? Man könnte den Adapter in einen PC einbauen, man könnte die Karte in einen freien Slot einbauen, wäre beides möglich bei mir. Aber, ich bin faul. Morgens unterm Schreibtisch rum rutschen? Nö.

    Wir schreiben uns das aktuelle Image vom Kamil auf eine SD-Karte. In den Homeordner kopieren wir das entpackte Image vom Kamil.

    buster-minimal-rockpro64-0.9.16-1163-arm64.img
    

    Damit starten wir jetzt den ROCKPro64. Nach Passwortwechsel, das kennt ihr ja sicherlich bereits alles, befinden wir uns im Homeordner. Dort liegt nun unser Image. Das soll nun auf die PCI NVMe SSD.

    Schauen wir mal, ob alles da ist.

    sudo fdisk -l
    [sudo] password for rock64: 
    Disk /dev/ram0: 4 MiB, 4194304 bytes, 8192 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 4096 bytes
    I/O size (minimum/optimal): 4096 bytes / 4096 bytes
    
    
    Disk /dev/mtdblock0: 384 KiB, 393216 bytes, 768 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    
    
    Disk /dev/mtdblock1: 3.6 MiB, 3768320 bytes, 7360 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    
    
    Disk /dev/mtdblock2: 32 KiB, 32768 bytes, 64 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    
    
    Disk /dev/mtdblock3: 12 MiB, 12582912 bytes, 24576 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    
    
    Disk /dev/nvme0n1: 232.9 GiB, 250059350016 bytes, 488397168 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    
    
    Disk /dev/mmcblk0: 59.5 GiB, 63864569856 bytes, 124735488 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: gpt
    Disk identifier: 4252573B-53A6-4918-89A6-7802D8D8031F
    
    Device          Start       End   Sectors  Size Type
    /dev/mmcblk0p1     64      8063      8000  3.9M Linux filesystem
    /dev/mmcblk0p2   8064      8191       128   64K Linux filesystem
    /dev/mmcblk0p3   8192     16383      8192    4M Linux filesystem
    /dev/mmcblk0p4  16384     24575      8192    4M Linux filesystem
    /dev/mmcblk0p5  24576     32767      8192    4M Linux filesystem
    /dev/mmcblk0p6  32768    262143    229376  112M Microsoft basic data
    /dev/mmcblk0p7 262144 124735454 124473311 59.4G Linux filesystem
    

    Image ?

    rock64@rockpro64:~$ ls
    buster-minimal-rockpro64-0.9.16-1163-arm64.img
    

    Gut, alles vorhanden. Dann mal los.

    rock64@rockpro64:~$ sudo dd of=/dev/nvme0n1 if=/home/rock64/buster-minimal-rockpro64-0.9.16-1163-arm64.img bs=1M
    2045+0 records in
    2045+0 records out
    2144337920 bytes (2.1 GB, 2.0 GiB) copied, 36.9288 s, 58.1 MB/s
    

    Hier, der dd Befehl incl. Erfolgsmeldung. Damit wäre das Image jetzt auf der PCIe NVMe SSD. Wir können nun die SD-Karte entfernen und mit der NVMe Karte booten.

    U-Boot TPL 2020.01-rc5-01969-g0bfd4738c6 (Jan 03 2020 - 15:46:36)              
    Channel 0: LPDDR4, 50MHz                                                        
    BW=32 Col=10 Bk=8 CS0 Row=15 CS=1 Die BW=16 Size=1024MB                        
    Channel 1: LPDDR4, 50MHz                                                        
    BW=32 Col=10 Bk=8 CS0 Row=15 CS=1 Die BW=16 Size=1024MB                        
    256B stride                                                                    
    256B stride                                                                    
    lpddr4_set_rate: change freq to 400000000 mhz 0, 1                              
    lpddr4_set_rate: change freq to 800000000 mhz 1, 0                              
    Trying to boot from BOOTROM                                                    
    Returning to boot ROM...                                                        
                                                                                   
    U-Boot SPL 2020.01-rc5-01969-g0bfd4738c6 (Jan 03 2020 - 15:46:36 +0000)        
    Trying to boot from SPI                                                        
    NOTICE:  BL31: v2.2(release):v2.2-277-gb1af2a51                                
    NOTICE:  BL31: Built : 15:44:18, Jan  3 2020                                    
                                                                                   
                                                                                   
    U-Boot 2020.01-rc5-01969-g0bfd4738c6 (Jan 03 2020 - 15:46:36 +0000)            
                                                                                   
    Model: Pine64 RockPro64                                                        
    DRAM:  2 GiB                                                                    
    PMIC:  RK808                                                                    
    MMC:   dwmmc@fe320000: 1, sdhci@fe330000: 0                                    
    Loading Environment from SPI Flash... SF: Detected gd25q128 with page size 256 B
    *** Warning - bad CRC, using default environment                                
                                                                                   
    In:    serial@ff1a0000                                                          
    Out:   serial@ff1a0000                                                          
    Err:   serial@ff1a0000                                                          
    Model: Pine64 RockPro64                                                        
    rockchip_dnl_key_pressed: adc_channel_single_shot fail!                        
    Net:   eth0: ethernet@fe300000                                                  
    Hit any key to stop autoboot:  0                                                
    Card did not respond to voltage select!                                        
    Card did not respond to voltage select!                                        
                                                                                   
    Device 0: Vendor: 0x144d Rev: 1B2QEXE7 Prod: S466NX0K606125A                    
               Type: Hard Disk                                                    
               Capacity: 476940.0 MB = 465.7 GB (976773168 x 512)                  
    ... is now current device                                                      
    Scanning nvme 0:7...                                                            
    Found /boot/extlinux/extlinux.conf                                              
    Retrieving file: /boot/extlinux/extlinux.conf                                  
    2073 bytes read in 4 ms (505.9 KiB/s)                                          
    select kernel                                                                  
    1:      kernel-4.4.202-1237-rockchip-ayufan-gfd4492386213                      
    2:      kernel-4.4.202-1237-rockchip-ayufan-gfd4492386213-memtest              
    3:      kernel-4.4.197-1236-rockchip-ayufan-g30faab37e339                      
    4:      kernel-4.4.197-1236-rockchip-ayufan-g30faab37e339-memtest  
    [...gekürzt...]
    

    YEAH! Der ROCKPro64 bootet direkt von der PCIe NVMe SSD. Dazu bedarf es jetzt nur noch, das der u-boot im SPI Speicher drin ist.

    Noch kurz das Filesystem anzeigen lassen

    rock64@rockpro64:~$ df -h
    Filesystem      Size  Used Avail Use% Mounted on
    udev            960M     0  960M   0% /dev
    tmpfs           193M  7.7M  185M   4% /run
    /dev/nvme0n1p7  1.9G  1.1G  669M  62% /
    tmpfs           963M     0  963M   0% /dev/shm
    tmpfs           5.0M  4.0K  5.0M   1% /run/lock
    tmpfs           963M     0  963M   0% /sys/fs/cgroup
    /dev/nvme0n1p6  112M  4.0K  112M   1% /boot/efi
    tmpfs           193M     0  193M   0% /run/user/1000
    

    Somit sollte sich auch der Kernel Problem los aktualisieren lassen, was ja vorher immer recht mühsam war.

    Aktuell nutzt der ROCKPro64 dieses Image

    Linux rockpro64 4.4.197-1236-rockchip-ayufan-g30faab37e339 #1 SMP Tue Oct 22 11:35:10 UTC 2019 aarch64
    

    Dann installieren wir mal 4.4.202-1237-rockchip-ayufan
    https://github.com/ayufan-rock64/linux-kernel/releases/

    Nach dem Reboot

                    _                     __   _  _   
      _ __ ___   ___| | ___ __  _ __ ___  / /_ | || |  
     | '__/ _ \ / __| |/ / '_ \| '__/ _ \| '_ \| || |_ 
     | | | (_) | (__|   <| |_) | | | (_) | (_) |__   _|
     |_|  \___/ \___|_|\_\ .__/|_|  \___/ \___/   |_|  
                         |_|                           
     Linux rockpro64 4.4.202-1237-rockchip-ayufan-gfd4492386213 #1 SMP Sat Nov 23 13:55:47 UTC 2019 aarch64
    

    So muss das funktionieren. Sehr lange drauf gewartet!

    Vielen Dank an sigmaris für die tolle Arbeit!

    Und jetzt mal Schauen, ob das auch von USB3 geht, das ging gestern Abend auch nicht.....

    Wie ich gerade sehe, muss das Root Filesystem noch vergrößert werden.

    Ok, Problem gelöst. Bitte hier nachlesen.

  • Jetzt müssen wir mal schauen, ob das Ganze auch stabil läuft...

  • Nachdem ich jetzt ein wenig rumgespielt habe, folgende Empfehlung.

    Der u-boot ist ja zum Testen da, mit einer PCIe NVMe SSD oder einer SD-Karte bootet er einwandfrei. Mit meiner eMMC-Karte nicht, so wie auch nicht an USB2 und USB3. Sollte ihr also so ein Gerät zum Booten benutzen, müsst ihr den gewohnten Weg gehen.

  • Sigmaris hat eine neue Version seines u-boot released.
    https://forum.frank-mankel.org/topic/746/u-boot

    Diese neue Version soll einen Boot von einer PCIe SATA Platte ermöglichen. Yeah!

    I have updated the OP with info about a new release, based on mainline U-Boot v2020.01, and now with PCIe SATA drive boot support as well as NVMe.

    Das muss ich dann mal testen 😉

  • Ich habe dann heute mal den uboot getestet um zu sehen, ob von einer SATA HDD gebootet wird.

    Start

    U-Boot TPL 2020.01-01987-g335875f1f5 (Feb 01 2020 - 15:02:32)                   
    Channel 0: LPDDR4, 50MHz                                                        
    BW=32 Col=10 Bk=8 CS0 Row=15 CS=1 Die BW=16 Size=1024MB                         
    Channel 1: LPDDR4, 50MHz                                                        
    BW=32 Col=10 Bk=8 CS0 Row=15 CS=1 Die BW=16 Size=1024MB                         
    256B stride                                                                     
    256B stride                                                                     
    lpddr4_set_rate: change freq to 400000000 mhz 0, 1                              
    lpddr4_set_rate: change freq to 800000000 mhz 1, 0                              
    Trying to boot from BOOTROM                                                     
    Returning to boot ROM...                                                        
                                                                                    
    U-Boot SPL 2020.01-01987-g335875f1f5 (Feb 01 2020 - 15:02:32 +0000)             
    Trying to boot from SPI                                                         
    NOTICE:  BL31: v2.2(release):v2.2-271-g9a943ba43                                
    NOTICE:  BL31: Built : 15:00:49, Feb  1 2020                                    
                                                                                    
                                                                                    
    U-Boot 2020.01-01987-g335875f1f5 (Feb 01 2020 - 15:02:32 +0000)                 
                                                                                    
    Model: Pine64 RockPro64                                                         
    DRAM:  2 GiB                                                                    
    PMIC:  RK808                                                                    
    MMC:   dwmmc@fe320000: 1, sdhci@fe330000: 0                                     
    Loading Environment from SPI Flash... SF: Detected gd25q128 with page size 256 B
    *** Warning - bad CRC, using default environment                                
                                                                                    
    In:    serial@ff1a0000                                                          
    Out:   serial@ff1a0000                                                          
    Err:   serial@ff1a0000                                                          
    Model: Pine64 RockPro64                                                         
    Net:   eth0: ethernet@fe300000                                                  
    Hit any key to stop autoboot:  0                                                
    Card did not respond to voltage select!                                         
    Card did not respond to voltage select!                                         
    PCIE-0: Link up (Bus0)                                                          
                                                                                    
    Device 0: unknown device                                                        
    scanning bus for devices...                                                     
    Target spinup took 0 ms.                                                        
    SATA link 1 timeout.                                                            
    AHCI 0001.0200 32 slots 2 ports 6 Gbps 0x3 impl SATA mode                       
    flags: 64bit ncq stag led clo pmp pio slum part ccc sxs                         
      Device 0: (0:0) Vendor: ATA Prod.: ST2000LM015-2E81 Rev: SDM1                 
                Type: Hard Disk                                                     
                Capacity: 1907729.0 MB = 1863.0 GB (3907029168 x 512)               
                                                                                    
    Device 0: (0:0) Vendor: ATA Prod.: ST2000LM015-2E81 Rev: SDM1                   
                Type: Hard Disk                                                     
                Capacity: 1907729.0 MB = 1863.0 GB (3907029168 x 512)               
    ... is now current device                                                       
    Scanning scsi 0:7...                                                            
    Found /boot/extlinux/extlinux.conf                                              
    Retrieving file: /boot/extlinux/extlinux.conf                                   
    1055 bytes read in 49 ms (20.5 KiB/s)                                           
    select kernel                                                                   
    1:      kernel-4.4.197-1236-rockchip-ayufan-g30faab37e339                       
    2:      kernel-4.4.197-1236-rockchip-ayufan-g30faab37e339-memtest               
    Enter choice: 1:        kernel-4.4.197-1236-rockchip-ayufan-g30faab37e339       
    Retrieving file: /boot/initrd.img-4.4.197-1236-rockchip-ayufan-g30faab37e339    
    5143934 bytes read in 110 ms (44.6 MiB/s)                                       
    Retrieving file: /boot/vmlinuz-4.4.197-1236-rockchip-ayufan-g30faab37e339       
    20545544 bytes read in 346 ms (56.6 MiB/s)                                      
    append: rw panic=10 init=/sbin/init coherent_pool=1M ethaddr=62:03:b0:d6:dc:b3 4
    Retrieving file: /boot/dtbs/4.4.197-1236-rockchip-ayufan-g30faab37e339/rockchipb
    96273 bytes read in 32 ms (2.9 MiB/s)                                           
    ## Flattened Device Tree blob at 01f00000                                       
       Booting using the fdt blob at 0x1f00000                                      
       Loading Ramdisk to 7da14000, end 7defbd7e ... OK                             
    

    Disks

    rock64@rockpro64:~$ df -h
    Filesystem      Size  Used Avail Use% Mounted on
    udev            960M     0  960M   0% /dev
    tmpfs           193M  7.7M  185M   4% /run
    /dev/sda7       1.8T  1.1G  1.8T   1% /
    tmpfs           963M     0  963M   0% /dev/shm
    tmpfs           5.0M  4.0K  5.0M   1% /run/lock
    tmpfs           963M     0  963M   0% /sys/fs/cgroup
    /dev/sda6       112M  4.0K  112M   1% /boot/efi
    tmpfs           193M     0  193M   0% /run/user/1000
    

    Wieder ein Stück weiter 😉

  • Hallo Frank,

    verstehe ich das richtig das du dann auf dem weder eine SDcard noch einen eMMC Chip dazu brauchst?

    Wird das System dann performanter, ist das meßbar?

    M

  • Hallo @mabs,

    ja. Der uboot wird in den SPI Speicher geladen. Der sucht dann beim Starten nach einem bootfähigem Device. So wie auf einem ganz normalen PC. Eine richtig coole Sache, wo ich mich freue, das das langsam mal funktioniert.

    Die Performance wird ja dann sicherlich von dem Device bestimmt. Dazu gibt es ja genug Messungen. Ich würde eine NVMe SSD immer einer SATA Platte vorziehen. Es kommt aber auf den Anwendungsfall an.

    Für ein NAS dann eher zwei oder mehr SATA Platten, und von USB3 HDD booten 🙂 So wie ich das schon lange betreibe.

    Aber, da hat auch jeder andere Vorstellungen und Vorlieben für.

  • ROCKPro64 - PCIe NVMe SSD installieren

    Hardware
    1
    0 Stimmen
    1 Beiträge
    320 Aufrufe
    Niemand hat geantwortet
  • ROCKPro64 - Netflix?

    ROCKPro64
    2
    0 Stimmen
    2 Beiträge
    410 Aufrufe
    FrankMF

    Anleitung von Kamil

    # Netflix Starting with 0.8.0rc13 it is possible to use Netflix on all **Ubuntu/armf** desktop images using regular Chromium browser. Due to Google policies images do not ship Widevine CDM required by Netflix to decrypt videos. Currently, Widevine CDM is only available for **armhf** and **Ubuntu**. You have to install Widevine CDM with: ```bash install_widevine_drm.sh ``` This will take between 5 to 15 mins depending on the performance of SD-card, and your Internet connection.
  • ROCKPro64 - USB-C -> LAN

    ROCKPro64
    1
    0 Stimmen
    1 Beiträge
    285 Aufrufe
    Niemand hat geantwortet
  • ROCKPro64 - Das erste Mal

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

  • 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

  • ROCKPro64 - SD-Karte

    Hardware
    1
    0 Stimmen
    1 Beiträge
    536 Aufrufe
    Niemand hat geantwortet
  • Recover Button

    Hardware
    2
    0 Stimmen
    2 Beiträge
    833 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)
  • Armbianmonitor

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