초보의 아웅다웅 설계하기/STM32

IAR에서 Stack 할당 계산

로망와니 2018. 4. 4. 00:05

IAR에서 Stack 할당 계산

IAR에서 Map File이 생성되도록 설정하고 Stack 분석을 체크한 후 컴파일을 하면 Stack에 사용되는 용량이 나오고 총 용량의 합보다 더 큰 용량을 Stack에서 설정을 하면 됩니다.

동적 라이브러리로 생성하는 경우 동적라이브러리에 Stack 사이즈를 설정하지 않아도 되고 라이브러리를 불러 사용하는 프로그램에서 최소한 같은 용량이나 그 이상의 용량을 설정해주어야 인터럽트 발생시에 문제가 생기지 않는 듯 싶습니다.

 

Keil과 IAR을 컴파일 후 서로 결과가 달라 양쪽을 모두 사용하기 위해서는 양쪽 모두 확인해 주어야 합니다.(IAR에서 된다고 Keil에서 되는 것도 아니고 Keil에서 된다고 IAR에서 되는 것도 아니라서 확인 하지 않았다가 낭패를 볼 수 있습니다. 제가 그랬습니다.....)

 

 

 

 

 

Program entry
  "mf_initialize": 0x08074485

  Maximum call chain                             2 692 bytes

    ""                                  8
    ""                                    8
    "" in .o [2]                  2 400
    ""                                 64
    "" in .o [2]                  88
    "" in mfapi.o [2]                24
    ""                            16
    ""                            64
    ""                                20

Uncalled function
  "": 0x08077869

  Maximum call chain                               444 bytes

    ""                               80
    ""                           48
    ""                               32
    "" in .o [2]                   284

Uncalled function
  "": 0x08077603

  Maximum call chain                               620 bytes

    ""                                24
    ""                           152
    ""                                     128
    ""                               32
    "" in .o [2]                   284

Uncalled function
  "": 0x0807772b

  Maximum call chain                               340 bytes

    ""                              16
    ""                           8
    ""                               32
    "" in .o [2]                   284

Uncalled function
  "": 0x080775fb

  Maximum call chain                                56 bytes

    ""                               8
    "" in mfapi.o [2]            16
    "__iar_dlfree"                                  32
    "segment_holding" in dlmalloc.o [4]              0

Uncalled function
  "": 0x080744b3

  Maximum call chain                                 8 bytes

    ""                                    8
    ""                                      0

Uncalled function
  "": 0x080744df

  Maximum call chain                                 0 bytes

    ""                                   0

Uncalled function
  "": 0x080744c7

  Maximum call chain                                 0 bytes

    ""                                 0

Uncalled function
  "": 0x080774a5

  Maximum call chain                               144 bytes

    ""                               24
    "" in mfapi.o [2]             16
    "__iar_dlmalloc"                                48
    "sys_alloc" in dlmalloc.o [4]                   56
    "segment_holding" in dlmalloc.o [4]              0

Uncalled function
  "prepend_alloc" in dlmalloc.o [4]: 0x08077b05

  Maximum call chain                                40 bytes

    "prepend_alloc" in dlmalloc.o [4]               40
    "abort"                                          0
    "__exit"                                         0