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.
"Das U-Boot" Source Tree. Contribute to sigmaris/u-boot development by creating an account on GitHub.
GitHub (github.com)
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.