cancel
Showing results for 
Search instead for 
Did you mean: 

Event Recorder on STM32F030K6t6 error

navid ansari
Associate III
Posted on September 10, 2017 at 11:01

hi

i haveSTM32F030K6t6 that have 4KB Ram when i try to use Event Recorder on keilit get me this error

*** Using Compiler 'V5.06 update 4 (build 422)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin'
Build target 'Target 1'
compiling Relays.c...
compiling Touch.c...
compiling main.c...
compiling Hardware.c...
compiling Switchs.c...
compiling Leds.c...
compiling ZigBee.c...
assembling startup_stm32f030x6.s...
compiling RTX_Conf_CM.c...
compiling system_stm32f0xx.c...
compiling EventRecorder.c...
linking...
.\Objects\TouchSwitch.axf: Error: L6406E: No space in execution regions with .ANY selector matching rt_list.o(.bss).
.\Objects\TouchSwitch.axf: Error: L6406E: No space in execution regions with .ANY selector matching rtx_conf_cm.o(.bss).
.\Objects\TouchSwitch.axf: Error: L6406E: No space in execution regions with .ANY selector matching zigbee.o(.bss).
.\Objects\TouchSwitch.axf: Error: L6406E: No space in execution regions with .ANY selector matching zigbee.o(.data).
.\Objects\TouchSwitch.axf: Error: L6406E: No space in execution regions with .ANY selector matching rtx_conf_cm.o(.bss).
.\Objects\TouchSwitch.axf: Error: L6406E: No space in execution regions with .ANY selector matching rt_cmsis.o(.data).
.\Objects\TouchSwitch.axf: Error: L6406E: No space in execution regions with .ANY selector matching rt_task.o(.data).
.\Objects\TouchSwitch.axf: Error: L6406E: No space in execution regions with .ANY selector matching rt_system.o(.data).
.\Objects\TouchSwitch.axf: Error: L6406E: No space in execution regions with .ANY selector matching rt_robin.o(.data).
.\Objects\TouchSwitch.axf: Error: L6406E: No space in execution regions with .ANY selector matching rtx_conf_cm.o(.data).
.\Objects\TouchSwitch.axf: Error: L6406E: No space in execution regions with .ANY selector matching rtx_conf_cm.o(.data).
.\Objects\TouchSwitch.axf: Error: L6406E: No space in execution regions with .ANY selector matching rtx_conf_cm.o(.data).
.\Objects\TouchSwitch.axf: Error: L6406E: No space in execution regions with .ANY selector matching system_stm32f0xx.o(.data).
.\Objects\TouchSwitch.axf: Error: L6406E: No space in execution regions with .ANY selector matching rt_time.o(.data).
.\Objects\TouchSwitch.axf: Error: L6406E: No space in execution regions with .ANY selector matching touch.o(.data).
.\Objects\TouchSwitch.axf: Error: L6407E: Sections of aggregate size 0xc4 bytes could not fit into .ANY selector(s).�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?�?

it says that Ram is not enough.i try to optimize code but it did not work

what can i do?

if it does not work on stm32f0k6t6 so how can i output something for debugging?

something like usartbut with jlink

#event-recorder #stm32f0
1 ACCEPTED SOLUTION

Accepted Solutions
Posted on September 11, 2017 at 09:00

i use microlib library and change the number of record in event viewer and it work

View solution in original post

6 REPLIES 6
Posted on September 10, 2017 at 15:56

Hello!

This error means there is not enough space to put your image. (Flash or RAM)(look in scatter file)

If your program do not fit to flash (after size optimimization) , some other MCU with proper size will do the work.

In case you run your program from RAM, go to options tab

0690X00000607hTQAQ.png

The total amount of your RAM is 0x1000 bytes (sum of 1  and 2)

Try to increase the size ofIROM1 (1)  and reduce the size of IRAM1 accordingly. (2) 

The remaining IRAM1 must have finaly sufficient space for stack, heap, Glob. obj.

If finaly this ''adjustment'' fails,  you need another MCU with sufficient memory.

Rgrds

vf

Posted on September 10, 2017 at 18:21

'In case you run your program from RAM, go to options tab'

I don't get this.am I choosing where to run my program?

'

The total amount of your RAM is 0x1000 bytes (sum of 1  and 2)

'

In that pic that u send is sum of 1 and 2 0x1000?

0x800 + 0x800 = ?

I'll check what u say.hope it work.thanks

Posted on September 10, 2017 at 19:00

Hello again.

>>''

I don't get this.am I choosing where to run my program?

''

Yes you can load your program to RAM and run it from RAM. ( put vector table to RAM and program image to RAM)

>> 0x800 + 0x800 = ? 

Yes the result  is 0x1000 , it is hexadecimal.

Finaly i understood that your program is run from FLASH.

So check also in this picture the highlighted amount of Flash memory for your device. Must be 0x8000  32Kbytes

0690X000006088SQAQ.png

If your program's  memory options are like this picture ... then  your options are to reduce your code size by 200 bytes , or to migrate to another MCU with sufficient memory.

Rgrds

vf

Posted on September 11, 2017 at 05:42

0690X00000608B1QAI.png

it is like this in default

what u suggest?

Posted on September 11, 2017 at 08:58

To reduce your code size by 200 bytes , or to migrate to another MCU with sufficient memory.

Posted on September 11, 2017 at 09:00

i use microlib library and change the number of record in event viewer and it work