bpi-r2:uboot
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungLetzte ÜberarbeitungBeide Seiten der Revision | ||
bpi-r2:uboot [2019/01/24 16:43] – [MMC] frank | bpi-r2:uboot [2023/06/08 17:06] – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== UBoot ====== | ||
+ | erreichbar über [[debug-uart]] | ||
+ | |||
+ | < | ||
+ | *** U-Boot Boot Menu *** | ||
+ | 1. System Load Linux to SDRAM via TFTP. | ||
+ | 2. System Load Linux Kernel then write to Flash via TFTP. | ||
+ | 3. Boot Linux from SD. | ||
+ | 4. System Load Boot Loader then write to Flash via TFTP. | ||
+ | 5. System Load Linux Kernel then write to Flash via Serial. | ||
+ | 6. System Load Boot Loader then write to Flash via Serial. | ||
+ | 7. Boot system code via Flash. | ||
+ | | ||
+ | Press UP/DOWN to move, ENTER to select | ||
+ | </ | ||
+ | |||
+ | ===== Uboot erneuern ===== | ||
+ | |||
+ | Der emmc-Befehl ist erst seit dem 29.September 2017 im uboot (Version: " | ||
+ | |||
+ | U-Boot von [[https:// | ||
+ | <code bash> | ||
+ | sudo dd if=/dev/sdx of=bpi-r2-first10M.img bs=1M count=10 #Backup der ersten 10MB | ||
+ | |||
+ | SD/100MB$ gunzip BPI-R2-720P-2k.img.gz | ||
+ | SD/100MB$ sudo dd if=BPI-R2-720P-2k.img of=/dev/sdx bs=1k seek=2 count=1022 #unzipped img! | ||
+ | | ||
+ | sudo dd of=/dev/sdx if=bpi-r2-first10M.img bs=1M count=10 #die ersten 10MB wiederherstellen (bei Fehler) | ||
+ | </ | ||
+ | |||
+ | alternativ nur uboot (nach option 2 in build.sh, backup nicht vergessen): | ||
+ | |||
+ | sudo dd of=/dev/sdb if=u-boot-mt/ | ||
+ | |||
+ | vorcompiliertes uboot-image kann auf meinem [[https:// | ||
+ | |||
+ | Quelle für Position des BPI-R2-720p-Images: | ||
+ | |||
+ | Zusammensetzung des Images: https:// | ||
+ | < | ||
+ | TMP_FILE=${U}/ | ||
+ | IMG_FILE=${U}/ | ||
+ | PRELOADER=$TOPDIR/ | ||
+ | UBOOT=$TOPDIR/ | ||
+ | |||
+ | (sudo dd if=$PRELOADER of=${LOOP_DEV} bs=1k seek=2) >/ | ||
+ | (sudo dd if=$UBOOT of=${LOOP_DEV} bs=1k seek=320) >/ | ||
+ | (dd if=${TMP_FILE} of=${IMG_FILE} bs=1k skip=2 count=1022 status=noxfer) >/ | ||
+ | </ | ||
+ | |||
+ | es wird also die compilierte uboot.bin (u-boot-mt/ | ||
+ | |||
+ | ==== uboot 2018-11 ==== | ||
+ | |||
+ | Mediatek hat patches für den BPI-R2 geposted...diese habe ich einem uboot-fork angewendet und eingerichtet (build.sh, config, default-Environment, | ||
+ | |||
+ | Kernel von der SD-Karte lassen sich bereits starten (emmc sollte auch funktionieren), | ||
+ | |||
+ | falls nicht das default environment geladen wurde (buildargs): | ||
+ | |||
+ | env default -a | ||
+ | printenv | ||
+ | #saveenv | ||
+ | ===== Liste der Befehle ===== | ||
+ | |||
+ | zurück zum Menü mit dem Befehl " | ||
+ | |||
+ | BPI-IoT> help | ||
+ | |||
+ | < | ||
+ | ? - alias for ' | ||
+ | backup_message- print backup message. | ||
+ | base - print or set address offset | ||
+ | bdinfo | ||
+ | boot - boot default, i.e., run ' | ||
+ | bootd - boot default, i.e., run ' | ||
+ | bootm - boot application image from memory | ||
+ | bootmenu- ANSI terminal bootmenu | ||
+ | bootp - boot image via network using BOOTP/TFTP protocol | ||
+ | cmp - memory compare | ||
+ | coninfo - print console devices and information | ||
+ | cp - memory copy | ||
+ | crc32 - checksum calculation | ||
+ | echo - echo args to console | ||
+ | editenv - edit environment variable | ||
+ | emmc - eMMC sub system | ||
+ | env - environment handling commands | ||
+ | esw_read- esw_read | ||
+ | |||
+ | exit - exit script | ||
+ | false - do nothing, unsuccessfully | ||
+ | fatinfo - print information about filesystem | ||
+ | fatload - load binary file from a dos filesystem | ||
+ | fatls - list files in a directory (default /) | ||
+ | go - start application at address ' | ||
+ | help - print command description/ | ||
+ | image_blks- read image size from img_size or image header if no specifying img_. | ||
+ | image_check- check if image in load_addr is normal. | ||
+ | iminfo | ||
+ | imxtract- extract a part of a multi-image | ||
+ | itest - return true/false on integer compare | ||
+ | loadb - load binary file over serial line (kermit mode) | ||
+ | loads - load S-Record file over serial line | ||
+ | loadx - load binary file over serial line (xmodem mode) | ||
+ | loady - load binary file over serial line (ymodem mode) | ||
+ | loop - infinite loop on address range | ||
+ | md - memory display | ||
+ | mdio - mdio - Ralink PHY register R/W command !! | ||
+ | |||
+ | mm - memory modify (auto-incrementing address) | ||
+ | mmc - MMC sub-system | ||
+ | mmc2 - MMC sub system | ||
+ | mmcinfo - display MMC info | ||
+ | mtk_image_blks- read image size from image header (MTK format) located at load_. | ||
+ | mw - memory write (fill) | ||
+ | nm - memory modify (constant address) | ||
+ | nor - nor - nor flash command | ||
+ | |||
+ | ping - send ICMP ECHO_REQUEST to network host | ||
+ | printenv- print environment variables | ||
+ | reco_message- print recovery message. | ||
+ | reg - reg - Ralink PHY register R/W command !! | ||
+ | |||
+ | reset - Perform RESET of the CPU | ||
+ | run - run commands in an environment variable | ||
+ | saveenv - save environment variables to persistent storage | ||
+ | serious_image_check- seriously check if image in load_addr is normal. | ||
+ | setenv | ||
+ | showvar - print local hushshell variables | ||
+ | sleep - delay execution for some time | ||
+ | snor - snor - spi-nor flash command | ||
+ | |||
+ | source | ||
+ | test - minimal test like /bin/sh | ||
+ | tftpboot- boot image via network using TFTP protocol | ||
+ | true - do nothing, successfully | ||
+ | uboot_check- check if uboot in load_addr is normal. | ||
+ | version - print monitor, compiler and linker version | ||
+ | </ | ||
+ | ===== Partition-Konfiguration des EMMC ändern ===== | ||
+ | |||
+ | BPI-IoT> emmc --help | ||
+ | emmc - eMMC sub system | ||
+ | Usage: | ||
+ | emmc read part addr blk# cnt | ||
+ | emmc write part addr blk# cnt | ||
+ | emmc ecsd - Dump ext csd | ||
+ | emmc pconf val - Set Part Config val | ||
+ | BPI-IoT> emmc ecsd | ||
+ | |||
+ | emmc ecsd | ||
+ | < | ||
+ | < | ||
+ | =========================================================== | ||
+ | [EXT_CSD] EXT_CSD rev. : v1.7 (MMCv5.0) | ||
+ | [EXT_CSD] CSD struct rev. : v1.2 | ||
+ | [EXT_CSD] Supported command sets : 1h | ||
+ | [EXT_CSD] HPI features | ||
+ | [EXT_CSD] BG operations support | ||
+ | [EXT_CSD] BG operations status | ||
+ | [EXT_CSD] Correct prg. sectors | ||
+ | [EXT_CSD] 1st init time after part. : 3000 ms | ||
+ | [EXT_CSD] Min. write perf.(DDR, | ||
+ | [EXT_CSD] Min. read perf. (DDR, | ||
+ | [EXT_CSD] TRIM timeout: 0 ms | ||
+ | [EXT_CSD] Secure feature support: 55h | ||
+ | [EXT_CSD] Secure erase timeout | ||
+ | [EXT_CSD] Secure trim timeout | ||
+ | [EXT_CSD] Access size : 3072 bytes | ||
+ | [EXT_CSD] HC erase unit size : 512 kbytes | ||
+ | [EXT_CSD] HC erase timeout | ||
+ | [EXT_CSD] HC write prot grp size: 8192 kbytes | ||
+ | [EXT_CSD] HC erase grp def. : 0h | ||
+ | [EXT_CSD] Reliable write sect count: 1h | ||
+ | [EXT_CSD] Sleep current (VCC) : 7h | ||
+ | [EXT_CSD] Sleep current (VCCQ): 7h | ||
+ | [EXT_CSD] Sleep/awake timeout : 26214400 ns | ||
+ | [EXT_CSD] Sector count : e90000h | ||
+ | [EXT_CSD] Min. WR Perf. (52MH,8b): 0h | ||
+ | [EXT_CSD] Min. Read Perf.(52MH, | ||
+ | [EXT_CSD] Min. WR Perf. (26MH, | ||
+ | [EXT_CSD] Min. Read Perf.(26MH, | ||
+ | [EXT_CSD] Min. WR Perf. (26MH,4b): 0h | ||
+ | [EXT_CSD] Min. Read Perf.(26MH, | ||
+ | [EXT_CSD] Power class: 0 | ||
+ | [EXT_CSD] Power class(DDR, | ||
+ | [EXT_CSD] Power class(DDR, | ||
+ | [EXT_CSD] Power class(26MH, | ||
+ | [EXT_CSD] Power class(52MH, | ||
+ | [EXT_CSD] Power class(26MH, | ||
+ | [EXT_CSD] Power class(52MH, | ||
+ | [EXT_CSD] Part. switch timing | ||
+ | [EXT_CSD] Out-of-INTR busy timing: 5h | ||
+ | [EXT_CSD] Card type : 57h | ||
+ | [EXT_CSD] Command set : 0h | ||
+ | [EXT_CSD] Command set rev.: 0h | ||
+ | [EXT_CSD] HS timing | ||
+ | [EXT_CSD] Bus width : 0h | ||
+ | [EXT_CSD] Erase memory content : 0h | ||
+ | [EXT_CSD] Partition config | ||
+ | [EXT_CSD] Boot partition size : 4096 kbytes | ||
+ | [EXT_CSD] Boot information | ||
+ | [EXT_CSD] Boot config protection: 0h | ||
+ | [EXT_CSD] Boot bus width : 0h | ||
+ | [EXT_CSD] Boot area write prot : 0h | ||
+ | [EXT_CSD] User area write prot : 0h | ||
+ | [EXT_CSD] FW configuration | ||
+ | [EXT_CSD] RPMB size : 512 kbytes | ||
+ | [EXT_CSD] Write rel. setting | ||
+ | [EXT_CSD] Write rel. parameter: 4h | ||
+ | [EXT_CSD] Start background ops : 0h | ||
+ | [EXT_CSD] Enable background ops: 0h | ||
+ | [EXT_CSD] H/W reset function | ||
+ | [EXT_CSD] HPI management | ||
+ | [EXT_CSD] Max. enhanced area size : 136h (2539520 kbytes) | ||
+ | [EXT_CSD] Part. support | ||
+ | [EXT_CSD] Part. attribute: 0h | ||
+ | [EXT_CSD] Part. setting | ||
+ | [EXT_CSD] General purpose 1 size : 0h (0 kbytes) | ||
+ | [EXT_CSD] General purpose 2 size : 0h (0 kbytes) | ||
+ | [EXT_CSD] General purpose 3 size : 0h (0 kbytes) | ||
+ | [EXT_CSD] General purpose 4 size : 0h (0 kbytes) | ||
+ | [EXT_CSD] Enh. user area size : 0h (0 kbytes) | ||
+ | [EXT_CSD] Enh. user area start: 0h | ||
+ | [EXT_CSD] Bad block mgmt mode: 0h | ||
+ | </ | ||
+ | </ | ||
+ | < | ||
+ | =========================================================== | ||
+ | BPI-IoT> emmc pconf 0x48 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< | ||
+ | BPI-IoT> emmc ecsd <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< | ||
+ | =========================================================== | ||
+ | </ | ||
+ | emmc ecsd (nachher) | ||
+ | < | ||
+ | < | ||
+ | [EXT_CSD] EXT_CSD rev. : v1.7 (MMCv5.0) | ||
+ | [EXT_CSD] CSD struct rev. : v1.2 | ||
+ | [EXT_CSD] Supported command sets : 1h | ||
+ | [EXT_CSD] HPI features | ||
+ | [EXT_CSD] BG operations support | ||
+ | [EXT_CSD] BG operations status | ||
+ | [EXT_CSD] Correct prg. sectors | ||
+ | [EXT_CSD] 1st init time after part. : 3000 ms | ||
+ | [EXT_CSD] Min. write perf.(DDR, | ||
+ | [EXT_CSD] Min. read perf. (DDR, | ||
+ | [EXT_CSD] TRIM timeout: 0 ms | ||
+ | [EXT_CSD] Secure feature support: 55h | ||
+ | [EXT_CSD] Secure erase timeout | ||
+ | [EXT_CSD] Secure trim timeout | ||
+ | [EXT_CSD] Access size : 3072 bytes | ||
+ | [EXT_CSD] HC erase unit size : 512 kbytes | ||
+ | [EXT_CSD] HC erase timeout | ||
+ | [EXT_CSD] HC write prot grp size: 8192 kbytes | ||
+ | [EXT_CSD] HC erase grp def. : 0h | ||
+ | [EXT_CSD] Reliable write sect count: 1h | ||
+ | [EXT_CSD] Sleep current (VCC) : 7h | ||
+ | [EXT_CSD] Sleep current (VCCQ): 7h | ||
+ | [EXT_CSD] Sleep/awake timeout : 26214400 ns | ||
+ | [EXT_CSD] Sector count : e90000h | ||
+ | [EXT_CSD] Min. WR Perf. (52MH,8b): 0h | ||
+ | [EXT_CSD] Min. Read Perf.(52MH, | ||
+ | [EXT_CSD] Min. WR Perf. (26MH, | ||
+ | [EXT_CSD] Min. Read Perf.(26MH, | ||
+ | [EXT_CSD] Min. WR Perf. (26MH,4b): 0h | ||
+ | [EXT_CSD] Min. Read Perf.(26MH, | ||
+ | [EXT_CSD] Power class: 0 | ||
+ | [EXT_CSD] Power class(DDR, | ||
+ | [EXT_CSD] Power class(DDR, | ||
+ | [EXT_CSD] Power class(26MH, | ||
+ | [EXT_CSD] Power class(52MH, | ||
+ | [EXT_CSD] Power class(26MH, | ||
+ | [EXT_CSD] Power class(52MH, | ||
+ | [EXT_CSD] Part. switch timing | ||
+ | [EXT_CSD] Out-of-INTR busy timing: 5h | ||
+ | [EXT_CSD] Card type : 57h | ||
+ | [EXT_CSD] Command set : 0h | ||
+ | [EXT_CSD] Command set rev.: 0h | ||
+ | [EXT_CSD] HS timing | ||
+ | [EXT_CSD] Bus width : 0h | ||
+ | [EXT_CSD] Erase memory content : 0h | ||
+ | [EXT_CSD] Partition config | ||
+ | [EXT_CSD] Boot partition size : 4096 kbytes | ||
+ | [EXT_CSD] Boot information | ||
+ | [EXT_CSD] Boot config protection: 0h | ||
+ | [EXT_CSD] Boot bus width : 0h | ||
+ | [EXT_CSD] Boot area write prot : 0h | ||
+ | [EXT_CSD] User area write prot : 0h | ||
+ | [EXT_CSD] FW configuration | ||
+ | [EXT_CSD] RPMB size : 512 kbytes | ||
+ | [EXT_CSD] Write rel. setting | ||
+ | [EXT_CSD] Write rel. parameter: 4h | ||
+ | [EXT_CSD] Start background ops : 0h | ||
+ | [EXT_CSD] Enable background ops: 0h | ||
+ | [EXT_CSD] H/W reset function | ||
+ | [EXT_CSD] HPI management | ||
+ | [EXT_CSD] Max. enhanced area size : 136h (2539520 kbytes) | ||
+ | [EXT_CSD] Part. support | ||
+ | [EXT_CSD] Part. attribute: 0h | ||
+ | [EXT_CSD] Part. setting | ||
+ | [EXT_CSD] General purpose 1 size : 0h (0 kbytes) | ||
+ | [EXT_CSD] General purpose 2 size : 0h (0 kbytes) | ||
+ | [EXT_CSD] General purpose 3 size : 0h (0 kbytes) | ||
+ | [EXT_CSD] General purpose 4 size : 0h (0 kbytes) | ||
+ | [EXT_CSD] Enh. user area size : 0h (0 kbytes) | ||
+ | [EXT_CSD] Enh. user area start: 0h | ||
+ | [EXT_CSD] Bad block mgmt mode: 0h | ||
+ | =========================================================== | ||
+ | </ | ||
+ | |||
+ | in neueren uboot-Versionen (2018): | ||
+ | |||
+ | http:// | ||
+ | |||
+ | < | ||
+ | ===== System von Console starten ===== | ||
+ | < | ||
+ | BPI-IoT> printenv | ||
+ | ... | ||
+ | boot10=mmc init; run boot_normal; | ||
+ | ... | ||
+ | bootmenu_2=3. Boot Linux from SD.=run boot10 | ||
+ | ... | ||
+ | </ | ||
+ | run boot10 | ||
+ | |||
+ | ===== Kernel angeben ===== | ||
+ | |||
+ | in der BPI-BOOT/ | ||
+ | < | ||
+ | # | ||
+ | # | ||
+ | kernel=uImage_4.9.92 | ||
+ | </ | ||
+ | |||
+ | dies hat den Vorteil, dass man einen neuen Kernel testen kann und notfalls auf den alten leicht wieder zurück kann (wenn diese 2 verschiedene Namen haben). Für Multiboot muss der uboot-code angepasst werden, da die uEnv.txt | ||
+ | |||
+ | ===== uEnv.txt laden ===== | ||
+ | |||
+ | Standardmäßig wird die uEnv.txt erst geladen wenn der Menüpunkt "Boot from SD" ausgewählt wurde. | ||
+ | |||
+ | < | ||
+ | #Boot from emmc: | ||
+ | enter to uboot-console; | ||
+ | execute “mmc init 0” | ||
+ | execute “setenv partition 0:1” | ||
+ | execute “run loadbootenv” | ||
+ | execute “env import -t ${scriptaddr} ${filesize} ” | ||
+ | |||
+ | #Boot from SD: | ||
+ | enter to uboot-console; | ||
+ | execute “mmc init 1” | ||
+ | execute “setenv partition 1:1” | ||
+ | execute “run loadbootenv” | ||
+ | execute “env import -t ${scriptaddr} ${filesize} ” | ||
+ | </ | ||
+ | |||
+ | Quelle: http:// | ||
+ | |||
+ | da loadbootenv eine Variable ist, die nur im offiziellen bpi-r2-uboot definiert ist und u.a. im U-Boot-Upstream-repo nicht existiert müssen folgende Variablen definiert werden um die uEnv.txt + kernel zu laden | ||
+ | |||
+ | < | ||
+ | setenv scriptaddr 0x83000000 | ||
+ | setenv bpi bananapi | ||
+ | setenv board bpi-r2 | ||
+ | setenv service linux | ||
+ | setenv device mmc | ||
+ | setenv partition 1:1 | ||
+ | setenv bootenv uEnv.txt | ||
+ | setenv loadbootenv fatload ${device} ${partition} ${scriptaddr} ${bpi}/ | ||
+ | setenv importenv env import -t ${scriptaddr} ${filesize} | ||
+ | |||
+ | run loadbootenv | ||
+ | run importenv | ||
+ | |||
+ | printenv | ||
+ | |||
+ | setenv newboot " | ||
+ | run newboot | ||
+ | |||
+ | #check for boot-device (emmc/sd) | ||
+ | setenv checksd fatinfo ${device} 1:1 | ||
+ | setenv selectmmc "if run checksd; then echo Boot from SD ; setenv partition 1:1;else echo Boot from eMMC; setenv partition 0:1 ; fi;" | ||
+ | |||
+ | run selectmmc | ||
+ | </ | ||
+ | ===== nützliche Befehle ===== | ||
+ | |||
+ | ==== MMC ==== | ||
+ | |||
+ | < | ||
+ | U-Boot> mmc list | ||
+ | mmc@11230000: | ||
+ | mmc@11240000: | ||
+ | |||
+ | #set mmc-device (1=sd, | ||
+ | U-Boot> mmc dev 1 | ||
+ | |||
+ | #read current device | ||
+ | U-Boot> mmc dev | ||
+ | switch to partitions #0, OK | ||
+ | mmc1 is current device | ||
+ | |||
+ | U-Boot> mmcinfo | ||
+ | Device: mmc@11240000 | ||
+ | Manufacturer ID: 1b | ||
+ | OEM: 534d | ||
+ | Name: 00000 | ||
+ | Bus Speed: 50000000 | ||
+ | Mode : SD High Speed (50MHz) | ||
+ | Rd Block Len: 512 | ||
+ | SD version 2.0 | ||
+ | High Capacity: Yes | ||
+ | Capacity: 7.6 GiB | ||
+ | Bus Width: 4-bit | ||
+ | Erase Group Size: 512 Bytes | ||
+ | |||
+ | sd-card (1) has 4-bit bus width, emmc (0) has 8-bit bus width | ||
+ | |||
+ | # | ||
+ | #mmc partconf dev [boot_ack boot_partition partition_access] | ||
+ | # - Show or change the bits of the PARTITION_CONFIG field of the specified device | ||
+ | #example for mode 0x48 (needed for emmc-boot on bpi-r2) | ||
+ | U-Boot> mmc partconf 0 | ||
+ | EXT_CSD[179], | ||
+ | BOOT_ACK: 0x1 | ||
+ | BOOT_PARTITION_ENABLE: | ||
+ | PARTITION_ACCESS: | ||
+ | |||
+ | #setzen mit | ||
+ | U-Boot> mmc partconf 0 1 1 0 | ||
+ | </ | ||
+ | ==== environment löschen/ | ||
+ | < | ||
+ | #zur Sicherheit kann man sich das geschriebene env anschauen (vorher auf sd wechseln, | ||
+ | BPI-R2> mmc dev 1 | ||
+ | BPI-R2> mmc read ${scriptaddr} 800 10 | ||
+ | |||
+ | MMC read: dev # 1, block # 2048, count 16 ... 16 blocks read: OK | ||
+ | BPI-R2> strings ${scriptaddr} | ||
+ | p��saskkernel=askenv kernelinput "enter uImage-name:"; | ||
+ | ... | ||
+ | #die ersten 4 bytes sind die CRC-Prüfsumme, | ||
+ | |||
+ | # | ||
+ | #BPI-R2> mmc erase 800 10 | ||
+ | #wird mit eraseenv (patchwork) abgelöst | ||
+ | eraseenv | ||
+ | |||
+ | # | ||
+ | BPI-R2> env default -a; | ||
+ | |||
+ | # | ||
+ | BPI-R2> saveenv | ||
+ | Saving Environment to MMC... Boot From SD(id:1) | ||
+ | |||
+ | Writing to MMC(1)... OK | ||
+ | </ | ||
+ | |||
+ | mehr zu den mmc-Kommandos [[http:// | ||
+ | ==== Verzeichnisauflistung ==== | ||
+ | |||
+ | < | ||
+ | ls mmc 1:1 bananapi/ | ||
+ | #mit den Variablen aus meiner U-boot-Umgebung: | ||
+ | ls ${device} ${partition} ${bpi}/ | ||
+ | </ | ||
+ | |||
+ | ==== kernelabfrage ==== | ||
+ | |||
+ | < | ||
+ | lskernel=ls ${device} ${partition} ${bpi}/ | ||
+ | askkernel=askenv kernelinput "enter uImage-name:"; | ||
+ | | ||
+ | boot0=run lskernel; | ||
+ | bootmenu_0=1. Enter kernel-name to boot from SD/ | ||
+ | </ | ||
+ | |||
+ | ==== prüfen, ob datei existiert ==== | ||
+ | |||
+ | < | ||
+ | checkenv=test -e ${device} ${partition} ${bpi}/ | ||
+ | #will be evaluated to check if bananapi/ | ||
+ | if run checkenv; then ...; else echo file not found; fi; | ||
+ | </ | ||
+ | |||
+ | ==== anderes uboot via TFTP nachladen ==== | ||
+ | |||
+ | (benötigt CONFIG_CMD_CACHE) | ||
+ | |||
+ | < | ||
+ | BPI-R2> icache off;dcache off | ||
+ | BPI-R2> go 0x81E00000</ | ||
+ | ==== PCIe ==== | ||
+ | |||
+ | :!: uboot vor 2020-10 (meine version) hat einen Bug welcher beim "pci enum" hängen bleibt, wenn keine Karte im pcie-slot gesteckt ist | ||
+ | |||
+ | < | ||
+ | BPI-R2> pci enum | ||
+ | BPI-R2> pci 0 | ||
+ | Scanning PCI devices on bus 0 | ||
+ | BusDevFun | ||
+ | _____________________________________________________________ | ||
+ | 00.00.00 | ||
+ | 00.01.00 | ||
+ | BPI-R2> pci 1 | ||
+ | Scanning PCI devices on bus 1 | ||
+ | BusDevFun | ||
+ | _____________________________________________________________ | ||
+ | 01.00.00 | ||
+ | BPI-R2> pci 2 | ||
+ | Scanning PCI devices on bus 2 | ||
+ | BusDevFun | ||
+ | _____________________________________________________________ | ||
+ | 02.00.00 | ||
+ | BPI-R2> scsi scan | ||
+ | scanning bus for devices... | ||
+ | SATA link 0 timeout. | ||
+ | Target spinup took 0 ms. | ||
+ | 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: (1:0) Vendor: ATA Prod.: ST750LM022 HN-M7 Rev: 2AR1 | ||
+ | Type: Hard Disk | ||
+ | Capacity: 715404.8 MB = 698.6 GB (1465149168 x 512) | ||
+ | BPI-R2> | ||
+ | </ | ||
+ | ==== SATA ==== | ||
+ | |||
+ | siehe [[#pcie]] (pci enum + scsi scan) und dann via | ||
+ | |||
+ | ls scsi 0:1 | ||
+ | |||
+ | auf die HDD zugreifen | ||
+ | ==== USB ==== | ||
+ | < | ||
+ | BPI-R2> usb start | ||
+ | starting USB... | ||
+ | Bus usb@1a1c0000: | ||
+ | u2p:1, u3p:1 | ||
+ | Register 200010f NbrPorts 2 | ||
+ | Starting the controller | ||
+ | USB XHCI 0.96 | ||
+ | Bus usb@1a240000: | ||
+ | u2p:1, u3p:1 | ||
+ | Register 200010f NbrPorts 2 | ||
+ | Starting the controller | ||
+ | USB XHCI 0.96 | ||
+ | scanning bus usb@1a1c0000 for devices... 1 USB Device(s) found | ||
+ | scanning bus usb@1a240000 for devices... 2 USB Device(s) found | ||
+ | | ||
+ | BPI-R2> usb tree | ||
+ | USB device tree: | ||
+ | 1 Hub (5 Gb/s, 0mA) | ||
+ | | ||
+ | |||
+ | 1 Hub (5 Gb/s, 0mA) | ||
+ | | U-Boot XHCI Host Controller | ||
+ | | | ||
+ | +-2 Mass Storage (480 Mb/s, 200mA) | ||
+ | | ||
+ | |||
+ | BPI-R2> ls usb 0:1 | ||
+ | efi/ | ||
+ | 4767728 | ||
+ | |||
+ | 1 file(s), 1 dir(s) | ||
+ | </ | ||
+ | |||
+ | ===== dt overlays ===== | ||
+ | |||
+ | https:// | ||
+ | |||
+ | Overlay muss mit -@ compiliert werden | ||
+ | |||
+ | dtc -@ -I dts -O dtb -o bpi-r2-mac.dtb bpi-r2-mac.dts | ||
+ | |||
+ | Sonst kommt die Meldung beim laden: | ||
+ | |||
+ | failed on fdt_overlay_apply(): | ||
+ | |||
+ | Die Haupt-DTB muss auch mit -@ compiliert werden...dazu kann man beim lernel kompilieren die Variable DTC_FLAGS setzen: | ||
+ | |||
+ | export DTC_FLAGS=-@ | ||
+ | |||
+ | Verfizieren lässt sich das mit fdtdump | ||
+ | |||
+ | fdtdump arch/ | ||
+ | |||
+ | Hier sollten die Namen der dts nodes auftauchen | ||
+ | |||
+ | Beim laden in uboot muss erst die haupt-dtb geladen werden und dann das overlay. Dafür habe ich in meinem uboot folgende Variablen definiert (ausführen via run $varname) | ||
+ | |||
+ | loadfdt=fatload ${device} ${partition} ${dtaddr} ${bpi}/ | ||
+ | loaddto=echo " | ||
+ | ===== Links ===== | ||
+ | |||
+ | [[https:// | ||
+ | [[https:// | ||
+ | |||
+ | [[http:// |
bpi-r2/uboot.txt · Zuletzt geändert: 2024/05/12 13:02 von frank