how is u-boot-initial-env created?

I guess at this point I’m just looking for a means to add env variables to the extlinux.conf file

so in
./meta-ti/meta-ti-bsp/conf/machine/include/ti33x.inc
is where you would add your variable,

also, i think you need to add ‘-f’ to force a recompile
bitbake -c compile virtual/bootloader

hmmm… maybe that’s my issue. I don’t see a meta-ti layer. So thinking I first need to add that.

/poky$ ls -ll
total 96
drwxrwxr-x 6 tn70742 tn70742 4096 Oct 4 00:49 bitbake
drwxrwxr-x 8 tn70742 tn70742 4096 Jan 8 09:54 build
drwxrwxr-x 4 tn70742 tn70742 4096 Oct 4 00:49 contrib
drwxrwxr-x 21 tn70742 tn70742 4096 Oct 4 00:49 documentation
-rw-rw-r-- 1 tn70742 tn70742 834 Oct 4 00:49 LICENSE
-rw-rw-r-- 1 tn70742 tn70742 15394 Oct 4 00:49 LICENSE.GPL-2.0-only
-rw-rw-r-- 1 tn70742 tn70742 1286 Oct 4 00:49 LICENSE.MIT
-rw-rw-r-- 1 tn70742 tn70742 2202 Oct 4 00:49 MAINTAINERS.md
-rw-rw-r-- 1 tn70742 tn70742 1222 Oct 4 00:49 Makefile
-rw-rw-r-- 1 tn70742 tn70742 244 Oct 4 00:49 MEMORIAM
drwxrwxr-x 20 tn70742 tn70742 4096 Oct 4 00:49 meta
drwxrwxr-x 5 tn70742 tn70742 4096 Oct 4 00:49 meta-poky
drwxrwxr-x 9 tn70742 tn70742 4096 Oct 4 00:49 meta-selftest
drwxrwxr-x 8 tn70742 tn70742 4096 Oct 4 00:49 meta-skeleton
drwxrwxr-x 8 tn70742 tn70742 4096 Dec 27 10:58 meta-yocto-bsp
drwxrwxr-x 7 tn70742 tn70742 4096 Jan 3 09:28 meta-yoctotraining
-rwxrwxr-x 1 tn70742 tn70742 1297 Oct 4 00:49 oe-init-build-env
lrwxrwxrwx 1 tn70742 tn70742 33 Oct 4 00:49 README.hardware.md → meta-yocto-bsp/README.hardware.md
lrwxrwxrwx 1 tn70742 tn70742 14 Oct 4 00:49 README.md → README.poky.md
-rw-rw-r-- 1 tn70742 tn70742 791 Oct 4 00:49 README.OE-Core.md
lrwxrwxrwx 1 tn70742 tn70742 24 Oct 4 00:49 README.poky.md → meta-poky/README.poky.md
-rw-rw-r-- 1 tn70742 tn70742 529 Oct 4 00:49 README.qemu.md
drwxrwxr-x 10 tn70742 tn70742 4096 Oct 4 00:49 scripts
-rw-rw-r-- 1 tn70742 tn70742 1177 Oct 4 00:49 SECURITY.md
/poky$ find -name “meta-ti
/poky$

to use meta-ti do I need to change the MACHINE in my local.conf file? currently my machine is set to beaglebone-yocto I believe.

Changing my machine doesn’t seem right to me.

hmmm… I tried this before but it did not work. Or at least I did not think it worked. I simply patched my

I patched the u-boot recipe with u-boot_2022.01.bbappend (shown below)

FILESEXTRAPATHS:prepend := "${THISDIR}/:"
SRC_URI:append = " file://yoctotraining-additional-uboot-env-variables.patch"

My patch looks like this

diff --git a/include/configs/am335x_evm.h b/include/configs/am335x_evm.h
index 7fb1b3a3e3..2639f931d8 100644
--- a/include/configs/am335x_evm.h
+++ b/include/configs/am335x_evm.h
@@ -86,7 +86,12 @@
 #ifndef CONFIG_SPL_BUILD
 #include <environment/ti/dfu.h>

