[U-Boot-Custodians] Enabling GitLab CI builds for your trees

Heiko Schocher hs at denx.de
Fri Jul 19 07:43:21 UTC 2019


Hello Tom,

added Harald to cc, as he rewrote tbot, and may has ideas here too...

Am 19.07.2019 um 01:56 schrieb Tom Rini:
> Hey all,
> 
> We've now hit the point with GitLab migration where CI support can be
> enabled for your trees.  To do this:
> 1. Head to https://gitlab.denx.de/u-boot/custodians/u-boot-$TREE/edit
> and under "Visibility, project features, permissions" and then
> "Repository" enable Pipelines.
> 2. Now you have
> https://gitlab.denx.de/u-boot/custodians/u-boot-$TREE/settings/ci_cd as
> a valid URL.  Expand the "Runners" section.  You should see under Group
> Runners that there's "konsulko-bootbake" listed.  This is a build box
> that Konsulko is donating the use of and available to everyone.  It
> should get everything built in around 3 hours.
> 
> That's it!

Nice, thanks for your work here.

Hmmm... I have a gitlab CI setup, from where I start tbot which does tests
on a real board (board not ready for mainline, also the build is not only
U-Boot instead a yocto build, and I test with tbot a lot of more stuff than
"only" U-Boot) ...

But to have something to show for U-Boot and gitlab CI here I hacked tbot a
little bit (harald: only tbot.flags in my testcases, no need for panic :-),
so it is useable in conjunction with test/py ... Now, the shell scripts [1]
in the hook-scripts are calling tbot which connects to the board and powers it
on/off, set relais for bootmode and so on. So we can easily use test/py and
boards somewhere accessible through ssh ... also we can add more tbot testcases
if needed.

The board, aristianetos I just tried this as preparing DM support for it,
is in our denx lab in munich, while I run test.py at my home in hungary,
where I compiled U-Boot. See log [2]

So this should be easy to integrate into a gitlab CI build (of course, your
PC where you have running the gitlab-runner must have ssh access to our denx
lab ... or the lab you have installed your boards).

So may a plan could be to setup labs which are accessible for testing
on real hardware at least for custodians?

bye,
Heiko
[1] hook-script example
hs at xmglap:hook-scripts  [master] $ cat u-boot-test-console
#!/bin/bash

set -e

bin_dir="`dirname $0`"
board_type="$1"
board_ident="$2"
hostname="`hostname`"

source fix_boardname.sh
echo "board type " $board_type

tbot -C $TBOT_PATH @$TBOT_PATH/args$board_type $TBOT_ARGS interactive_uboot
hs at xmglap:hook-scripts  [master] $

[2] test.py log with underlying tbot

xmglap: laptop at my home in hungary, where I compiled U-Boot
pollux.denx.de: vlab in munich where the aristainetos board is installed

for updating U-Boot: bootmode is set to boot from "spi nor", and U-Boot is
installed on sd card. For testing U-Boot, bootmode is than set to sd card.


