使用C6657,利用tcp协议从pc传输图片数据给dsp,dsp端用一个数组接收数据。如果数组大小设置比较小的话可以正常接收,但是一张图片大概30万像素,我试图一次性传递过去,就把数组大小扩成了30万,然后运行报错:
ti.sysbios.knl.Task: line 370: E_spOutOfBounds: Task 0x80073c48 stack error, SP = 0x80076c30.
xdc.runtime.Error.raise: terminating execution
出现这种错误是因为栈的大小设置太小了吗?我相关的设置如下:
// TCP Transmit buffer size
rc = 8192;
CfgAddEntry( hCfg, CFGTAG_IP, CFGITEM_IP_SOCKTCPTXBUF,
CFG_ADDMODE_UNIQUE, sizeof(uint), (UINT8 *)&rc, 0 );
// TCP Receive buffer size (copy mode)
rc = 8192;
CfgAddEntry( hCfg, CFGTAG_IP, CFGITEM_IP_SOCKTCPRXBUF,
CFG_ADDMODE_UNIQUE, sizeof(uint), (UINT8 *)&rc, 0 );
// TCP Receive limit (non-copy mode)
rc = 8192;
CfgAddEntry( hCfg, CFGTAG_IP, CFGITEM_IP_SOCKTCPRXLIMIT,
CFG_ADDMODE_UNIQUE, sizeof(uint), (UINT8 *)&rc, 0 );
/*
** Create a Heap.
*/
var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');
var heapMemParams = new HeapMem.Params();
heapMemParams.size = 0x30000;
heapMemParams.sectionName = "systemHeap";
Program.global.heap0 = HeapMem.create(heapMemParams);
/*
** Create the stack Thread Task for our application.
*/
var tskNdkStackTest = Task.create("&StackTest");
tskNdkStackTest.stackSize = 0x1000;
tskNdkStackTest.priority = 0x5;
我设置的数组是在由“htcp = TaskCreate( tcp_main, "PerformRawRX", OS_TASKPRIHIGH, 0x1400, 0, 0, 0 );”创建的任务中定义的,请问dsp可以一下子接收这么大的数据量吗?如果可以,应该怎么修改设置?