This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

How does Simulation of STM32F407 blinky example work?

Hello,

to compare the floating point performance (Cortex M3 sw-floation point/Cortex M4 hw-floating point) I would like to simulate a Cortex M3 and a Cortex M4. I found a Blinky example in arm\boards\st\stm32F4-discovery\blinky that use a ST Controller with Cortex M4 which I want to modify for my tests. But when I hit the Debug-Button (debugger set to "use simulator" and the project set to STM32F407 RAM) I get the ***error 65: access violation at 0x0000000C: no 'read' permission.

Why does the simulator try to read from that address although ROM is mapped to RAM-Address 0x20000000?
What should I do to simulate the example?

Regards
Gunnar

Parents
  • Hi,
    I think the processor would expect the reset vecor at address 0x0.
    But when I use the dbg_ram.ini to change the SP, PC and Vector table

    FUNC void Setup (void) { SP = _RDWORD(0x20000000); // Setup Stack Pointer PC = _RDWORD(0x20000004); // Setup Program Counter _WDWORD(0xE000ED08, 0x20000000); // Setup Vector Table Offset Register
    }

    I get *** error 65: access violation at 0xFFFFFFF4 : no 'write' permission

    Does it matter for SIMULATOR if code is executed from simulated flash or ram?

    However, I solved my problem by choosing a different target, a Texas LM4F232 that also is based on a Cortex M4. I was able to step through a sample program and was able to monitor the time needed for floating point operations.

    But I am still curious what changes are needed to be able to SIMULATE the given example for STM32F407....I can imagine it is required to tell the simulator about memory regions.

    Thanks,
    Gunnar

Reply
  • Hi,
    I think the processor would expect the reset vecor at address 0x0.
    But when I use the dbg_ram.ini to change the SP, PC and Vector table

    FUNC void Setup (void) { SP = _RDWORD(0x20000000); // Setup Stack Pointer PC = _RDWORD(0x20000004); // Setup Program Counter _WDWORD(0xE000ED08, 0x20000000); // Setup Vector Table Offset Register
    }

    I get *** error 65: access violation at 0xFFFFFFF4 : no 'write' permission

    Does it matter for SIMULATOR if code is executed from simulated flash or ram?

    However, I solved my problem by choosing a different target, a Texas LM4F232 that also is based on a Cortex M4. I was able to step through a sample program and was able to monitor the time needed for floating point operations.

    But I am still curious what changes are needed to be able to SIMULATE the given example for STM32F407....I can imagine it is required to tell the simulator about memory regions.

    Thanks,
    Gunnar

Children