Running ARM Cortex-M33 (ARMv8-M) Keil Simulator Demo

I am looking at the ARM Cortex-M33 code for the Keil Simulator Demo:

I am having a lot of trouble just stepping through the code. I am following the instructions above but can’t see to be getting to the main.c. In fact when I launch the debugger, it seems like it is already running and it doesn’t stop.
Can you please elaborate on how to run this? I am interested in exploring the TrustZone secure/non-secure calling convention and thought running on a simulator would be excellent way of stepping through the code.
Any help is greatly appreciated.


I just tried following the instructions as described on the web page you linked and didn’t have a problem - with the following caveats:

  1. I am using the head revision code rather than the last FreeRTOS release, although I don’t believe that project has changed since the last release.

  2. I do recall we had one uVision version in which we were unable to use the simulator - updating or uVision version without changing anything else fixed the issue.

If you think the project is already running when the debugger connects it is possible that you are viewing the secure project but the non-secure project is running. Try placing a break point at the start of main() in main_s.c, and another at the start of main_ns.c. Then, when you start the debugger, you should find the break point in the secure project is hit right away (in main_s), if you then resume the project you should find execute goes to the break point in the non secure project (main_ns).