Загрузчик для SPI NOR Flash одноплатного ПК OrangePi Zero2


  Intro     SPL     Shell       Env       FDT     USB     Net     SPI  

Переменные окружения

Переменные окружения, которые использует U-Boot данной сборки, можно увидеть с помощью команды printenv. Ниже показан пронумерованный список переменных, слегка отформатированный для удобства отображения (в исходном дампе, полученном командой printenv никаких номеров нет).

Список переменных

  1. arch=arm

  2. baudrate=115200

  3. board=sunxi

  4. board_name=sunxi

  5. boot_a_script=load : ; source

  6. boot_efi_binary=load : efi/boot/bootaa64.efi; if fdt addr -q ; then bootefi ;else bootefi ;fi

  7. boot_efi_bootmgr=if fdt addr -q ; then bootefi bootmgr ;else bootefi bootmgr;fi

  8. boot_extlinux=sysboot : any

  9. boot_net_usb_start=usb start

  10. boot_prefixes=/ /boot/

  11. boot_script_dhcp=boot.scr.uimg

  12. boot_scripts=boot.scr.uimg boot.scr

  13. boot_syslinux_conf=extlinux/extlinux.conf

  14. boot_targets=fel mmc0 usb0 pxe dhcp

  15. bootcmd=run distro_bootcmd

  16. bootcmd_dhcp=devtype=dhcp; run boot_net_usb_start; if dhcp ; then source ; fi;setenv efi_fdtfile ; setenv efi_old_vci ;setenv efi_old_arch ;setenv bootp_vci PXEClient:Arch:00011:UNDI:003000;setenv bootp_arch 0xb;if dhcp ; then tftpboot dtb/;if fdt addr -q ; then bootefi ; else bootefi ;fi;fi;setenv bootp_vci ;setenv bootp_arch ;setenv efi_fdtfile;setenv efi_old_arch;setenv efi_old_vci;

  17. bootcmd_fel=if test -n && test -n ; then echo '(FEL boot)'; source ; fi

  18. bootcmd_mmc0=devnum=0; run mmc_boot

  19. bootcmd_pxe=run boot_net_usb_start; dhcp; if pxe get; then pxe boot; fi

  20. bootcmd_usb0=devnum=0; run usb_boot

  21. bootdelay=2

  22. bootfile=boot.scr.uimg

  23. bootm_size=0xa000000

  24. console=ttyS0,115200

  25. cpu=armv8

  26. dfu_alt_info_ram=kernel ram 0x40080000 0x1000000;fdt ram 0x4FA00000 0x100000;ramdisk ram 0x4FF00000 0x4000000

  27. distro_bootcmd=for target in ; do run bootcmd_; done

  28. efi_dtb_prefixes=/ /dtb/ /dtb/current/

  29. ethact=ethernet@5020000

  30. ethaddr=02:00:59:aa:2d:08

  31. fdt_addr_r=0x4FA00000

  32. fdtcontroladdr=7bf22b90

  33. fdtfile=allwinner/sun50i-h616-orangepi-zero2.dtb

  34. fdtoverlay_addr_r=0x4FE00000

  35. kernel_addr_r=0x40080000

  36. kernel_comp_addr_r=0x44000000

  37. kernel_comp_size=0xb000000

  38. load_efi_dtb=load :

  39. loadaddr=0x42000000

  40. mmc_boot=if mmc dev ; then devtype=mmc; run scan_dev_for_boot_part; fi

  41. partitions=name=loader1,start=8k,size=32k,uuid=; name=loader2,size=984k,uuid=; name=esp,size=128M,bootable,uuid=; name=system,size=-,uuid=;

  42. preboot=usb start

  43. pxefile_addr_r=0x4FD00000

  44. ramdisk_addr_r=0x4FF00000

  45. scan_dev_for_boot=echo Scanning :...; for prefix in ; do run scan_dev_for_extlinux; run scan_dev_for_scripts; done;run scan_dev_for_efi;

  46. scan_dev_for_boot_part=part list -bootable devplist; env exists devplist || setenv devplist 1; for distro_bootpart in ; do if fstype : bootfstype; then run scan_dev_for_boot; fi; done; setenv devplist

  47. scan_dev_for_efi=setenv efi_fdtfile ; for prefix in ; do if test -e : ; then run load_efi_dtb; fi;done;run boot_efi_bootmgr;if test -e : efi/boot/bootaa64.efi; then echo Found EFI removable media binary efi/boot/bootaa64.efi; run boot_efi_binary; echo EFI LOAD FAILED: continuing...; fi; setenv efi_fdtfile

  48. scan_dev_for_extlinux=if test -e : ; then echo Found ; run boot_extlinux; echo SCRIPT FAILED: continuing...; fi

  49. scan_dev_for_scripts=for script in ; do if test -e : ; then echo Found U-Boot script ; run boot_a_script; echo SCRIPT FAILED: continuing...; fi; done

  50. scriptaddr=0x4FC00000

  51. serial#=32c0500059aa2d08

  52. soc=sunxi

  53. stderr=serial@5000000

  54. stdin=serial@5000000

  55. stdout=serial@5000000

  56. usb_boot=usb start; if usb dev ; then devtype=usb; run scan_dev_for_boot_part; fi

  57. uuid_gpt_esp=c12a7328-f81f-11d2-ba4b-00a0c93ec93b

  58. uuid_gpt_system=b921b045-1df0-41c3-af44-4c6f280d3fae

Комментарии:

  • Каждая строка с номером - это одна переменная.

  • Часть строки от номера до первого знака '=' - это имя переменной.

  • Часть строки после первого знака '=' - это значение переменной, т.е. её содержимое, которое может быть шестнадцатеричным числом, текстовой строкой, командой U-Boot или скриптом.

  • Каждый скрипт может иметь sh-подобный синтаксис и содержать несколько команд.

  • Конец каждой команды - символ ';' (точка с запятой)

  • Символ '=' в содержимом переменной означает присваивание. Но в присваивании с помощью команды env set cимвол '=' отсутствует.

  • Если в команде встречается имя переменной с символом '$', то это означает содержимое (значение) переменной, например, ${devtype} - это значение переменной devtype, равное dhcp (после присваивание devtype=dhcp).

  • Если в скрипте встречается выражение setenv 'имя_переменной' без указания значения, то это означает удаление данной переменной.

    Для редактирования переменных окружения в оболочке U-Boot используется команда env с соответствующими параметрами:


    => help env env - environment handling commands Usage:
    env default [-f] -a - [forcibly] reset default environment
    env default [-f] var [...] - [forcibly] reset variable(s) to their default values
    env delete [-f] var [...] - [forcibly] delete variable(s)
    env edit name - edit environment variable
    env exists name - tests for existence of variable
    env export [-t | -b | -c] [-s size] addr [var ...] - export environment
    env import [-d] [-t [-r] | -b | -c] addr [size] [var ...] - import environment
    env print [-a | name ...] - print environment
    env run var [...] - run commands in an environment variable
    env save - save environment
    env set [-f] name [arg ...]



  •   Intro     SPL     Shell       Env       FDT     USB     Net     SPI