RT1061 SDK2.10.0"lwip_httpssrv_ota_enet"例程 再增加一个点灯任务以后,https任务无法正常运行,且程序会崩溃

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

RT1061 SDK2.10.0"lwip_httpssrv_ota_enet"例程 再增加一个点灯任务以后,https任务无法正常运行,且程序会崩溃

1,024 Views
TheSix
Contributor I

在RT1061 SDK2.10.0"lwip_httpssrv_ota_enet"例程中,我增加了一个 优先级为2的点灯任务,而https任务的优先级为3,TCP/IP线程的任务优先级为8.在开发板上电以后,程序初始化LWIP内核和初始化https后,此时我并没有在PC上通过IP地址在浏览器访问开发板上的https服务器,所以https将会是阻塞状态,只有点灯任务在运行,此时一切正常。然后当我从PC上通过在浏览器上通过IP地址访问开发板上https,网页是无法打开的,并且点灯任务也会无法运行,似乎是程序崩溃了。但是如果没加点灯任务,https可以成功运行。

我现在需要在这个例程中增加一个像点灯程序一样的应用程序,而且在我需要使用https服务也能正常使用。请问如何解决上面的问题呢?

0 Kudos
Reply
5 Replies

998 Views
jingpan
NXP TechSupport
NXP TechSupport

Hi @TheSix ,

看上去没什么问题。是不是栈爆了?或者用vTaskDelay()这样的函数做led的延时?

 

Regards,

Jing

0 Kudos
Reply

981 Views
TheSix
Contributor I

现在我的猜测也是觉得是heap爆了。但是这个点灯程序我只分配了4000个字节的栈空间,大概也就4kb,里面也没有动态分配内存,我分配了96kb的堆栈空间(不过动态内存分配方案我是用的是C语言标准库malloc,可能会导致堆栈碎片化严重,堆栈不够用可能是这个原因吗?),对这个工成来说应该是完全够用的,但为什么堆栈不够用呢?还有请问一下你所说的延时函数会有什么影响?

0 Kudos
Reply

930 Views
jingpan
NXP TechSupport
NXP TechSupport

Hi @TheSix ,

你可以直接debug一下看看。把程序的起始地址改到0x60000000,增加一个xip目录并且把别的工程中相应的程序copy进去。最后添加

XIP_BOOT_HEADER_DCD_ENABLE=1

XIP_EXTERNAL_FLASH=1

XIP_BOOT_HEADER_ENABLE=1

 

Regards,

Jing

0 Kudos
Reply

925 Views
TheSix
Contributor I

在有bootloader的情况下,https程序也能debug,堆栈小了的结果就是不断的进入硬件错误中断。但这似乎并不能显示什么问题。

0 Kudos
Reply

927 Views
TheSix
Contributor I

我将堆的大小从96kb改为120kb,https程序仍然不能正常运行,但是我将堆栈设置为200kb以后,点灯程序与https程序都可以正常运行。现在可以确定之前点灯程序与hppts程序不能同时运行,是因为堆栈小了的原因。这个现象并不正常,我给点灯程序分配的栈区为4000字节,点灯程序里面也并没有申请内存,我多加了24kb的堆还是不够,而没有点灯程序只有https程序的时候96Kb够了,为什么会是这样呢?

0 Kudos
Reply