我目前在编一个以太网传输程序,编译是通过的,但无法实现传输,运行显示是这样的
[C66xx_0] EVM Platform initialization...Done.
[C66xx_0] LLD initialization...Done.
[C66xx_0]
[C66xx_0] ENTER function: master_main()...
[C66xx_0] Start network job...
[C66xx_0] ti.sysbios.heaps.HeapMem: line 294: out of memory: handle=0x82c774, size=1536
[C66xx_0] ti.sysbios.heaps.HeapMem: line 294: out of memory: handle=0x82c774, size=2048
[C66xx_0] xdc.runtime.Error.raise: terminating execution
以下是我的程序片段:
EVM_init();
LLD_init();
printf("\nENTER function: master_main()...\n");
int rc = NC_SystemOpen( NC_PRIORITY_LOW, NC_OPMODE_INTERRUPT );//初始化协议栈和所需的内存环境
if( rc!=0 )
{
printf("NC_SystemOpen() failure\n");
NC_SystemClose();
return;
}
HANDLE hCfg = CfgNew();//创建NDK的配置句柄
if( !hCfg )
{
printf("CfgNew() failure\n");
NC_SystemClose();
return;
}
CfgAddEntry( hCfg,CFGTAG_SYSINFO,CFGITEM_DHCP_HOSTNAME,0,strlen(HostName),(UINT8*)HostName,0);//配置主机
CI_IPNET NI;
bzero(&NI,sizeof(NI));
NI.IPAddr = inet_addr(LocalIPAddr);
NI.IPMask = inet_addr(LocalIPMask);
strcpy(NI.Domain,DomainName);
NI.NetType = 0;
CfgAddEntry( hCfg, CFGTAG_IPNET, 1, 0,sizeof(CI_IPNET), (UINT8*)&NI, 0 );//配置网络和子网掩码
CI_ROUTE RT;
bzero( &RT, sizeof(RT) );
RT.IPDestAddr = 0;
RT.IPDestMask = 0;
RT.IPGateAddr = inet_addr(GatewayIP);
CfgAddEntry( hCfg, CFGTAG_ROUTE, 0, 0,sizeof(CI_ROUTE), (UINT8 *)&RT, 0 );//配置默认路由IP地址
rc = 8192;/*设置UDP缓冲区大小rc为8192字节*/
CfgAddEntry(hCfg,CFGTAG_IP,CFGITEM_IP_SOCKUDPRXLIMIT,CFG_ADDMODE_UNIQUE,sizeof(uint),(UINT8 *)&rc,0);
printf("Start network job...\n");
rc = NC_NetStart( hCfg, NetworkOpen, NetworkClose, NetworkIPAddr );//运行netcontrol
if(rc<=0)
{
printf("NC_Netstart() failure\n");
}
CfgFree( hCfg );
NC_SystemClose();
我发现我的程序是运行到rc = NC_NetStart( hCfg, NetworkOpen, NetworkClose, NetworkIPAddr )这行代码就停住退出了,我的CFG程序片段如下:
Program.sectMap["systemHeap"] = "DDR";
Program.sectMap[".sysmem"] = "DDR";
var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem');
var heapMemParams = new HeapMem.Params();
heapMemParams.size = 0x80000;
heapMemParams.sectionName = "systemHeap";
Program.global.heap0 = HeapMem.create(heapMemParams);
求问为什么heapmem会不够用,出现这样的情况啊