+#define TIMS_EXTRA_CONFIG \
+       "myvar1=myval1\0" \
+        "myvar2=myval2\0"
+
 #define CONFIG_EXTRA_ENV_SETTINGS \
+       TIMS_EXTRA_CONFIG \
        DEFAULT_LINUX_BOOT_ENV \
        "fdtfile=undefined\0" \
        "finduuid=part uuid mmc 0:2 uuid\0" \

when I build my image, I see my initial

bootcmd=run findfdt; run init_console; run finduuid; run distro_bootcmd
bootdelay=2
baudrate=115200
loadaddr=0x82000000
arch=arm
cpu=armv7
board=am335x
board_name=am335x
vendor=ti
soc=am33xx
myvar1=myval1
myvar2=myval2
loadaddr=0x82000000
kernel_addr_r=0x82000000
fdtaddr=0x88000000
dtboaddr=0x89000000
fdt_addr_r=0x88000000
rdaddr=0x88080000
ramdisk_addr_r=0x88080000
scriptaddr=0x80000000
pxefile_addr_r=0x80100000
bootm_size=0x10000000
boot_fdt=try
fdtfile=undefined
finduuid=part uuid mmc 0:2 uuid
console=ttyO0,115200n8
partitions=uuid_disk=${uuid_gpt_disk};name=bootloader,start=384K,size=1792K,uuid=${uuid_gpt_bootloader};name=rootfs,start=2688K,size=-,uuid=${uuid_gpt_rootfs}
optargs=
ramroot=/dev/ram0 rw
ramrootfstype=ext2
spiroot=/dev/mtdblock4 rw
spirootfstype=jffs2
spisrcaddr=0xe0000
spiimgsize=0x362000
spibusno=0
spiargs=setenv bootargs console=${console} ${optargs} root=${spiroot} rootfstype=${spirootfstype}
ramargs=setenv bootargs console=${console} ${optargs} root=${ramroot} rootfstype=${ramrootfstype}
loadramdisk=load mmc ${mmcdev} ${rdaddr} ramdisk.gz
spiboot=echo Booting from spi …; run spiargs; sf probe ${spibusno}:0; sf read ${loadaddr} ${spisrcaddr} ${spiimgsize}; bootz ${loadaddr}
ramboot=echo Booting from ramdisk …; run ramargs; bootz ${loadaddr} ${rdaddr} ${fdtaddr}
findfdt=if test $board_name = A335BONE; then setenv fdtfile am335x-bone.dtb; fi; if test $board_name = A335BNLT; then setenv fdtfile am335x-boneblack.dtb; fi; if test $board_name = A335PBGL; then setenv fdtfile am335x-pocketbeagle.dtb; fi; if test $board_name = BBBW; then setenv fdtfile am335x-boneblack-wireless.dtb; fi; if test $board_name = BBG1; then setenv fdtfile am335x-bonegreen.dtb; fi; if test $board_name = BBGW; then setenv fdtfile am335x-bonegreen-wireless.dtb; fi; if test $board_name = BBBL; then setenv fdtfile am335x-boneblue.dtb; fi; if test $board_name = BBEN; then setenv fdtfile am335x-sancloud-bbe.dtb; fi; if test $board_name = A33515BB; then setenv fdtfile am335x-evm.dtb; fi; if test $board_name = A335X_SK; then setenv fdtfile am335x-evmsk.dtb; fi; if test $board_name = A335_ICE; then setenv fdtfile am335x-icev2.dtb; fi; if test $fdtfile = undefined; then echo WARNING: Could not determine device tree to use; fi;
init_console=if test $board_name = A335_ICE; then setenv console ttyO3,115200n8;else setenv console ttyO0,115200n8;fi;
mtdids=nand0=nand.0
mtdparts=mtdparts=nand.0:128k(NAND.SPL),128k(NAND.SPL.backup1),128k(NAND.SPL.backup2),128k(NAND.SPL.backup3),256k(NAND.u-boot-spl-os),1m(NAND.u-boot),128k(NAND.u-boot-env),128k(NAND.u-boot-env.backup1),8m(NAND.kernel),-(NAND.file-system)
nandargs=setenv bootargs console=${console} ${optargs} root=${nandroot} rootfstype=${nandrootfstype}
nandroot=ubi0:rootfs rw ubi.mtd=NAND.file-system,2048
nandrootfstype=ubifs rootwait=1
nandboot=echo Booting from nand …; run nandargs; nand read ${fdtaddr} NAND.u-boot-spl-os; nand read ${loadaddr} NAND.kernel; bootz ${loadaddr} - ${fdtaddr}
static_ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off
nfsopts=nolock
rootpath=/export/rootfs
netloadimage=tftp ${loadaddr} ${bootfile}
netloadfdt=tftp ${fdtaddr} ${fdtfile}
netargs=setenv bootargs console=${console} ${optargs} root=/dev/nfs nfsroot=${serverip}:${rootpath},${nfsopts} rw ip=dhcp
netboot=echo Booting from network …; setenv autoload no; dhcp; run netloadimage; run netloadfdt; run netargs; bootz ${loadaddr} - ${fdtaddr}
dfu_alt_info_emmc=rawemmc raw 0 3751936;boot part 1 1;rootfs part 1 2;MLO fat 1 1;MLO.raw raw 0x100 0x200;u-boot.img.raw raw 0x300 0x1000;u-env.raw raw 0x1300 0x200;spl-os-args.raw raw 0x1500 0x200;spl-os-image.raw raw 0x1700 0x6900;spl-os-args fat 1 1;spl-os-image fat 1 1;u-boot.img fat 1 1;uEnv.txt fat 1 1
dfu_alt_info_mmc=boot part 0 1;rootfs part 0 2;MLO fat 0 1;MLO.raw raw 0x100 0x200;u-boot.img.raw raw 0x300 0x1000;u-env.raw raw 0x1300 0x200;spl-os-args.raw raw 0x1500 0x200;spl-os-image.raw raw 0x1700 0x6900;spl-os-args fat 0 1;spl-os-image fat 0 1;u-boot.img fat 0 1;uEnv.txt fat 0 1
dfu_alt_info_ram=kernel ram 0x80200000 0x4000000;fdt ram 0x80f80000 0x80000;ramdisk ram 0x81000000 0x4000000
dfu_alt_info_nand=SPL part 0 1;SPL.backup1 part 0 2;SPL.backup2 part 0 3;SPL.backup3 part 0 4;u-boot part 0 5;u-boot-spl-os part 0 6;kernel part 0 8;rootfs part 0 9
mmc_boot=if mmc dev ${devnum}; then devtype=mmc; run scan_dev_for_boot_part; fi
boot_net_usb_start=usb start
usb_boot=usb start; if usb dev ${devnum}; then devtype=usb; run scan_dev_for_boot_part; fi
boot_efi_bootmgr=if fdt addr ${fdt_addr_r}; then bootefi bootmgr ${fdt_addr_r};else bootefi bootmgr;fi
boot_efi_binary=load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} efi/boot/bootarm.efi; if fdt addr ${fdt_addr_r}; then bootefi ${kernel_addr_r} ${fdt_addr_r};else bootefi ${kernel_addr_r} ${fdtcontroladdr};fi
load_efi_dtb=load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} ${prefix}${efi_fdtfile}
efi_dtb_prefixes=/ /dtb/ /dtb/current/
scan_dev_for_efi=setenv efi_fdtfile ${fdtfile}; if test -z “${fdtfile}” -a -n “${soc}”; then setenv efi_fdtfile ${soc}-${board}${boardver}.dtb; fi; for prefix in ${efi_dtb_prefixes}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${efi_fdtfile}; then run load_efi_dtb; fi;done;run boot_efi_bootmgr;if test -e ${devtype} ${devnum}:${distro_bootpart} efi/boot/bootarm.efi; then echo Found EFI removable media binary efi/boot/bootarm.efi; run boot_efi_binary; echo EFI LOAD FAILED: continuing…; fi; setenv efi_fdtfile
boot_prefixes=/ /boot/
boot_scripts=boot.scr.uimg boot.scr
boot_script_dhcp=boot.scr.uimg
boot_targets=mmc0 mmc1 nand0 usb0 pxe dhcp
boot_syslinux_conf=extlinux/extlinux.conf
boot_extlinux=sysboot ${devtype} ${devnum}:${distro_bootpart} any ${scriptaddr} ${prefix}${boot_syslinux_conf}
scan_dev_for_extlinux=if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${boot_syslinux_conf}; then echo Found ${prefix}${boot_syslinux_conf}; run boot_extlinux; echo SCRIPT FAILED: continuing…; fi
boot_a_script=load ${devtype} ${devnum}:${distro_bootpart} ${scriptaddr} ${prefix}${script}; source ${scriptaddr}
scan_dev_for_scripts=for script in ${boot_scripts}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${script}; then echo Found U-Boot script ${prefix}${script}; run boot_a_script; echo SCRIPT FAILED: continuing…; fi; done
scan_dev_for_boot=echo Scanning ${devtype} ${devnum}:${distro_bootpart}…; for prefix in ${boot_prefixes}; do run scan_dev_for_extlinux; run scan_dev_for_scripts; done;run scan_dev_for_efi;
scan_dev_for_boot_part=part list ${devtype} ${devnum} -bootable devplist; env exists devplist || setenv devplist 1; for distro_bootpart in ${devplist}; do if fstype ${devtype} ${devnum}:${distro_bootpart} bootfstype; then run scan_dev_for_boot; fi; done; setenv devplist
bootcmd_mmc0=devnum=0; run mmc_boot
bootcmd_mmc1=devnum=1; run mmc_boot
bootcmd_nand=run nandboot
bootcmd_usb0=devnum=0; run usb_boot
bootcmd_pxe=run boot_net_usb_start; dhcp; if pxe get; then pxe boot; fi
bootcmd_dhcp=devtype=dhcp; run boot_net_usb_start; if dhcp ${scriptaddr} ${boot_script_dhcp}; then source ${scriptaddr}; fi;setenv efi_fdtfile ${fdtfile}; if test -z “${fdtfile}” -a -n “${soc}”; then setenv efi_fdtfile ${soc}-${board}${boardver}.dtb; fi; setenv efi_old_vci ${bootp_vci};setenv efi_old_arch ${bootp_arch};setenv bootp_vci PXEClient:Arch:00010:UNDI:003000;setenv bootp_arch 0xa;if dhcp ${kernel_addr_r}; then tftpboot ${fdt_addr_r} dtb/${efi_fdtfile};if fdt addr ${fdt_addr_r}; then bootefi ${kernel_addr_r} ${fdt_addr_r}; else bootefi ${kernel_addr_r} ${fdtcontroladdr};fi;fi;setenv bootp_vci ${efi_old_vci};setenv bootp_arch ${efi_old_arch};setenv efi_fdtfile;setenv efi_old_arch;setenv efi_old_vci;
distro_bootcmd=for target in ${boot_targets}; do run bootcmd_${target}; done

It’s a bit of a mess, but you can see my myvar1 and myvar2 above in the initial environment file.

So at this point it seems like everything should be ok. I would think I would see my custom myvar1 and myvar2 on target.

fw_printenv
seems to be part of the kernel build
u-boot-tools is installed, but fw_ is not found.

does yocto have u-boot-fw-utils .bb ??

see this link
https://layers.openembedded.org/layerindex/recipe/24808/