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

Reduce ARM CM0+ scatter initialization during boot?

We are using ARM CM0+ in our embedded SoC design and I noticed that boot takes a long time. Specifically, I saw that it took ~18K cycles after the unreset before we executed an instruction that I recognize (which is inside __rt_entry). We are of course using the CMSIS RTX RTOS on the CM0.

It appears from an RTL simulation that during 18000 cycles, the MCU is mostly inside a tight loop of 4 instructions. The PC keeps going looping across 0x178->0x17a->0x17c->0x17e->back. This is most likely some zero initialization (BSS?). The armlink generated .info suggests that the PC is inside !!handler_zi which is inside the object: c_p.l (__scatter_zi.o). This comes from ARM/sw/ARMCompiler5.05u1/lib/armlib/c_p.l.

Questions

- how do I find out what is being initialized?

- how do I not initialize (if not required in our design)?

The scatter text file is very simple and copy-pasted below.

Thanks in advance!!

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
LOAD 0x0000· SRAM_SIZE
{
· EXEC_ROM_VECTOR_DATA +0
··· {
····· startup_ARMCM0.s.o(RESET)
··· }
··· EXEC_ROM_VECTOR_HANDLERS +0
··· {
····· startup_ARMCM0.s.o(.text)
··· }
··· EXEC_ROM +0
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

0