Booting a Baremetal Application from SD

I have a bare metal application that is supposed to boot from SD -Card. After spending many hours and going through many tutorials I am stuck at the same point.
The spl and the u-boot script u-boot.scr are executed. The FPGA is programmed correctly. However the application.bin is not executed.
When I load the application.axf via jtag the application runs normally.

This leads my to the conclusion that the error must be in the binary file, or in the provided entry-point. I tried many entry-points other than 0x0010_0040, eg. 0x0010_0000 (entry-point.axf), 0x0011_0990 (start-address of main) for which I get the error message “missalligned buffer address” data abort.!
Do I need to change the scatter file, or the entry-point settings?

The following printscreen summarizes my problem:

I would be really grate full for any tipps on how to get the binary running from the SD-Card.

Many tips I already got from the useful blog of Ă‚nderson Ignacio da Silva:

Many thanks and all the best to you all

I removed all interrupts from the software project. I left the scatter file unchanged (presumably the vector section remains unused when no interrupt vectors need to be stored. )
Now I can start the binary from the entry point (0x00100000).

When I enter the commands by hand the binary gets loaded and exectued.
fatload mmc 0:1 0x0010000 abs_min.bin
go 0x00100000

However, when I use u-boot.scr the binary abs_min.bin is loaded but not executed, regardless whether it is loaded with the offset of 0x40 or not.

The fact that an empty vector table allows me to start the program, which was previously not possible, leads me to think that all I need to provide to u-boot script is a correct entry point for binary-file, and some offset that is added by the u-boot script.

Does anyone have an idea how I could have my binary file started from the SD card - I would really f. appreciate it :grinning:.

Many thanks

1 Like