最近做项目遇到个很奇怪的问题,不知道有没有个大侠指点下,我移植好的RTX和emwin运行都没问题,加上SPI_FLASH文件系统也是没有问题的,但是加上SD卡文件系统之后就会导致emwin线程 不定时死机 但是其它线程运行正常,也就是说RTX并没有死机,专门处理emwin的线程代码循环部分如下:while(1){
GUI_Delay(10);// i 代表电池容量的数据
changeProgbarBat(i);//向标题栏窗体发送消息,改变电池显示的参数
}
实际调试的时候发现emwin是移植在等待sem信号量,只不过是一直等不来而已,
文件系统使用长文件名,#define _USE_LEN 2
/ 0: Disable LFN feature. _MAX_LFN has no effect.
/ 1: Enable LFN with static working buffer on the BSS. Always NOT thread-safe.
/ 2: Enable LFN with dynamic working buffer on the STACK.
/ 3: Enable LFN with dynamic working buffer on the HEAP.
按照示意,文件名应该是使用了芯片STACK 考虑到可能是堆栈太小的问题,后来就把堆栈改成 8192Byte问题并没有解决,然后又分别把heap和处理文件系统的线程和emwin线程的任务栈都扩大到8192Byte,问题依然没有解决,,
文件系统部分任务代码如下
__task void taskFatFs(void)
{
//test_sd_fatfs();
usart1TxStart("spi test\r\n");
test_spi_fatfs();
while(1)
{
LED0=!LED0; / / 实际测试发现程序已经执行到这里且正常执行,但就是接下来的时间不一定要多长时间,emwin的那个线程就死在等待sem信号量了
os_dly_wait(500);
}
}