我使用的开发环境是 windows7 64bit 系统, CCS5.3+sys/bios,我能够正常才跑官网给的mcsdk_2_01_02_06里面的网络程序。但是,我要自己新建一个工程,在RTSC下面做了如下的选择:DSPLIB C66X 3.1.00
IPC 1.24.0.04
MCSDK 2.1.2.6
MCSDK PDK TMS320C6678
NDK 2.23.0.00
NDK Network Support Package
SYS/BIOS 6.34.2.18
XDAIS 7.21.1.07
我的代码如下:
void NDK_task_buile()
{
for(;;)
{
int rc;
CI_IPNET NA;
CI_ROUTE RT;
HANDLE hcfg;
/**************************打开系统********************/
rc = NC_SystemOpen( NC_PRIORITY_LOW, NC_OPMODE_INTERRUPT );
if( rc )
{
printf("NC_SystemOpen Failed (%d)\n",rc);
goto main_exit;
}
/********************创建一个新的配置*********************/
hcfg=CfgNew();
if(!hcfg)
{
printf("Create configuration Failed (%d)\n");
goto main_exit;
}
/********************检测主机命和客户机命是否过长*********************/
if(strlen(DomainName)>=CFG_DOMAIN_MAX||strlen(HostName)>=CFG_HOSTNAME_MAX)
{
printf("Names too long\n");
goto main_exit;
}
/********************配置IP地址*********************/
bzero(&NA,sizeof(NA));
NA.IPAddr=inet_addr(LocalIPAddr);
NA.IPMask=inet_addr(LocalIPMask);
strcpy(NA.Domain,DomainName);
NA.NetType=0;
/********************增加配置到接1*********************/
CfgAddEntry(hcfg,CFGTAG_IPNET,1,0,sizeof(CI_IPNET),(UINT8 *)&NA,0);
/********************增加hostname到接口1*********************/
CfgAddEntry(hcfg,CFGTAG_SYSINFO,CFGITEM_DHCP_HOSTNAME,0,strlen(HostName),(UINT8 *)&HostName,0);
bzero(&RT,sizeof(RT));
RT.IPDestAddr=0;
RT.IPDestMask=0;
RT.IPGateAddr=inet_addr(GatewayIP);
/********************增加route*********************/
CfgAddEntry(hcfg,CFGTAG_ROUTE,0,0,sizeof(CI_ROUTE),(UINT8 *)&RT,0);
do
{
rc = NC_NetStart( hcfg, NetworkOpen, NetworkClose, NetworkIPAddr );
NetworkOpen();
NetworkClose();
NetworkIPAddr(0,0,0);
} while( rc > 0 );
Task_sleep(10);
CfgFree( hcfg );
// Close the OS
main_exit:
NC_SystemClose();
}
}
如果我不加rc = NC_NetStart( hcfg, NetworkOpen, NetworkClose, NetworkIPAddr ); 能够正常编译并运行,如果我加上rc = NC_NetStart( hcfg, NetworkOpen, NetworkClose, NetworkIPAddr );编程出错。
编译出现如下错误 :
**** Build of configuration Debug for project NDK ****
"C:\\ti\\ccsv5\\utils\\bin\\gmake" -k all
making ../src/sysbios.ae66 ...
gmake[1]: Nothing to be done for `all'.
'Building file: ../main.c'
'Invoking: C6000 Compiler'
"C:/ti/ccsv5/tools/compiler/c6000_7.4.1/bin/cl6x" -mv6600 --abi=eabi -g --include_path="C:/ti/ccsv5/tools/compiler/c6000_7.4.1/include" --include_path="C:/ti/pdk_C6678_1_1_2_6/packages/ti/transport/ndk/nimu" --include_path="C:/ti/pdk_C6678_1_1_2_6/packages/ti/drv/pa" --include_path="C:/ti/pdk_C6678_1_1_2_6/packages/ti/platform" --include_path="C:/ti/pdk_C6678_1_1_2_6/packages/ti/transport/ndk/nimu" --include_path="C:/ti/ndk_2_21_01_38/packages/ti/ndk/inc" --display_error_number --diag_warning=225 --preproc_with_compile --preproc_dependency="main.pp" --cmd_file="./configPkg/compiler.opt" "../main.c"
'Finished building: ../main.c'
' '
'Building target: NDK.out'
'Invoking: C6000 Linker'
"C:/ti/ccsv5/tools/compiler/c6000_7.4.1/bin/cl6x" -mv6600 --abi=eabi -g --display_error_number --diag_warning=225 -z -m"NDK.map" -i"C:/ti/ccsv5/tools/compiler/c6000_7.4.1/lib" -i"C:/ti/ccsv5/tools/compiler/c6000_7.4.1/include" --reread_libs --warn_sections --display_error_number --rom_model -o "NDK.out" -l"./configPkg/linker.cmd" "./main.obj" -l"C:\ti\pdk_C6678_1_1_2_6\packages\ti\csl\lib\ti.csl.intc.ae66" -l"C:\ti\ndk_2_22_00_06\packages\ti\ndk\stack\lib\stk6_ppp_pppoe.ae66" -l"libc.a"
<Linking>
undefined first referenced
symbol in file
--------- ----------------
NIMUDeviceTable C:\ti\ndk_2_22_00_06\packages\ti\ndk\stack\lib\stk6_ppp_pppoe.ae66<nimu.oe66>
error #10234-D: unresolved symbols remain
error #10010: errors encountered during linking; "NDK.out" not built
>> Compilation failure
gmake: *** [NDK.out] Error 1
gmake: Target `all' not remade because of errors.
我能够跑官方的MCSDK里面的历程,说明我的系统能够运行程序。那么请问工程师,我的错误是为什么,我应该如何改进。谢谢。