hs at xmglap:u-boot  [aristainetos-denx] $ 
PATH=/home/hs/data/Entwicklung/test_py_scripts/hook-scripts:$PATH;PYTHONPATH=/home/hs/data/Entwicklung/abb/uboot-rework/u-boot;./test/py/test.py 
--bd aristainetos2 -s --build-dir 
/home/hs/data/Entwicklung/work/hs/compile/u-boot/aristainetos2_defconfig
+u-boot-test-flash aristainetos2 na
fixing aristainetos2
board type  aristainetos
tbot starting ...
├─Calling ari_ub_update ...
│   ├─Logging in on hs at pollux.denx.de:22 ...
│   ├─[pollux] relais relsrv-02-03 1 off
│   ├─[pollux] connect aristainetos
│   ├─[pollux] remote_power aristainetos -l
│   │    ## aristainetos        off
│   ├─POWERON (aristainetos)
│   ├─[pollux] remote_power aristainetos on
│   │    ## Power on   aristainetos: OK
│   ├─UBOOT (aristainetos-uboot)
│   │    <> ### Connect to "aristainetos" using command: /usr/bin/telnet ts2 7015
│   │    <> Trying 192.168.1.202...
│   │    <> Connected to ts2.
│   │    <> Escape character is '^]'.
│   │    <> <debug_uart>
│   │    <>
│   │    <> U-Boot 2019.07-rc2-00202-g0bca61dd0a-dirty (May 22 2019 - 13:34:28 +0200)
│   │    <>
│   │    <> CPU:   Freescale i.MX6DL rev1.1 at 792 MHz
│   │    <> Reset cause: POR
│   │    <> Model: aristainetos2 i.MX6 Dual Lite Board 4
│   │    <>        Watchdog enabled
│   │    <> DRAM:  1 GiB
│   │    <> NAND:  1024 MiB
│   │    <> MMC:   FSL_SDHC: 0, FSL_SDHC: 1
│   │    <> Loading Environment from SPI Flash... SF: Detected n25q128a11 with page size 256 Bytes, 
erase size 4 KiB, total 16 MiB
│   │    <> OK
│   │    <> In:    serial
│   │    <> Out:   serial
│   │    <> Err:   serial
│   │    <> enable_lvds: ----------
│   │    <> Display: lb07wv8 (800x480)
│   │    <> Net:   eth0: ethernet at 2188000
│   │    <> run test_ubifs
│   ├─[aristainetos-uboot] ping 192.168.1.1
│   │    >> ethernet at 2188000 Waiting for PHY auto negotiation to complete.... done
│   │    >> Using ethernet at 2188000 device
│   │    >> host 192.168.1.1 is alive
│   ├─[aristainetos-uboot] mw 0x12000000 0 0x4000
│   ├─[aristainetos-uboot] tftp 0x12000000 aristainetos/20190507/env.txt
│   │    >> Using ethernet at 2188000 device
│   │    >> TFTP from server 192.168.1.1; our IP address is 192.168.20.75
│   │    >> Filename 'aristainetos/20190507/env.txt'.
│   │    >> Load address: 0x12000000
│   │    >> Loading: *#
│   │    >>      1.5 MiB/s
│   │    >> done
│   │    >> Bytes transferred = 6293 (1895 hex)
│   ├─[aristainetos-uboot] env import -t 0x12000000
│   │    >> ## Info: input data size = 6294 = 0x1896
│   ├─[aristainetos-uboot] run upd_uboot_sd
│   │    >> Using ethernet at 2188000 device
│   │    >> TFTP from server 192.168.1.1; our IP address is 192.168.20.75
│   │    >> Filename '/tftpboot/aristainetos/20190507/u-boot-dtb.imx.signed'.
│   │    >> Load address: 0x12000000
│   │    >> Loading: *######################################################
│   │    >>      4.1 MiB/s
│   │    >> done
│   │    >> Bytes transferred = 791872 (c1540 hex)
│   │    >>
│   │    >> MMC write: dev # 0, block # 2, count 1664 ... 1664 blocks written: OK
│   │    >>
│   │    >> MMC read: dev # 0, block # 2, count 1664 ... 1664 blocks read: OK
│   │    >> Total of 851968 byte(s) were the same
│   ├─POWEROFF (aristainetos)
│   ├─[pollux] remote_power aristainetos off
│   │    ## Power off  aristainetos: OK
│   └─Done. (25.615s)
├─────────────────────────────────────────
├─Log written to 
'/home/hs/data/Entwicklung/abb/uboot-rework/tbot-tbot2go/log/pollux-aristainetos-1052.json'
└─SUCCESS (25.803s)
============================================================================= test session starts 
=============================================================================
platform linux2 -- Python 2.7.15, pytest-2.8.7, py-1.8.0, pluggy-0.3.1
rootdir: /home/hs/data/Entwicklung, inifile:
collected 263 items
+u-boot-test-reset aristainetos2 na
board type  aristainetos2
fixing aristainetos2
not needed as connecting with tbot to target powers it on
only switch board off
tbot starting ...
├─Calling board_power_off ...
│   ├─Logging in on hs at pollux.denx.de:22 ...
│   ├─POWERON (aristainetos)
│   ├─[pollux] remote_power aristainetos off
│   │    ## Power off  aristainetos: OK
│   ├─POWEROFF (aristainetos)
│   └─Done. (7.501s)
├─────────────────────────────────────────
├─Log written to 
'/home/hs/data/Entwicklung/abb/uboot-rework/tbot-tbot2go/log/pollux-aristainetos-1053.json'
└─SUCCESS (7.704s)
tbot starting ...
├─Calling board_power_on ...
│   ├─Logging in on hs at pollux.denx.de:22 ...
│   ├─POWERON (aristainetos)
│   ├─[pollux] relais relsrv-02-03 1 on
│   ├─[pollux] remote_power aristainetos on
│   │    ## Power on   aristainetos: OK
│   ├─POWEROFF (aristainetos)
│   └─Done. (6.042s)
├─────────────────────────────────────────
├─Log written to 
'/home/hs/data/Entwicklung/abb/uboot-rework/tbot-tbot2go/log/pollux-aristainetos-1054.json'
└─SUCCESS (6.228s)
fixing aristainetos2
board type  aristainetos
tbot starting ...
├─Calling interactive_uboot ...
│   ├─Logging in on hs at pollux.denx.de:22 ...
│   ├─[pollux] connect aristainetos
│   ├─[pollux] remote_power aristainetos -l
│   │    ## aristainetos        off
│   ├─POWERON (aristainetos)
│   ├─[pollux] relais relsrv-02-03 1 on
│   ├─[pollux] remote_power aristainetos on
│   │    ## Power on   aristainetos: OK
│   ├─UBOOT (aristainetos-uboot)
│   │    <> ### Connect to "aristainetos" using command: /usr/bin/telnet ts2 7015
│   │    <> Trying 192.168.1.202...
│   │    <> Connected to ts2.
│   │    <> Escape character is '^]'.
│   │    <> <debug_uart>
│   │    <>
│   │    <> U-Boot 2019.07-00302-gbf2272d432-dirty (Jul 19 2019 - 06:33:44 +0200)abb_0.9.5.0
│   │    <>
│   │    <> CPU:   Freescale i.MX6DL rev1.1 at 792 MHz
│   │    <> Reset cause: POR
│   │    <> Model: aristainetos2 i.MX6 Dual Lite Board 7
│   │    <> DRAM:  1 GiB
│   │    <> WDT:   Started with servicing (128s timeout)
│   │    <> NAND:  1024 MiB
│   │    <> MMC:   FSL_SDHC: 0, FSL_SDHC: 1
│   │    <> Loading Environment from SPI Flash... SF: Detected n25q128a11 with page size 256 Bytes, 
erase size 4 KiB, total 16 MiB
│   │    <> OK
│   │    <> In:    serial
│   │    <> Out:   serial
│   │    <> Err:   serial
│   │    <> Display: lb07wv8 (800x480)
│   │    <> SD bootmode jumper set!
│   │    <>
│   │    <> Clear u-boot environment (set back to defaults)
│   │    <> Net:   eth0: ethernet at 2188000
│   │    <> Autoboot in 3 seconds
│   │    <> run test_ubifs
│   ├─Entering interactive shell (CTRL+D to exit) ...

