FPGA, SoC, And CPLD Boards And Kits
FPGA Evaluation and Development Kits
5915 Discussions

Bare metal application does not work.


Hi everyone ( once again ),


I have been on this community from the first day I bought my board ( Atlas-SoC). With lots of effort and many helpful information from here, I managed to load everything and now I just need a simple bare metal application in C to test.


So I have made a simple code to send a number on the LEDs ( for example, I display number 13 in binary on my LEDs ). Here is my step

  1. Plug in the SD card and stop the autoboot. I plan to use uboot and uboot script but now I only have uboot so I will command everything by hand
  2. Configuring FPGA part by using command fatload to copy the .rbf file and fpga load to load the FPGA
  3. Enable the bridge by bridge_enable_handoff
  4. Then I use the debug tool in EDS-SoC with my LED.axf in Application on host to download field and the directory to synthesis folder in Add peripheral description files from directory field
  5. Debug and the LEDs displays the number 13.


As we can see that the debug works fine with my code, then I enable my 30 day-license to be able to use fromelf.exe tool in order to convert to .bin file. After having my bin file, I copy it to SD card, plug into the board and follow the same way I did.


After enable the bridge, I did

fatload mmc 0:1 0x00100040 led.bin go 0x00100040

On the Putty display

## Starting application at 0x00100040 ...

And it hangs there and none of any LEDs is lighted up.


I have followed some workshop on rocketboard ( that how I got those step as you can see ) and read many tutorial. I have tried all of best and I apology for asking so much on here in every step I made ( I'm kinda newbie and I have learnt a lot until now ).


I hope I can have some clues from you guys !


Thanks in advance.


P/s : Here is my code

int main() { while (1) { alt_write_byte(0xff200000,13); // h2flw address is 0xff200000 and led offset is 0x0 } return 0; }


0 Kudos
1 Reply

Update the situation for those who may get into this situation:

After checking the linker script, I found out the RAM is initialized from address 0x100000 not 0x00100040 as I thought. From then, you can modify your starting address of your code.


BTW, so sorry for not paying much attention to what I am doing. Cheer !