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

Static Call Graph Details in Keil IDE

Hello,

I'm using keil uVision5 for developing my application with freeRTOS. As we know , allocating enough stack to each task (thread) is important . Keil IDE provides detailed informatons in HTML file about functions and tasks include maximum stack depth. It is not obvious for me some parts of details.

For example, in static call graph file for menu_Dispaly task that I create we have:

menu_Display (Thumb, 11860 bytes, Stack size 1008 bytes, main.o(i.menu_Display))

[Stack]

  • Max Depth = 13848
  • Call Chain = menu_Display ⇒ MSC_Application ⇒ f_open ⇒ dir_register ⇒ dir_find ⇒ dir_next ⇒ create_chain ⇒ put_fat ⇒ move_window ⇒ sync_window ⇒ disk_write

"Max Depth" is the maximum stack usage when deepest call occurs but I don't know what the second(11860 bytes) and third (Stack size 1008 bytes) arguments stand for? And what does "Thumb" mean?

Thanks.

Parents
  • Hello,

    "Thumb" refers to the instruction set - you are likely using Cortex-M, which supports only one (Thumb) instruction set - Cortex-A has two, a 32-bit Arm instruction set as well as Thumb.

    11860 is the code size of menu_Display, in bytes.

    1008 is the amount of stack this function uses, then you see the greater stack chain that involves this function.

    Regards

    Ronan

Reply
  • Hello,

    "Thumb" refers to the instruction set - you are likely using Cortex-M, which supports only one (Thumb) instruction set - Cortex-A has two, a 32-bit Arm instruction set as well as Thumb.

    11860 is the code size of menu_Display, in bytes.

    1008 is the amount of stack this function uses, then you see the greater stack chain that involves this function.

    Regards

    Ronan

Children