This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

使用NDK出现一个问题,一直困扰解决不了。请工程师指点。

Other Parts Discussed in Thread: TMS320C6678, SYSBIOS

我使用的开发环境是 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里面的历程,说明我的系统能够运行程序。那么请问工程师,我的错误是为什么,我应该如何改进。谢谢。

  • 提示是一个symbol没有定义,可能是在cfg中少加了lib,你可以跟例程的cfg比对一下是否少添加了lib。

  • 我加了var NdkTransport = xdc.loadPackage('ti.transport.ndk'); 错误更多。呵呵。请详细指导,我应该如何处理,或者如何正确的使用NDK。

  • undefined               first referenced                                                                                                              
      symbol                     in file                                                                                                                   
     ---------               ----------------                                                                                                              
     Osal_cppiBeginMemAccess C:\TI_CCS53\pdk_C6678_1_1_2_6\packages\ti\drv\cppi\lib\ti.drv.cppi.ae66<cppi_drv.oe66>                                        
     Osal_cppiCsEnter        C:\TI_CCS53\pdk_C6678_1_1_2_6\packages\ti\drv\cppi\lib\ti.drv.cppi.ae66<cppi_drv.oe66>                                        
     Osal_cppiCsExit         C:\TI_CCS53\pdk_C6678_1_1_2_6\packages\ti\drv\cppi\lib\ti.drv.cppi.ae66<cppi_drv.oe66>                                        
     Osal_cppiEndMemAccess   C:\TI_CCS53\pdk_C6678_1_1_2_6\packages\ti\drv\cppi\lib\ti.drv.cppi.ae66<cppi_drv.oe66>                                        
     Osal_cppiFree           C:\TI_CCS53\pdk_C6678_1_1_2_6\packages\ti\drv\cppi\lib\ti.drv.cppi.ae66<cppi_heap.oe66>                                       
     Osal_cppiMalloc         C:\TI_CCS53\pdk_C6678_1_1_2_6\packages\ti\drv\cppi\lib\ti.drv.cppi.ae66<cppi_heap.oe66>                                       
     Osal_platformFree       C:\TI_CCS53\pdk_C6678_1_1_2_6\packages\ti\platform\evmc6678l\platform_lib\lib\debug\ti.platform.evm6678l.ae66<platform.obj>   
     Osal_platformMalloc     C:\TI_CCS53\pdk_C6678_1_1_2_6\packages\ti\platform\evmc6678l\platform_lib\lib\debug\ti.platform.evm6678l.ae66<platform.obj>   
     Osal_platformSpiCsEnter C:\TI_CCS53\pdk_C6678_1_1_2_6\packages\ti\platform\evmc6678l\platform_lib\lib\debug\ti.platform.evm6678l.ae66<evmc66x_spi.obj>
     Osal_platformSpiCsExit  C:\TI_CCS53\pdk_C6678_1_1_2_6\packages\ti\platform\evmc6678l\platform_lib\lib\debug\ti.platform.evm6678l.ae66<evmc66x_spi.obj>
     Osal_qmssBeginMemAccess C:\TI_CCS53\pdk_C6678_1_1_2_6\packages\ti\drv\qmss\lib\ti.drv.qmss.ae66<qmss_drv.oe66>                                        
     Osal_qmssCsEnter        C:\TI_CCS53\pdk_C6678_1_1_2_6\packages\ti\drv\qmss\lib\ti.drv.qmss.ae66<qmss_drv.oe66>                                        
     Osal_qmssCsExit         C:\TI_CCS53\pdk_C6678_1_1_2_6\packages\ti\drv\qmss\lib\ti.drv.qmss.ae66<qmss_drv.oe66>                                        
     Osal_qmssEndMemAccess   C:\TI_CCS53\pdk_C6678_1_1_2_6\packages\ti\drv\qmss\lib\ti.drv.qmss.ae66<qmss_drv.oe66>                                        
     allocateMessages        ./bench_qmss.obj                                                                                                              
     attachAll               ./bench_qmss.obj                                                                                                              
     calculateThroughput     ./bench_qmss.obj                                                                                                              
     detachAll               ./bench_qmss.obj                                                                                                              
     freeMessages            ./bench_qmss.obj                                                                                                              
     getExecutionTime64      ./bench_qmss.obj                                                                                                              
     getStartTime64          ./bench_qmss.obj                                                                                                              
     getStats                ./bench_qmss.obj                                                                                                              
     receiveMessages         ./bench_qmss.obj                                                                                                              
     sendMessages            ./bench_qmss.obj                                                                                                              
     syncReceiveCore         ./bench_qmss.obj                                                                                                              
     syncSendCore            ./bench_qmss.obj                                                                                                              

    error #10234-D: unresolved symbols remain

    >> Compilation failure
    error #10010: errors encountered during linking; "qmssIpcBenchmark_c6678.out"
       not built
    gmake: *** [qmssIpcBenchmark_c6678.out] Error 1
    gmake: Target `all' not remade because of errors.

    现在出现更多的这种错误。我该如何解决。

  • undefined               first referenced                                                                                                              
      symbol                     in file                                                                                                                   
     ---------               ----------------                                                                                                              
     Osal_cppiBeginMemAccess C:\TI_CCS53\pdk_C6678_1_1_2_6\packages\ti\drv\cppi\lib\ti.drv.cppi.ae66<cppi_drv.oe66>                                        
     Osal_cppiCsEnter        C:\TI_CCS53\pdk_C6678_1_1_2_6\packages\ti\drv\cppi\lib\ti.drv.cppi.ae66<cppi_drv.oe66>                                        
     Osal_cppiCsExit         C:\TI_CCS53\pdk_C6678_1_1_2_6\packages\ti\drv\cppi\lib\ti.drv.cppi.ae66<cppi_drv.oe66>                                        
     Osal_cppiEndMemAccess   C:\TI_CCS53\pdk_C6678_1_1_2_6\packages\ti\drv\cppi\lib\ti.drv.cppi.ae66<cppi_drv.oe66>                                        
     Osal_cppiFree           C:\TI_CCS53\pdk_C6678_1_1_2_6\packages\ti\drv\cppi\lib\ti.drv.cppi.ae66<cppi_heap.oe66>                                       
     Osal_cppiMalloc         C:\TI_CCS53\pdk_C6678_1_1_2_6\packages\ti\drv\cppi\lib\ti.drv.cppi.ae66<cppi_heap.oe66>                                       
     Osal_platformFree       C:\TI_CCS53\pdk_C6678_1_1_2_6\packages\ti\platform\evmc6678l\platform_lib\lib\debug\ti.platform.evm6678l.ae66<platform.obj>   
     Osal_platformMalloc     C:\TI_CCS53\pdk_C6678_1_1_2_6\packages\ti\platform\evmc6678l\platform_lib\lib\debug\ti.platform.evm6678l.ae66<platform.obj>   
     Osal_platformSpiCsEnter C:\TI_CCS53\pdk_C6678_1_1_2_6\packages\ti\platform\evmc6678l\platform_lib\lib\debug\ti.platform.evm6678l.ae66<evmc66x_spi.obj>
     Osal_platformSpiCsExit  C:\TI_CCS53\pdk_C6678_1_1_2_6\packages\ti\platform\evmc6678l\platform_lib\lib\debug\ti.platform.evm6678l.ae66<evmc66x_spi.obj>
     Osal_qmssBeginMemAccess C:\TI_CCS53\pdk_C6678_1_1_2_6\packages\ti\drv\qmss\lib\ti.drv.qmss.ae66<qmss_drv.oe66>                                        
     Osal_qmssCsEnter        C:\TI_CCS53\pdk_C6678_1_1_2_6\packages\ti\drv\qmss\lib\ti.drv.qmss.ae66<qmss_drv.oe66>                                        
     Osal_qmssCsExit         C:\TI_CCS53\pdk_C6678_1_1_2_6\packages\ti\drv\qmss\lib\ti.drv.qmss.ae66<qmss_drv.oe66>                                        
     Osal_qmssEndMemAccess   C:\TI_CCS53\pdk_C6678_1_1_2_6\packages\ti\drv\qmss\lib\ti.drv.qmss.ae66<qmss_drv.oe66>                                        
     allocateMessages        ./bench_qmss.obj                                                                                                              
     attachAll               ./bench_qmss.obj                                                                                                              
     calculateThroughput     ./bench_qmss.obj                                                                                                              
     detachAll               ./bench_qmss.obj                                                                                                              
     freeMessages            ./bench_qmss.obj                                                                                                              
     getExecutionTime64      ./bench_qmss.obj                                                                                                              
     getStartTime64          ./bench_qmss.obj                                                                                                              
     getStats                ./bench_qmss.obj                                                                                                              
     receiveMessages         ./bench_qmss.obj                                                                                                              
     sendMessages            ./bench_qmss.obj                                                                                                              
     syncReceiveCore         ./bench_qmss.obj                                                                                                              
     syncSendCore            ./bench_qmss.obj                                                                                                              

    error #10234-D: unresolved symbols remain

    >> Compilation failure
    error #10010: errors encountered during linking; "qmssIpcBenchmark_c6678.out"
       not built
    gmake: *** [qmssIpcBenchmark_c6678.out] Error 1
    gmake: Target `all' not remade because of errors.

    加了那个,我出现的错误更多了。呵呵。

  • 你是使用的pdk中自带的qmssIPC例程么,这个例程在ccs中导入之后就可以直接编译通过的,我使用的是pdk与你的版本一样。这个例程在cfg中已经引入相关module的lib。

    例程目录:pdk_C6678_1_1_2_6\packages\ti\transport\ipc\examples\qmssIpcBenchmark

  • 工程师,我就只是想新建一个工程,做个简单的网络,感觉库都是加了的,不晓得为什么,总是不能运行啊。所以,觉得很悲剧。呵呵。请详细指导。

  • 你好,我也是想自己建一个简单的网络工程,感觉指导手册说的都不详细,照那个坐下来工程编译过不了。请问你的问题解决了么?求指导,详细点的,我已经纠结好久了。非常感谢。

  • 你好:

        请问一下你清楚了吗?可不可以问一下NC_NetStart函数具体是怎么执行的呢?