=> => version
U-Boot 2019.07-00302-gbf2272d432-dirty (Jul 19 2019 - 06:33:44 +0200)abb_0.9.5.0

arm-linux-gcc.br_real (Buildroot 2017.11-rc2) 7.2.0
GNU ld (GNU Binutils) 2.29.1
=>
test/py/tests/test_000_version.py .
test/py/tests/test_avb.py ssssss
test/py/tests/test_bind.py ss
test/py/tests/test_dfu.py s
test/py/tests/test_efi_loader.py .sssss
test/py/tests/test_efi_selftest.py sssss=> printenv
addmisc=setenv bootargs ${bootargs} loglevel=8 debug drm.debug=15
addmtd=setenv bootargs ${bootargs} ${mtdparts}
ari_boot=if test ${bootmode} -ne 0 ; then mmc dev ${mmcdev};if mmc rescan; then if run 
loadbootscript hab_check_file_bootscript;then run bootscript; fi; if run mmc_load_fit 
hab_check_file_fit; then if run mmcboot; then ; else run mmc_rescue_boot;fi; else run 
usb_mmc_rescue_boot;fi; else run usb_mmc_rescue_boot;fi; else run main_rescue_boot;fi;
ari_boot_denx=echo do nothing
baudrate=115200
bmptest=tftp 13000000 /tftpboot/aristainetos/test800480.bmp;bmp info 13000000;bmp display 13000000
board_type=aristainetos2_7 at 1
boot_board_type=bootm ${fit_addr_r}#${board_type}
bootargs_base=setenv bootargs console=ttymxc4,115200 ${videoargs}
bootargs_defaults=setenv bootargs console=${console},${baudrate} ${mtdoops} ${optargs}
bootcmd=echo run test_ubifs
bootdelay=3
bootmode=1
bootscript=echo Running bootscript from mmc ...; source
bootscriptUSB=echo Running bootscript from usb-stick ...; source
console=ttymxc1
dead=gpio set 60
default_env=gpio set 47;sf probe;sf protect unlock 0 0x1000000;mw ${loadaddr} 0 0x20000;env export 
-t ${loadaddr} serial# ethaddr board_type panel addmisc addmiscM addmiscC addmiscD;env default 
-a;env import -t ${loadaddr}
disable_giga=yes
enable_hab_check=0
ethact=ethernet at 2188000
ethaddr=32:8f:5c:26:25:b9
ethprime=FEC
fdt_addr=0x18000000
fdt_addr_r=11000000
fdt_file=/dtb/imx6dl-atw2_1GB.dtb
fdt_high=0xffffffff
fdtcontroladdr=4b757318
fileaddr=12000000
filesize=1859
fit_addr_r=14000000
fit_file=/tftpboot/aristainetos/tbot/aristainetos2.itb
gatewayip=192.168.1.254
get_env=mw ${loadaddr} 0x00000000 0x20000;tftp ${loadaddr} /tftpboot/aristainetos/env.txt;env import 
-t ${loadaddr}
get_env_ub=mw ${loadaddr} 0x00000000 0x20000;tftp ${loadaddr} 
/tftpboot/aristainetos/20190507/env.txt;env import -t ${loadaddr}
hab_check_file_bootscript=echo HAB check bootscript always returns true;true
hab_check_file_fit=echo HAB check FIT file always returns true;true
hab_check_flash_fit=echo HAB check flash FIT always returns true;true
hostname=aristainetos
hs=ping 192.168.1.1;mw 0x12000000 0 0x4000;tftp 0x12000000 aristainetos/20190507/env.txt;env import 
-t 0x12000000;run upd_uboot_sd
initrd_high=0xffffffff
ipaddr=192.168.20.75
kernel_addr_r=12000000
kernel_file=/tftpboot/aristainetos/uImage-hs-cur
load_fdt=tftp ${fdt_addr_r} ${fdt_file}
load_fdt_ubi=ubifsload ${fdt_addr_r} aristainetos.dtb
load_kernel=tftp ${kernel_addr_r} ${kernel_file}
load_kernel_fit=tftp ${fit_addr_r} ${fit_file}
load_kernel_fit_nor_ubi=run prep_ubinor;ubi read ${fit_addr_r} ${nor_kernel_name}
load_kernel_fit_ubi=setenv ubi_partname ubi;run ubi_prep;ubi read ${fit_addr_r} rootfs
load_kernel_ubi=ubifsload ${kernel_addr_r} uImage
load_ubifs_fit=run ubi_prep;ubifsmount ubi:rootfs;ubifsload ${fit_addr_r} /boot/aristainetos.itb
load_uboot=tftp ${loadaddr} ${uboot}
loadaddr=0x12000000
loadbootscript=ext4load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};
loadbootscriptUSB=ext4load usb 0 ${loadaddr} ${script};
loadbootscriptUSBf=fatload usb 0 ${loadaddr} ${script};
loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}
loadfit=ext2load mmc 0:2 ${fit_addr_r} /boot/aristainetos.itb
loadzimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${zimage}
main_load_fit=ext4load mmc ${mmcdev}:${mmcpart} ${fit_addr_r} ${fit_file}
main_rescue_boot=if run main_load_fit hab_check_flash_fit; then if run mainboot; then ; else run 
r_reason_syserr;if run rescue_load_fit hab_check_file_fit;then run rescueboot; else run dead; echo 
RESCUE SYSTEM BOOT FAILURE;fi; fi; else run r_reason_syserr;if run rescue_load_fit 
hab_check_file_fit; then run rescueboot; else run dead; echo RESCUE SYSTEM BOOT FAILURE;fi; fi;
mainargs=setenv bootargs console=${console},${baudrate} root=${mmcroot}
mainboot=echo Booting from SD-card ...; run mainargs addmtd addmisc;if test -n ${addmiscM}; then run 
addmiscM;fi;if test -n ${addmiscC}; then run addmiscC;fi;if test -n ${addmiscD}; then run 
addmiscD;fi;run boot_board_type;bootm ${fit_addr_r}
mmc_load_fit=ext4load mmc ${mmcdev}:${mmcpart} ${fit_addr_r} ${fit_file}
mmc_load_uboot=ext4load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${uboot}
mmc_nfs=mmc dev0;mmc rescan;run loadzimage loadfdt;run net_args addmtd addmisc;bootz ${loadaddr} - 
${fdt_addr}
mmc_rescue_boot=run r_reason_syserr;if run mmc_rescue_load_fit hab_check_file_fit; then run 
rescueboot; else run dead; echo RESCUE SYSTEM FROM SD-CARD BOOT FAILURE;fi;
mmc_rescue_load_fit=ext4load mmc ${mmcdev}:${mmcrescuepart} ${fit_addr_r} ${rescue_fit_file}
mmc_upd_uboot=mw.b ${loadaddr} 0xff ${uboot_sz};setexpr cmp_buf ${loadaddr} + ${uboot_sz};setexpr 
uboot_maxsize ${uboot_sz} - 400;mw.b ${cmp_buf} 0x00 ${uboot_sz};run mmc_load_uboot;sf probe;sf 
erase 0 ${uboot_sz};sf write ${loadaddr} 400 ${filesize};sf read ${cmp_buf} 400 ${uboot_sz};cmp.b 
${loadaddr} ${cmp_buf} ${uboot_maxsize}
mmcargs=setenv bootargs console=${console},${baudrate} root=${mmcroot}
mmcboot=echo Booting from mmc ...;run mmcargs;run loadfit addmtd addmisc;run set_fit_default;bootm 
${fit_addr_r}
mmcdev=0
mmcpart=1
mmcrescuepart=3
mmcroot=/dev/mmcblk0p2 rootwait rw
mtdids=nand0=gpmi-nand,nor0=spi3.1
mtdparts=mtdparts=spi3.1:832k(u-boot),64k(env),64k(env-red),-(rescue-system);gpmi-nand:-(ubi)
net_args=run bootargs_defaults;setenv bootargs ${bootargs} root=/dev/nfs 
nfsroot=${serverip}:${rootpath},${nfsopts} 
ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:aristainetos:${netdev}:off
net_nfs=run load_kernel load_fdt;run net_args addmtd addmisc;bootm ${kernel_addr_r} - ${fdt_addr_r}
net_nfs_fit=run load_kernel_fit;run net_args addmtd addmisc;run set_fit_default;bootm ${fit_addr_r}
net_nfs_old=setenv kernel_file /tftpboot/aristainetos/uImage-old_mitvideo;run load_kernel;run 
net_args addmtd addmisc;bootm ${kernel_addr_r}
net_nfs_uebergabe=setenv fit_file /tftpboot/aristainetos/aristainetos.itb.uebergabe;run net_nfs_fit
netdev=eth0
nfsopts=nfsvers=3 nolock rw
nor_bootdelay=-2
nor_kernel_name=kernel
nor_nfs_fit=run load_kernel_fit_nor;run net_args addmtd addmisc;run set_fit_default;bootm ${fit_addr_r}
nor_part_name=norubi
panel=lb07wv8
prep_ubinor=sf probe;ubi part ${nor_part_name}
r_reason_syserr=setenv rescue_reason setenv bootargs \\${bootargs} rescueReason=18
rescue_fit_file=/boot/rescue.itb
rescue_load_fit=ext4load mmc ${mmcdev}:${mmcrescuepart} ${fit_addr_r} ${rescue_fit_file}
rescue_xload_boot=run r_reason_syserr;if test ${bootmode} -ne 0 ; then mmc dev ${mmcdev};if mmc 
rescan; then if run mmc_rescue_load_fit hab_check_file_fit; then run rescueboot; else usb start;if 
usb storage; then if run usb_load_rescuefit hab_check_file_fit;then run rescueboot;fi; if run 
usb_load_rescuefitf hab_check_file_fit;then run rescueboot;fi; fi;fi;run dead; echo RESCUE SYSTEM ON 
SD OR USB BOOT FAILURE;else usb start;if usb storage; then if run usb_load_rescuefit 
hab_check_file_fit; then run rescueboot;fi; if run usb_load_rescuefitf hab_check_file_fit; then run 
rescueboot;fi; fi;run dead; echo RESCUE SYSTEM ON USB BOOT FAILURE;fi; else if run rescue_load_fit 
hab_check_file_fit; then run rescueboot; else run dead; echo RESCUE SYSTEM ON BOARD BOOT FAILURE;fi; fi;
rescueargs=setenv bootargs console=${console},${baudrate} root=/dev/ram rw
rescueboot=echo Booting rescue system ...; run rescueargs addmtd addmisc;if test -n 
${rescue_reason}; then run rescue_reason;fi;if test -n ${addmiscM}; then run addmiscM;fi;if test -n 
${addmiscC}; then run addmiscC;fi;if test -n ${addmiscD}; then run addmiscD;fi;run 
boot_board_type;if bootm ${fit_addr_r}; then ; else run dead; fi;
rootfsname=rootfs
rootpath=/opt/eldk-5.5/armv7a-hf/rootfs-sato-sdk
script=u-boot.scr
serverip=192.168.1.1
set_cr_var_0=if itest.s ${volname} == rootfs; then setenv volsize 2000000; fi
set_cr_var_1=if itest.s ${volname} == userfs; then setenv volsize 8000000; fi
set_create_var=run set_cr_var_0;run set_cr_var_1
set_fit_default=fdt addr ${fit_addr_r};fdt set /configurations default ${board_type}
splashpos=m,m
tbot_boot_linux=run net_nfs_fit
tbot_cmp_uboot=cmp.b ${loadaddr} 10200000 cc000
tbot_upd_uboot=run upd_uboot
test_ubifs=run ubi_prep;ubifsmount ubi:rootfs;ubifsload 12000000 /boot/aristainetos.itb
time_ubi_part=echo start;date;ubi part ubi ${ubi_pgsz};date;echo end
ubi_args=run bootargs_defaults;setenv bootargs ${bootargs} ubi.mtd=1,${ubi_pgsz} 
root=ubi0:${rootfsname} rootfstype=ubifs 
ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}:${netdev}:off
ubi_create_vol=for i in ${ubi_vollist};do setenv volname $i;run set_create_var;ubi create ${volname} 
${volsize}; done
ubi_make=setenv ubi_partname ubi;setenv ubi_vollist rootfs userfs;run ubi_make2
ubi_make2=nand erase.part ${ubi_partname};run ubi_prep;run ubi_create_vol
ubi_nfs=run ubiprep load_kernel_ubi load_fdt_ubi;run net_args addmtd addmisc;bootm ${kernel_addr_r} 
- ${fdt_addr_r}
ubi_nfs_fit=run load_kernel_fit_ubi;run net_args addmtd addmisc;run set_fit_default;bootm ${fit_addr_r}
ubi_nfs_short=setenv ubi_partname kernel;run ubi_prep;ubi read 0x10007fa0 kernelimg;ubi read 
${fdt_addr_r} parimg;bootspl ${kernel_addr_r} - ${fdt_addr_r}
ubi_partname=ubi
ubi_pgsz=4096
ubi_prep=sf probe;ubi part ${ubi_partname} ${ubi_pgsz}
ubi_ubi=run ubi_prep load_kernel_ubi load_fdt_ubi;run bootargs_defaults ubi_args addmtd 
addmisc;bootm ${kernel_addr_r} - ${fdt_addr_r}
ubi_ubi_fit=run load_ubifs_fit;run bootargs_defaults ubi_args addmtd addmisc;bootm ${fit_addr_r}
ubirootfs_file=/tftpboot/aristainetos/rootfs-minimal.ubifs
uboot=/tftpboot/aristainetos/20190507/u-boot-dtb.imx
uboot_sz=d0000
upd_kernel_fit_nor=run load_kernel_fit;sf probe;sf erase f0000 f10000;run prep_ubinor;ubi create 
${nor_kernel_name} 600000;ubi write ${fit_addr_r} ${nor_kernel_name} ${filesize}
upd_kernel_ubi=setenv ubi_partname ubi;run ubi_prep load_kernel_fit;ubi write ${fit_addr_r} rootfs 
${filesize}
upd_kernel_ubi_short=setenv ubi_partname kernel;run ubi_prep load_kernel;ubi write ${fit_addr_r} 
kernelimg ${filesize}
upd_org=tftp 10100000 /tftpboot/aristainetos/u-boot.bin-org;sf probe;sf erase 0 80000;sf write 
10100400 400 80000
upd_par_ubi=setenv ubi_partname kernel;run ubi_prep load_kernel load_fdt;run net_args addmtd 
addmisc;spl export fdt ${kernel_addr_r} - ${fdt_addr_r};ubi write ${fdt_addr_r} parimg c000
upd_ubirootfs=run ubi_prep;tftp ${loadaddr} ${ubirootfs_file};ubi write ${loadaddr} rootfs ${filesize}
upd_uboot=mw.b ${loadaddr} 0xff ${uboot_sz};mw.b 10200000 0xff ${uboot_sz};run load_uboot;sf 
probe;sf erase 0 ${uboot_sz};sf write ${loadaddr} 400 ${filesize};sf read 10200000 400 
${uboot_sz};cmp.b ${loadaddr} 10200000 cc000
upd_uboot_sd=run load_uboot;mmc write ${loadaddr} 2 680;mmc read 11000000 2 680;cmp.b ${loadaddr} 
11000000 d0000
usb_load_fit=ext4load usb 0 ${fit_addr_r} ${fit_file}
usb_load_fitf=fatload usb 0 ${fit_addr_r} ${fit_file}
usb_load_rescuefit=ext4load usb 0 ${fit_addr_r} ${rescue_fit_file}
usb_load_rescuefitf=fatload usb 0 ${fit_addr_r} ${rescue_fit_file}
usb_mmc_rescue_boot=usb start;if usb storage; then if run loadbootscriptUSB 
hab_check_file_bootscript;then run bootscriptUSB; fi; if run loadbootscriptUSBf 
hab_check_file_bootscript;then run bootscriptUSB; fi; if run usb_load_fit hab_check_file_fit; then 
run usbboot; fi; if run usb_load_fitf hab_check_file_fit; then run usbboot; fi; if run 
usb_load_rescuefit hab_check_file_fit;then run r_reason_syserr rescueboot;fi; if run 
usb_load_rescuefitf hab_check_file_fit;then run r_reason_syserr rescueboot;fi; run 
mmc_rescue_boot;fi; run mmc_rescue_boot;
usbargs=setenv bootargs console=${console},${baudrate} root=${usbroot}
usbboot=echo Booting from usb-stick ...; run usbargs addmtd addmisc;if test -n ${addmiscM}; then run 
addmiscM;fi;if test -n ${addmiscC}; then run addmiscC;fi;if test -n ${addmiscD}; then run 
addmiscD;fi;run boot_board_type;bootm ${fit_addr_r}
usbroot=/dev/sda1 rootwait rw
ver=U-Boot 2019.07-00302-gbf2272d432-dirty (Jul 19 2019 - 06:33:44 +0200)abb_0.9.5.0
zimage=zImage

