初级会员

- 积分
- 114
- 金钱
- 114
- 注册时间
- 2018-8-6
- 在线时间
- 13 小时
|
1金钱
开发板:nxp imxrt1052evkb自己创建了一个基于freertos的工程,包含了lwip,emwin,fatfs,USB,SDcard,CAN等功能。各个任务创建如下图所示,分配的栈大小总共为 3316WORD,FreeRTOSConfig.h里面#define configTOTAL_HEAP_SIZE ((size_t)(17 * 1024))。
问题是编译通过后,下载到开发板上,实际运行发现我基于lwip写的client端连接不上服务器,而且也ping不同client开发板,(理论上初始化lwip后,应该是可以ping通的)。后面我一个个任务调试,发现屏蔽掉emwin任务后,就可以了;或者我屏蔽掉SDcard和USB任务后也可以了。这两种注释方法的共同点就是分配的栈大小差不多,由此我推测出可能是栈溢出了,然后我想用vApplicationStackOverflowHook钩子函数查找是哪个任务导致栈溢出,很可惜没有检测到。。。现在不知道怎么办????栈空间的大小代码哪里有限制??求助大神。谢谢
钩子函数,FreeRTOSConfig.h里面#define configCHECK_FOR_STACK_OVERFLOW 2
存储器分配文件定义如下:
#define m_flash_config_start 0x60000000
#define m_flash_config_size 0x00001000
#define m_ivt_start 0x60001000
#define m_ivt_size 0x00001000
#define m_interrupts_start 0x60002000
#define m_interrupts_size 0x00000400
#define m_text_start 0x60002400
#define m_text_size 0x03FFDC00
#define m_data3_start 0x80000000
#define m_data3_size 0x01E00000
#define m_ncache_start 0x81E00000
#define m_ncache_size 0x00200000
#define m_data_start 0x20000000
#define m_data_size 0x00020000
#define m_data2_start 0x20200000
#define m_data2_size 0x00040000
/* Sizes */
#if (defined(__stack_size__))
#define Stack_Size __stack_size__
#else
#define Stack_Size 0x4000
#endif
#if (defined(__heap_size__))
#define Heap_Size __heap_size__
#else
#define Heap_Size 0x4000
#endif
|
|