Tool/software: TI C/C++ Compiler
Hi, sir
I have transplanted UCOS II systerm to MSP430F5659 for developing multiple application funtions. However, I found the program operate abnomally after I added some appilcation codes. I guessed that the reason is stack overflow. So, I check Enable stack usage analysis check box in the Options of IAR compiler to gernerate a map file about stack. The map file is following
****************************************
* *
* STACK USAGE *
* *
****************************************
Call Graph Root Category Max Use Total Use
------------------------ ------- ---------
interrupt 56 204
Program entry 528 528
Uncalled function 1 404 6 214
Program entry
"__program_start": 0x00008000
Maximum call chain *?* 528 bytes
(** call graph contains indirect calls (example: "_LocaleEncoding")
functions with no stack usage info (example: "OS_CPU_SR_Save") **)
"__program_start" 0
"main" 4
"Init_App" 6
"msgInit" 32
"logSysMsgWithTime" 52
"DBWriteSysInfoNoInfoType" 152
"DBWrite" 20
"writeSoe" 32
"DBCWriteData" 38
"ReadData" 32
"FlashRead" 30
"df_read" 28
"read_buffer" 24
"dataflash_wait_busy" 12
"dataflash_read_status" 6
"FlashSPIRead" 20
"F5659SpiSend8" 36
"F5659SpiWaiteIdle" 4
interrupt
"ADC12_ISR": 0x00008044
Maximum call chain 32 bytes
"ADC12_ISR" 20
"memcpy" 12
interrupt
"Port3_ISR": 0x000081e8
Maximum call chain 8 bytes
"Port3_ISR" 8
interrupt
"USCI_B2_ISR": 0x00008226
Maximum call chain 8 bytes
"USCI_B2_ISR" 8
interrupt
"USCI_B1_ISR": 0x00008206
Maximum call chain 8 bytes
"USCI_B1_ISR" 8
interrupt
"PORT1_ISR": 0x00008296
Maximum call chain 56 bytes
"PORT1_ISR" 20
"RF_Frame_Receive" 4
"SetRFMode" 8
"SpiWriteCfg" 20
"SPI_Send_Byte" 4
interrupt
"TIMER2_A1_ISR": 0x00008360
Maximum call chain 8 bytes
"TIMER2_A1_ISR" 8
interrupt
"TIMER1_A1_ISR": 0x00008344
Maximum call chain 8 bytes
"TIMER1_A1_ISR" 8
interrupt
"TIMER0_A1_ISR": 0x00008328
Maximum call chain 8 bytes
"TIMER0_A1_ISR" 8
interrupt
"TIMER2_A0_ISR": 0x000082ce
Maximum call chain 4 bytes
"TIMER2_A0_ISR" 4
interrupt
"TIMER1_A0_ISR": 0x000082c2
Maximum call chain 24 bytes
"TIMER1_A0_ISR" 20
"RunSoftTime" 4
interrupt
"TIMER0_A0_ISR": 0x000082c0
Maximum call chain 4 bytes
"TIMER0_A0_ISR" 4
interrupt
"USCI_A2_ISR": 0x0000845c
Maximum call chain 12 bytes
"USCI_A2_ISR" 12
interrupt
"USCI_A1_ISR": 0x000083ec
Maximum call chain 12 bytes
"USCI_A1_ISR" 12
interrupt
"USCI_A0_ISR": 0x0000837c
Maximum call chain 12 bytes
"USCI_A0_ISR" 12
Uncalled function
"StartupTask": 0x000265bc
Maximum call chain *?* 180 bytes
(** call graph contains functions with no stack usage info (example: "OS_CPU_SR_Save") **)
"StartupTask" 72
"OSTaskCreateExt" 58
"OS_TCBInit" 46
"?OneBitMask32" 4
Uncalled function
"OS_TaskStat": 0x0002510a
Maximum call chain *?* 94 bytes
(** call graph contains functions with no stack usage info (example: "OS_CPU_SR_Save") **)
"OS_TaskStat" 20
"OS_TaskStatStkChk" 36
"OSTaskStkChk" 38
"OS_CPU_SR_Save" - no info -
Uncalled function
"OS_TaskIdle": 0x0002ff74
Maximum call chain *?* 16 bytes
(** call graph contains functions with no stack usage info (example: "OS_CPU_SR_Save") **)
"OS_TaskIdle" 12
"OSTaskIdleHook" 4
Uncalled function
"OSTimeTick": 0x00026c02
Maximum call chain *?* 108 bytes
(** call graph contains functions with no stack usage info (example: "OS_CPU_SR_Save") **)
"OSTimeTick" 20
"OSTimeTickHook" 4
"OSTmrSignal" 8
"OSSemPost" 20
"OS_EventTaskRdy" 36
"OS_EventTaskRemoveMulti" 20
Uncalled function
"OSIntExit": 0x0002cb20
Maximum call chain *?* 12 bytes
(** call graph contains functions with no stack usage info (example: "OS_CPU_SR_Save") **)
"OSIntExit" 8
"OS_SchedNew" 4
Uncalled function
"OSTaskSwHook": 0x00030800
Maximum call chain 4 bytes
"OSTaskSwHook" 4
Uncalled function
"OSTmr_Task": 0x0002a2ac
Maximum call chain *?* 74 bytes
(** call graph contains indirect calls (example: "OSTmr_Task")
functions with no stack usage info (example: "OS_CPU_SR_Save") **)
"OSTmr_Task" 30
"OSTmr_Unlink" 28
"?DivMod32u" 16
Uncalled function
"Time1sCall": 0x0002c5e6
Maximum call chain *?* 112 bytes
(** call graph contains functions with no stack usage info (example: "OS_CPU_SR_Save") **)
"Time1sCall" 30
"OSFlagPost" 46
"OS_FlagTaskRdy" 28
"OS_FlagUnlink" 8
Uncalled function
"time100mscall": 0x0002c446
Maximum call chain *?* 112 bytes
(** call graph contains functions with no stack usage info (example: "OS_CPU_SR_Save") **)
"time100mscall" 30
"OSFlagPost" 46
"OS_FlagTaskRdy" 28
"OS_FlagUnlink" 8
Uncalled function
"Time10msCall": 0x0002c516
Maximum call chain *?* 112 bytes
(** call graph contains functions with no stack usage info (example: "OS_CPU_SR_Save") **)
"Time10msCall" 30
"OSFlagPost" 46
"OS_FlagTaskRdy" 28
"OS_FlagUnlink" 8
Uncalled function
"Com2task": 0x00030682
Maximum call chain *?* 1 404 bytes
(** call graph contains recursive functions (example: "CSecAppSev::ProcControl()")
indirect calls (example: "_LocaleEncoding")
functions with no stack usage info (example: "OS_CPU_SR_Save") **)
"Com2task" 8
"ComApp" 12
"DFE_WHTask" 22
"DFEWHPriOnRx" 12
"DFEWHSearchComFrame" 20
"DFEWHAppLayerPro" 12
"ProcCallAllData" 12
"ProcSystemInfo" 134
"ReadSysInfoFrmFlash" 36
"ProcSysInfoToFlash" 20
"WriteSysInfoToFlash" 780
"sprintf" 16
"_PrintfLarge" 148
"_PutstrLarge" 116
"__data20_malloc" 20
"__data20_findmem" 12
"__data20_free" 24
Uncalled function
"Periodtask": 0x00028434
Maximum call chain *?* 1 178 bytes
(** call graph contains indirect calls (example: "_LocaleEncoding")
functions with no stack usage info (example: "OS_CPU_SR_Save") **)
"Periodtask" 22
"WriteSysInfoToFlashPeriod" 20
"ProcSysInfoToFlash" 20
"WriteSysInfoToFlash" 780
"sprintf" 16
"_PrintfLarge" 148
"_PutstrLarge" 116
"__data20_malloc" 20
"__data20_findmem" 12
"__data20_free" 24
The following functions make up recursion nest 0, which has no maximum recursion depth specified:
"CPriDLink::CallAppProc()": 0x00029794
"CPriDLink::DLSendProc(INT16U)": 0x0001c548
The following functions make up recursion nest 1, which has no maximum recursion depth specified:
"CSecAppSev::ProcControl()": 0x0000d6f6
"CSecAppSev::SecAppProc(unsigned char *, INT16U, INT16U, unsigned char *, INT16U *, INT16U *)": 0x0000e622
"CSecDLink::CallUData()": 0x0002c308
The following functions appear to be called, but have no stack
usage information:
"OSCtxSw": 0x0002a48a
"OSIntCtxSw": 0x0002a4ce
"OSStartHighRdy": 0x0002a46e
"OS_CPU_SR_Restore": 0x0002a466
"OS_CPU_SR_Save": 0x0002a45e
The following functions perform unknown indirect calls:
"OSTmr_Task": 0x0002a2ac
"_LocaleEncoding": 0x000306de
"localeconv": 0x000304d0
"operator new(unsigned long)": 0x0002fbf4
The question is how I could calculate the size of stack that I need to set by the map file ?
Another question is that the IAR compiler showed 3 warnings when I execute compilation(Enable stack usage analysis check box selected).
How could I eliminate the warnings?
Best regards
Jent