Environment size: 11916/12283 bytes
=> => printenv fdt_file
fdt_file=/dtb/imx6dl-atw2_1GB.dtb
=>
test/py/tests/test_env.py .=> echo $test_env_0

=> .=> printenv test_env_0
## Error: "test_env_0" not defined
=> .=> setenv test_env_0
=> => echo $test_env_0

=> .=> setenv test_env_0 "foo"
=> => printenv test_env_0
test_env_0=foo
=> .=> setenv test_env_0 "bar"
=> => printenv test_env_0
test_env_0=bar
=> .=> setenv test_env_0
=> => echo $test_env_0

=> .=> setenv test_env_0 " "
=> => setenv test_env_1 " 1${test_env_0}${test_env_0} 2 "
=> => printenv test_env_1
test_env_1= 1   2
=> => setenv test_env_0
=> => setenv test_env_1
=> .=> bdinfo
arch_number = 0x00001195
boot_params = 0x10000100
DRAM bank   = 0x00000000
-> start    = 0x10000000
-> size     = 0x40000000
baudrate    = 115200 bps
TLB addr    = 0x4fff0000
relocaddr   = 0x4f765000
reloc off   = 0x37f65000
irq_sp      = 0x4b757300
sp start    = 0x4b7572f0
FB base     = 0x4f800000
Early malloc usage: 52c / 2000
fdt_blob    = 0x4b757318
=> => env import -c 10000000 -
## Error: external checksum format must pass size
=> .=> env import -c 10000000 - foo1 foo2 foo4
## Error: external checksum format must pass size
=> .=> setenv foo1 "bar1"
=> => setenv foo2 "bar2"
=> => setenv foo3 "bar3"
=> => env export 10000000
=> => setenv foo1
=> => setenv foo2 "test2"
=> => setenv foo4 "bar4"
=> => env import 10000000 - foo1 foo2 foo4
## Warning: defaulting to text format
## Info: input data size = 11946 = 0x2EAA
=> => printenv foo1
foo1=bar1
=> => printenv foo2
foo2=bar2
=> => printenv foo3
foo3=bar3
=> => printenv foo4
foo4=bar4
=> => setenv foo1
=> => setenv foo2
=> => setenv foo3
=> => setenv foo4
=> .=> setenv foo1 "bar1"
=> => setenv foo2 "bar2"
=> => setenv foo3 "bar3"
=> => env export 10000000
=> => setenv foo1
=> => setenv foo2 "test2"
=> => setenv foo4 "bar4"
=> => env import -d 10000000 - foo1 foo2 foo4
## Warning: defaulting to text format
## Info: input data size = 11946 = 0x2EAA
WARNING: 'foo4' not in imported env, deleting it!
=> => printenv foo1
foo1=bar1
=> => printenv foo2
foo2=bar2
=> => printenv foo3
foo3=bar3
=> => echo $foo4

