I'm trying to boot a simple binary on SGI-575 but unable to get expected result. To load and run application, I used following commands:
# When load address is 0x00000000 $ ./FVP_CSS_SGI-575 -a css.cluster0.cpu0=/home/user/DS-5-Workspace/HelloWorld-575/HelloWorld.axf terminal_uart_aon: Listening for serial connection on port 5000 terminal_uart0: Listening for serial connection on port 5001 terminal_uart1: Listening for serial connection on port 5002 terminal_uart_ap: Listening for serial connection on port 5003 terminal_uart1_ap: Listening for serial connection on port 5004 terminal_s0: Listening for serial connection on port 5005 terminal_s1: Listening for serial connection on port 5006 terminal_mcp: Listening for serial connection on port 5007 terminal_0: Listening for serial connection on port 5008 terminal_1: Listening for serial connection on port 5009 Warning: Failed to write bytes at address range [0x00020000..0x00044FFF] when loading image "/home/user/DS-5-Workspace/HelloWorld-575/HelloWorld.axf". Simulation is started WARNING: Access to reserved memory region: Write 4 bytes 0x0 to 0xe7fefff0. Aborting. WARNING: Access to reserved memory region: Write 4 bytes 0x0 to 0xe7fefff4. Aborting. WARNING: Access to reserved memory region: Write 4 bytes 0x0 to 0xe7fefff8. Aborting. WARNING: Access to reserved memory region: Write 4 bytes 0x0 to 0xe7fefffc. Aborting. WARNING: Access to reserved memory region: Write 4 bytes 0x0 to 0xe7ff0000. Aborting. WARNING: Access to reserved memory region: Write 4 bytes 0xffffffff to 0xe7ff0004. Aborting. WARNING: Access to reserved memory region: Write 4 bytes 0xe800e800 to 0xe7ff0008. Aborting. WARNING: Access to reserved memory region: Write 4 bytes 0x0 to 0xe7ff000c. Aborting. WARNING: Access to reserved memory region: Write 4 bytes 0x0 to 0xe7fefff0. Aborting. WARNING: Access to reserved memory region: Write 4 bytes 0x0 to 0xe7fefff4. Aborting. WARNING: Access to reserved memory region: Write 4 bytes 0x0 to 0xe7fefff8. Aborting. WARNING: Access to reserved memory region: Write 4 bytes 0x0 to 0xe7fefffc. Aborting. WARNING: Access to reserved memory region: Write 4 bytes 0x0 to 0xe7ff0000. Aborting. WARNING: Access to reserved memory region: Write 4 bytes 0xffffffff to 0xe7ff0004. Aborting. WARNING: Access to reserved memory region: Write 4 bytes 0xe800e800 to 0xe7ff0008. Aborting. WARNING: Access to reserved memory region: Write 4 bytes 0x0 to 0xe7ff000c. Aborting.
# When load address is 0x80000000 $ ./FVP_CSS_SGI-575 -a css.cluster0.cpu0=/home/user/DS-5-Workspace/HelloWorld-575/HelloWorld.axf --start css.cluster0.cpu0=0x80000000 terminal_uart_aon: Listening for serial connection on port 5000 terminal_uart0: Listening for serial connection on port 5001 terminal_uart1: Listening for serial connection on port 5002 terminal_uart_ap: Listening for serial connection on port 5003 terminal_uart1_ap: Listening for serial connection on port 5004 terminal_s0: Listening for serial connection on port 5005 terminal_s1: Listening for serial connection on port 5006 terminal_mcp: Listening for serial connection on port 5007 terminal_0: Listening for serial connection on port 5008 terminal_1: Listening for serial connection on port 5009 Warning: Failed to write bytes at address range [0x80000000..0x8000493F] when loading image "/home/user/DS-5-Workspace/HelloWorld-575/HelloWorld.axf". Warning: Failed to write bytes at address range [0x80004940..0x80044FFF] when loading image "/home/user/DS-5-Workspace/HelloWorld-575/HelloWorld.axf". Simulation is started WARNING: Access to reserved memory region: Write 4 bytes 0x0 to 0xe7fefff0. Aborting. WARNING: Access to reserved memory region: Write 4 bytes 0x0 to 0xe7fefff4. Aborting. WARNING: Access to reserved memory region: Write 4 bytes 0x0 to 0xe7fefff8. Aborting. WARNING: Access to reserved memory region: Write 4 bytes 0x0 to 0xe7fefffc. Aborting. WARNING: Access to reserved memory region: Write 4 bytes 0x0 to 0xe7ff0000. Aborting. WARNING: Access to reserved memory region: Write 4 bytes 0xffffffff to 0xe7ff0004. Aborting. WARNING: Access to reserved memory region: Write 4 bytes 0xe800e800 to 0xe7ff0008. Aborting. WARNING: Access to reserved memory region: Write 4 bytes 0x0 to 0xe7ff000c. Aborting. WARNING: Access to reserved memory region: Write 4 bytes 0x0 to 0xe7fefff0. Aborting. WARNING: Access to reserved memory region: Write 4 bytes 0x0 to 0xe7fefff4. Aborting. WARNING: Access to reserved memory region: Write 4 bytes 0x0 to 0xe7fefff8. Aborting. WARNING: Access to reserved memory region: Write 4 bytes 0x0 to 0xe7fefffc. Aborting. WARNING: Access to reserved memory region: Write 4 bytes 0x0 to 0xe7ff0000. Aborting. WARNING: Access to reserved memory region: Write 4 bytes 0xffffffff to 0xe7ff0004. Aborting. WARNING: Access to reserved memory region: Write 4 bytes 0xe800e800 to 0xe7ff0008. Aborting. WARNING: Access to reserved memory region: Write 4 bytes 0x0 to 0xe7ff000c. Aborting.
I also tried it using DS-5 Debugger. Although it doesn't give any warning related to binary loading as in previous case but still it doesn't show any progress related to execution. Initially PC is at 0x0 and no break point hits after I press start button (Not even break point at 0x04). Pressing pause button or sending interrupt through debugger causes cores to power down.
Does anyone have idea what I'm missing or doing wrong?
The SGI/SGM deliverables are supplied with an Open Source SW stack and aren't designed to support running bare-metal / standalone applications. I *suspect* (I have not tested this) that by bypassing the supplied software stack you are missing some necessary low level initialization. Generally the same approach we have in the related FAQ for Juno might apply - that is running your bare metal application at the 'end of' Trusted Firmware. https://community.arm.com/dev-platforms/w/docs/306/bare-metal-development-on-juno. For SGI deliverables you can also use the alias: support-subsystem-enterprise@arm.com