Beagle-bone Black Baremetal application boot-up


I’m trying to run a helloworld program (UART0 works in polling mode). Trying to run this application over uboot compiled using baremetal toolchain gcc-arm-none-eabi-10.3-2021.10.
Uboot is compiled with config “am335x_evm_defconfig”.
Copied MLO, u-boot.img.

Compile the helloworld program without vector table,

below is the start-up code of my application

.globl _start
mrs r0, cpsr
bic r0, r0, #0x1F ;@ clear mode bits
orr r0, r0, #0x13 ;@ set SVC mode
orr r0, r0, #0xC0 ;@ disable FIQ and IRQ
msr cpsr, r0

mrc p15,0,r0,c1,c0,2 ;@ read cp access register
orr r0,r0,#0x00F00000 ;@ enable full access to neon/vfp (coproc 10&11)
mcr p15,0,r0,c1,c0,2 ;@ write cp access register
isb ;@ instruction synchronization barrier
mov r0,#0x40000000 ;@ switch on vfp & neon
vmsr fpexc,r0 ;@ set EN bit in fpexc

ldr sp, =0x4030CDFC ;@6kB public stack TRM
//ldr sp, =0x8030CDFC ;@6kB public stack TRM
bl psr_main
.loop: b .loop

Below is the linker scrip of my program:
//RAM : ORIGIN = 0x80000000, LENGTH = 0x1B400
RAM : ORIGIN = 0x402f0400, LENGTH = 0x1B400

.text :
}> RAM

.data :
}> RAM

.bss :
}> RAM


From uboot trying to run helloworld bin by the following command.
$ fatload mmc 0 0x402f0400 helloworld
Result: getting the below error:
trying to overwrite reserved memory…

From uboot trying to run helloworld bin by the following command.
$ fatload mmc 0 0x80000000 helloworld
Result: application is running but Beagle bone is restarting in few minutes.

For the above two cases configured linker file correctly to the corresponding ram addresses.

I’m new to the baremetal programming, do I need to do some to run my program.
Please someone help me in resolve and proceed further.

Thanks and Best Regards,
Pon Senthil Rajan J