=> => setenv foo1
=> => setenv foo2
=> => setenv foo3
=> => setenv foo4
=> .
test/py/tests/test_fit.py s
test/py/tests/test_fpga.py ssssssssssssssssssssssssssss
test/py/tests/test_gpt.py sssssss
test/py/tests/test_handoff.py s=> help
?         - alias for 'help'
base      - print or set address offset
bdinfo    - print Board Info structure
blkcache  - block cache diagnostics and control
bmp       - manipulate BMP image data
boot      - boot default, i.e., run 'bootcmd'
bootd     - boot default, i.e., run 'bootcmd'
bootefi   - Boots an EFI payload from memory
bootelf   - Boot from an ELF image in memory
bootm     - boot application image from memory
bootp     - boot image via network using BOOTP/TFTP protocol
bootvx    - Boot vxWorks from an ELF image
bootz     - boot Linux zImage image from memory
chpart    - change active partition
clocks    - display clocks
cmp       - memory compare
coninfo   - print console devices and information
cp        - memory copy
cpu       - Multiprocessor CPU boot manipulation and release
crc32     - checksum calculation
date      - get/set/reset date & time
dcache    - enable or disable data cache
dhcp      - boot image via network using DHCP/TFTP protocol
dm        - Driver model low level access
echo      - echo args to console
editenv   - edit environment variable
eeprom    - EEPROM sub-system
env       - environment handling commands
exit      - exit script
ext2load  - load binary file from a Ext2 filesystem
ext2ls    - list files in a directory (default /)
ext4load  - load binary file from a Ext4 filesystem
ext4ls    - list files in a directory (default /)
ext4size  - determine a file's size
ext4write - create a file in the root directory
false     - do nothing, unsuccessfully
fatinfo   - print information about filesystem
fatload   - load binary file from a dos filesystem
fatls     - list files in a directory (default /)
fatsize   - determine a file's size
fdt       - flattened device tree utility commands
fstype    - Look up a filesystem type
fuse      - Fuse sub-system
go        - start application at address 'addr'
gpio      - query and control gpio pins
hab_auth_img- authenticate image via HAB
hab_auth_img_or_fail- authenticate image via HAB on failure drop to USB BootROM mode
hab_failsafe- run BootROM failsafe routine
hab_status- display HAB status
help      - print command description/usage
i2c       - I2C sub-system
icache    - enable or disable instruction cache
iminfo    - print header information for application image
imxtract  - extract a part of a multi-image
itest     - return true/false on integer compare
lcdputs   - print string on video framebuffer
led       - manage LEDs
lgset     - set lgdisplay
ln        - Create a symbolic link
load      - load binary file from a filesystem
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
ls        - list files in a directory (default /)
md        - memory display
mdio      - MDIO utility commands
mii       - MII utility commands
mm        - memory modify (auto-incrementing address)
mmc       - MMC sub system
mmcinfo   - display MMC info
mtdparts  - define flash/nand partitions
mw        - memory write (fill)
nand      - NAND sub-system
nboot     - boot from NAND device
nfs       - boot image via network using NFS protocol
nm        - memory modify (constant address)
part      - disk partition related commands
ping      - send ICMP ECHO_REQUEST to network host
printenv  - print environment variables
reset     - Perform RESET of the CPU
run       - run commands in an environment variable
save      - save file to a filesystem
saveenv   - save environment variables to persistent storage
setcurs   - set cursor position within screen
setenv    - set environment variables
setexpr   - set environment variable as the result of eval expression
sf        - SPI flash sub-system
showvar   - print local hushshell variables
size      - determine a file's size
sleep     - delay execution for some time
source    - run script from memory
test      - minimal test like /bin/sh
tftpboot  - boot image via network using TFTP protocol
true      - do nothing, successfully
ubi       - ubi commands
ubifsload - load file from an UBIFS filesystem
ubifsls   - list files in a directory
ubifsmount- mount UBIFS volume
ubifsumount- unmount UBIFS volume
usb       - USB sub-system
usbboot   - boot from USB device
version   - print monitor, compiler and linker version
=>
test/py/tests/test_help.py .=> setenv ut_var_nonexistent
=> => setenv ut_var_exists 1
=>
test/py/tests/test_hush_if_test.py .=> if true; then echo true; else echo false; fi
true
=> .=> if false; then echo true; else echo false; fi
false
=> .=> if test aaa = aaa; then echo true; else echo false; fi
true
=> .=> if test aaa = bbb; then echo true; else echo false; fi
false
=> .=> if test aaa != bbb; then echo true; else echo false; fi
true
=> .=> if test aaa != aaa; then echo true; else echo false; fi
false
=> .=> if test aaa < bbb; then echo true; else echo false; fi
true
=> .=> if test bbb < aaa; then echo true; else echo false; fi
false
=> .=> if test bbb > aaa; then echo true; else echo false; fi
true
=> .=> if test aaa > bbb; then echo true; else echo false; fi
false
=> .=> if test 123 -eq 123; then echo true; else echo false; fi
true
=> .=> if test 123 -eq 456; then echo true; else echo false; fi
false
=> .=> if test 123 -ne 456; then echo true; else echo false; fi
true
=> .=> if test 123 -ne 123; then echo true; else echo false; fi
false
=> .=> if test 123 -lt 456; then echo true; else echo false; fi
true
=> .=> if test 123 -lt 123; then echo true; else echo false; fi
false
=> .=> if test 456 -lt 123; then echo true; else echo false; fi
false
=> .=> if test 123 -le 456; then echo true; else echo false; fi
true
=> .=> if test 123 -le 123; then echo true; else echo false; fi
true
=> .=> if test 456 -le 123; then echo true; else echo false; fi
false
=> .=> if test 456 -gt 123; then echo true; else echo false; fi
true
=> .=> if test 123 -gt 123; then echo true; else echo false; fi
false
=> .=> if test 123 -gt 456; then echo true; else echo false; fi
false
=> .=> if test 456 -ge 123; then echo true; else echo false; fi
true
=> .=> if test 123 -ge 123; then echo true; else echo false; fi
true
=> .=> if test 123 -ge 456; then echo true; else echo false; fi
false
=> .=> if test -z ""; then echo true; else echo false; fi
true
=> .=> if test -z "aaa"; then echo true; else echo false; fi
false
=> .=> if test -n "aaa"; then echo true; else echo false; fi
true
=> .=> if test -n ""; then echo true; else echo false; fi
false
=> .=> if test ! aaa = aaa; then echo true; else echo false; fi
false
=> .=> if test ! aaa = bbb; then echo true; else echo false; fi
true
=> .=> if test ! ! aaa = aaa; then echo true; else echo false; fi
true
=> .=> if test ! ! aaa = bbb; then echo true; else echo false; fi
false
=> .=> if test aaa != aaa -o bbb != bbb; then echo true; else echo false; fi
false
=> .=> if test aaa != aaa -o bbb = bbb; then echo true; else echo false; fi
true
=> .=> if test aaa = aaa -o bbb != bbb; then echo true; else echo false; fi
true
=> .=> if test aaa = aaa -o bbb = bbb; then echo true; else echo false; fi
true
=> .=> if test aaa != aaa -a bbb != bbb; then echo true; else echo false; fi
false
=> .=> if test aaa != aaa -a bbb = bbb; then echo true; else echo false; fi
false
=> .=> if test aaa = aaa -a bbb != bbb; then echo true; else echo false; fi
false
=> .=> if test aaa = aaa -a bbb = bbb; then echo true; else echo false; fi
true
=> .=> if test ! aaa != aaa -o ! bbb != bbb; then echo true; else echo false; fi
true
=> .=> if test ! aaa != aaa -o ! bbb = bbb; then echo true; else echo false; fi
true
=> .=> if test ! aaa = aaa -o ! bbb != bbb; then echo true; else echo false; fi
true
=> .=> if test ! aaa = aaa -o ! bbb = bbb; then echo true; else echo false; fi
false
=> .=> if test ! ! aaa != aaa -o ! ! bbb != bbb; then echo true; else echo false; fi
false
=> .=> if test ! ! aaa != aaa -o ! ! bbb = bbb; then echo true; else echo false; fi
true
=> .=> if test ! ! aaa = aaa -o ! ! bbb != bbb; then echo true; else echo false; fi
true
=> .=> if test ! ! aaa = aaa -o ! ! bbb = bbb; then echo true; else echo false; fi
true
=> .=> if test -z "$ut_var_nonexistent"; then echo true; else echo false; fi
true
=> .=> if test -z "$ut_var_exists"; then echo true; else echo false; fi
false
=> .=> setenv ut_var_exists
=> .s
test/py/tests/test_log.py ss=> mw 10000000 0 10
=> => md 10000000 10
10000000: 00000000 00000000 00000000 00000000    ................
10000010: 00000000 00000000 00000000 00000000    ................
10000020: 00000000 00000000 00000000 00000000    ................
10000030: 00000000 00000000 00000000 00000000    ................
=> => mw 10000000 a5f09876
=> => md 10000000 10
10000000: a5f09876 00000000 00000000 00000000    v...............
10000010: 00000000 00000000 00000000 00000000    ................
10000020: 00000000 00000000 00000000 00000000    ................
10000030: 00000000 00000000 00000000 00000000    ................
=>
test/py/tests/test_md.py .=> md 10000000 10
10000000: a5f09876 00000000 00000000 00000000    v...............
10000010: 00000000 00000000 00000000 00000000    ................
10000020: 00000000 00000000 00000000 00000000    ................
10000030: 00000000 00000000 00000000 00000000    ................
=> =>
10000040: 64610a35 64746d64 7465733d 20766e65    5.addmtd=setenv
10000050: 746f6f62 73677261 627b2420 61746f6f    bootargs ${boota
10000060: 7d736772 6d7b2420 61706474 7d737472    rgs} ${mtdparts}
10000070: 6972610a 6f6f625f 66693d74 73657420    .ari_boot=if tes
=> .
test/py/tests/test_mmc_rd.py ssss
test/py/tests/test_net.py .sssss
test/py/tests/test_ofplatdata.py ss
test/py/tests/test_pinmux.py sssssss
test/py/tests/test_sandbox_exit.py ss
test/py/tests/test_sf.py ssss=> echo hello
hello
=>
test/py/tests/test_shell_basics.py .=> echo hello; echo world
hello
world
=> .=> setenv list 1; setenv list ${list}2; setenv list ${list}3; echo ${list}
123
=> => setenv list
=> .=> setenv foo "setenv monty 1; setenv python 2"
=> => run foo
=> => echo $monty
1
=> => echo $python
2
=> => setenv foo
=> => setenv monty
=> => setenv python
=> .=> sleep 3
=>
test/py/tests/test_sleep.py .
test/py/tests/test_tpm2.py sssssssssss
test/py/tests/test_ums.py s=> non_existent_cmd
Unknown command 'non_existent_cmd' - try 'help'
=>
test/py/tests/test_unknown_cmd.py .
test/py/tests/test_ut.py ss
test/py/tests/test_vboot.py s
test/py/tests/test_fs/test_basic.py sssssssssssssssssssssssssssssssssssssss
test/py/tests/test_fs/test_ext.py ssssssssssssssssss
test/py/tests/test_fs/test_mkdir.py ssssssssssss
test/py/tests/test_fs/test_symlink.py ssss
test/py/tests/test_fs/test_unlink.py ssssssssssssss

=================================================================== 78 passed, 185 skipped in 63.72 
seconds ===================================================================
hs at xmglap:u-boot  [aristainetos-denx] $

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-52   Fax: +49-8142-66989-80   Email: hs at denx.de


More information about the U-Boot-Custodians mailing list