I need to place my program at the address in memory 0x20000000. In the project options in Keil I opened the tab "Target" and set the following settings (screenshot is here --> https://i.stack.imgur.com/EPGru.png):
IROM1 start = 0x20000000
IROM1 size = 0x400
IRAM1 start = 0x20001000
IRAM1 size = 0x20000
This is my code, which I wish to place at the address I need:
STACK_TOP EQU 0x20000100
AREA RESET, DATA, READONLY
DCD STACK_TOP
DCD Start
AREA PROGRAM, CODE, READONLY
ENTRY
Start
NOP
NOP
NOP
b Start
END
After compilation I get 0 Errors and 0 Warnings:
*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'C:\Program Files\Keil_v5\ARM\ARMCC\Bin'
Build target 'Target 1'
".\Objects\main.axf" - 0 Error(s), 0 Warning(s).
Build Time Elapsed: 00:00:00
Then in debug mode, I found my hex commands at the address I needed (screenshot is here -> https://i.stack.imgur.com/Yb8aD.png):
8: NOP
0x20000008 BF00 NOP
9: NOP
0x2000000A BF00 NOP
10: NOP
0x2000000C BF00 NOP
11: b Start
0x2000000E E7FB B 0x20000008
But the problem is that I cannot execute it, since the program counter is always 0x00000000 and does not change in either the run mode or step-by-step mode. What have I done wrong?