How to Run Simple Code on the Cortex M4 (Windows Embedded Compact)
This article explains how to run code on the Cortex-M4 core on targets running Windows Embedded Compact.
For information about running code on a Cortex-M4 of other modules and Operating Systems, see the FreeRTOS article
Let's first start with the actual work. Use the Reg Access Tool to access the following physical memory locations.
|5||0x3f04'0008||Read||Repeat this step. You will see incrementing values.|
That's it. You are already done.
Let's look at the details:
This is the assembly code that we want to run on the Cortex M4:
0x3f040000 a101 ADD R1, PC, #4 ; load counter address [0x3f040008] into R1
.-> 0x3f040002 3001 ADD R0, 1 ; increment counter
| 0x3f040004 6008 STR R0, [R1, 0] ; store new counter value
`=< 0x3f040006 e7fc B 0x3f040002
Code and variable are located in the SRAM. The memory map looks like this: | Address Range | Content | |---------------------------|---------------| | 0x3f04'0000 - 0x3f04'0007 | Program code | | 0x3f04'0008 - 0x3f04'000b | 32bit counter |
Steps to Run the Code
- In steps #1 to #2 we write the assembly code to the SRAM.
- In step #3, we write the M4 starting address into the SRC_GPR2 register. Bit 0 is set to start in THUMB mode.
- In step #4, we start the M4 by setting the AUX_CORE_WAKEUP bit in the CCM_CCOWR register. Reading back this register will show 0x00010000.
- Step #5 is only to verify that the application is running.