PROCESSOR-SDK-AM335X: Kernel not coming up stuck at "Starting Kernel.." TISDK 9.1

Part Number: PROCESSOR-SDK-AM335X

Tool/software:

Hi ,

I am using SDK 9.1 for am335x. for custom board till now we are able to build and boot u-boot-2023 which is fine.

Now we are compiling kernel(6.1) and trying to boot using zImage and am335x-evmsk.dtb.

We are able to see below logs,

mmc0 is current device
micro SD card found
<DIR> 4096 .
<DIR> 4096 ..
100278 am335x-evmsk.dtb
7647744 zImage
kernel image is present in sdcard
switch to partitions #0, OK
mmc0 is current device
SD/MMC found on device 0
7647744 bytes read in 990 ms (7.4 MiB/s)
loaduimage .
100278 bytes read in 19 ms (5 MiB/s)
Booting from mmc ...
100278 bytes read in 19 ms (5 MiB/s)
## Error: "get_overlay_mmc" not defined
Kernel image @ 0x82000000 [ 0x000000 - 0x74b200 ]
## Flattened Device Tree blob at 88000000
Booting using the fdt blob at 0x88000000
Working FDT set to 88000000
Loading Device Tree to 8ffe4000, end 8ffff7b5 ... OK
Working FDT set to 8ffe4000

Starting kernel ...

After the above logs kernel is not coming up fully.

Steps we followed to build and using defconfig as below,

(A) TISDK 9.1 Kernel porting for 6.1
1. bitbake -c cleansstate virtual/kernel
2. bitbake virtual/kernel

(B) Before the above 2 steps i followed defconfig changes
1. bitbake -c devshell virtual/kernel
2. enter into devshell enviornment
3. make multi_v7_defconfig
4. save default changes in menuconfig (we will get .config file)
5. copy ".config" into build/arago-tmp-default-glibc/work/am335x_evm-oe-linux-gnueabi/linux-ti-staging/6.1.46+gitAUTOINC+1d4b5da681-r22b.arago5/build_kernel_external/defconfig into sources/meta-ti/meta-ti-bsp/recipes-kernel/linux/linux-ti-staging-6.1/ti33x/defconfig
which was default values initially as below,
use-kernel-config=multi_v7_defconfig
config-fragment=kernel/configs/ti_multi_v7_prune.config kernel/configs/no_smp.config

(C) Now Again,
follow build procedure as above (A)
1. bitbake -c cleansstate virtual/kernel 
2. bitbake virtual/kernel(i hope both its same as bitbake linux-staging)

(D) use the generated zImage and am335x-evmsk.dts to boot kernel

Note: we have not changed dts file as there is no change in uart configs to our custom controller. then also by default we are expecting kernel 6.1 serial log not coming.. once if it comes we can go ahead for next changes in dts

Updating below enviornment varaible for further clarity

abcd# printenv
addr_fit=0x90000000
arch=arm
args_mmc=run finduuid;setenv bootargs console=${console} ${optargs} root=PARTUUID=${uuid} rw rootfstype=${mmcrootfstype}
baudrate=115200
board=sem3t
board_name=sem3t
boot=mmc
boot_a_script=load ${devtype} ${devnum}:${distro_bootpart} ${scriptaddr} ${prefix}${script}; source ${scriptaddr}
boot_efi_binary=load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} efi/boot/bootarm.efi; if fdt addr -q ${fdt_addr_r}; then bootefi ${kernel_addr_r} ${fdt_addr_r};else bootefi ${kernel_addr_r} ${fdtcontroladdr};fi
boot_efi_bootmgr=if fdt addr -q ${fdt_addr_r}; then bootefi bootmgr ${fdt_addr_r};else bootefi bootmgr;fi
boot_extlinux=sysboot ${devtype} ${devnum}:${distro_bootpart} any ${scriptaddr} ${prefix}${boot_syslinux_conf}
boot_fdt=try
boot_fit=0
boot_net_usb_start=usb start
boot_prefixes=/ /boot/
boot_script_dhcp=boot.scr.uimg
boot_scripts=boot.scr.uimg boot.scr
boot_syslinux_conf=extlinux/extlinux.conf
boot_targets=mmc0 mmc1 nand0 usb0 pxe dhcp
bootcmd=run findfdt; mmc dev ${mmcdev};if mmc rescan; then echo micro SD card found;setenv mmcdev 0;setenv mmcroot /dev/mmcblk0p2 rw;setenv bootpart ${mmcdev}:2;if ext4ls mmc 0:2 /boot; then echo kernel image is present in sdcard;else echo kernel image is not present in sdcard;setenv mmcdev 1;setenv mmcroot /dev/mmcblk1p2 rw;setenv bootpart ${mmcdev}:2;if test -e mmc $flagpart three; then if test -e mmc $flagpart three_ok; then setenv bootpart ${mmcdev}:3;setenv mmcroot /dev/mmcblk1p3 rw;elif test ! -e mmc $flagpart three_tried; then fatwrite mmc $flagpart $loadaddr three_tried 4;setenv bootpart ${mmcdev}:3;setenv mmcroot /dev/mmcblk1p3 rw;fi;elif test -e mmc $flagpart two; then if test ! -e mmc $flagpart two_ok; then if test -e mmc $flagpart two_tried; then setenv bootpart ${mmcdev}:3;setenv mmcroot /dev/mmcblk1p3 rw;else fatwrite mmc $flagpart $loadaddr two_tried 4;fi;fi;fi;fi;else echo No micro SD card found, setting mmcdev to 1;setenv mmcdev 1;setenv mmcroot /dev/mmcblk1p2 rw;setenv bootpart ${mmcdev}:2;if test -e mmc $flagpart three; then if test -e mmc $flagpart three_ok; then setenv bootpart ${mmcdev}:3;setenv mmcroot /dev/mmcblk1p3 rw;elif test ! -e mmc $flagpart three_tried; then fatwrite mmc $flagpart $loadaddr three_tried 4;setenv bootpart ${mmcdev}:3;setenv mmcroot /dev/mmcblk1p3 rw;fi;elif test -e mmc $flagpart two; then if test ! -e mmc $flagpart two_ok; then if test -e mmc $flagpart two_tried; then setenv bootpart ${mmcdev}:3;setenv mmcroot /dev/mmcblk1p3 rw;else fatwrite mmc $flagpart $loadaddr two_tried 4;fi;fi;fi;fi;mmc dev ${mmcdev}; if mmc rescan;then echo SD/MMC found on device ${mmcdev};if test -n $uenvcmd; then echo Running uenvcmd ...;run uenvcmd;fi;if run loaduimage; then echo loaduimage Siemens ...; run loadfdt;run mmcboot;fi;else run nandboot;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 -q ${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;
bootcmd_mmc0=devnum=0; run mmc_boot
bootcmd_mmc1=devnum=1; run mmc_boot
bootcmd_nand=run nandboot
bootcmd_pxe=run boot_net_usb_start; dhcp; if pxe get; then pxe boot; fi
bootcmd_usb0=devnum=0; run usb_boot
bootcount=1
bootdelay=2
bootdir=/boot
bootenvfile=uEnv.txt
bootfile=zImage
bootm_size=0x10000000
bootpart=0:2
bootscript=echo Running bootscript from mmc${mmcdev} ...; source ${loadaddr}
console=ttyO0,115200n8
cpu=armv7
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_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
dfu_alt_info_ram=kernel ram 0x80200000 0x4000000;fdt ram 0x80f80000 0x80000;ramdisk ram 0x81000000 0x4000000
distro_bootcmd=for target in ${boot_targets}; do run bootcmd_${target}; done
dtboaddr=0x89000000
efi_dtb_prefixes=/ /dtb/ /dtb/current/
envboot=mmc dev ${mmcdev}; if mmc rescan; then echo SD/MMC found on device ${mmcdev};if run loadbootscript; then run bootscript;else if run loadbootenv; then echo Loaded env from ${bootenvfile};run importbootenv;fi;if test -n $uenvcmd; then echo Running uenvcmd ...;run uenvcmd;fi;fi;fi;
eth1addr=98:5d:ad:e9:1e:4e
eth2addr=de:ad:be:ef:00:01
ethaddr=98:5d:ad:e9:1e:4c
fdt_addr_r=0x88000000
fdtaddr=0x88000000
fdtcontroladdr=bdf49700
fdtfile=undefined
fdtoverlay_addr_r=0x89000000
findfdt=setenv fdtfile am335x-evmsk.dtb
finduuid=part uuid ${boot} ${bootpart} uuid
flagpart=1:5
get_fit_config=setexpr name_fit_config gsub / _ conf-${fdtfile}
get_overlaystring=for overlay in $name_overlays;do;setenv overlaystring ${overlaystring}'#'${overlay};done;
ice_mii=mii
importbootenv=echo Importing environment from mmc${mmcdev} ...; env import -t ${loadaddr} ${filesize}
init_console=setenv console ttyO0,115200n8
kernel_addr_r=0x82000000
load_efi_dtb=load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} ${prefix}${efi_fdtfile}
loadaddr=0x82000000
loadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenvfile}
loadbootscript=load mmc ${mmcdev} ${loadaddr} boot.scr
loadfdt=load mmc ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}
loadimage=load ${devtype} ${bootpart} ${loadaddr} ${bootdir}/${bootfile}
loadramdisk=load mmc ${mmcdev} ${rdaddr} ramdisk.gz
loaduimage=load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootfile}
mmc_boot=if mmc dev ${devnum}; then devtype=mmc; run scan_dev_for_boot_part; fi
mmcargs=setenv bootargs console=${console} ${optargs} root=${mmcroot} rootfstype=${mmcrootfstype}
mmcboot=echo Booting from mmc ...; run mmcargs; run args_mmc; run mmcloados;
mmcdev=0
mmcloados= run args_mmc; if test ${boot_fdt} = yes || test ${boot_fdt} = try; then if run loadfdt; then run get_overlay_mmc;bootz ${loadaddr} - ${fdtaddr}; else if test ${boot_fdt} = try; then bootz; else echo WARN: Cannot load the DT; fi; fi; else bootz; fi;
mmcrootfstype=ext4 rootwait
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)
name_fit=fitImage
nandargs=setenv bootargs console=${console} ${optargs} root=${nandroot} rootfstype=${nandrootfstype}
nandboot=echo Booting from nand ...; run nandargs; nand read ${fdtaddr} NAND.u-boot-spl-os; nand read ${loadaddr} NAND.kernel; bootz ${loadaddr} - ${fdtaddr}
nandroot=ubi0:rootfs rw ubi.mtd=NAND.file-system,2048
nandrootfstype=ubifs rootwait
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}
netloadfdt=tftp ${fdtaddr} ${fdtfile}
netloadimage=tftp ${loadaddr} ${bootfile}
nfsopts=nolock
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}
pxefile_addr_r=0x80100000
ramargs=setenv bootargs console=${console} ${optargs} root=${ramroot} rootfstype=${ramrootfstype}
ramboot=echo Booting from ramdisk ...; run ramargs; bootz ${loadaddr} ${rdaddr} ${fdtaddr}
ramdisk_addr_r=0x88080000
ramroot=/dev/ram0 rw
ramrootfstype=ext2
rdaddr=0x88080000
rootpath=/export/rootfs
run_fit=run get_fit_config; bootm ${addr_fit}#${name_fit_config}${overlaystring}
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 part uuid ${devtype} ${devnum}:${distro_bootpart} distro_bootpart_uuid ; run scan_dev_for_boot; fi; done; setenv devplist
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
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 EXTLINUX FAILED: continuing...; fi
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
scriptaddr=0x80000000
serial#=98:5d:ad:e9:1e:4c
soc=am33xx
spiargs=setenv bootargs console=${console} ${optargs} root=${spiroot} rootfstype=${spirootfstype}
spiboot=echo Booting from spi ...; run spiargs; sf probe ${spibusno}:0; sf read ${loadaddr} ${spisrcaddr} ${spiimgsize}; bootz ${loadaddr}
spibusno=0
spiimgsize=0x362000
spiroot=/dev/mtdblock4 rw
spirootfstype=jffs2
spisrcaddr=0xe0000
static_ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off
stderr=serial@0
stdin=serial@0
stdout=serial@0
update_to_fit=setenv loadaddr ${addr_fit}; setenv bootfile ${name_fit}
usb_boot=usb start; if usb dev ${devnum}; then devtype=usb; run scan_dev_for_boot_part; fi
usbnet_devaddr=de:ad:be:ef:00:01
vendor=Sie
ver=U-Boot 2023.04-g999 (Aug 08 2024 - 08:40:02 +0000)

Environment size: 10763/131068 bytes

Also there is CONFIG_SERIAL_OMAP in TISKD 8.2 but not able see in TISDK 9.1

Please let me know is there any other changes or requirements we have to do ?

Please let me know if there is any further info required.. as we have blocked here..