Thread 中讨论的其他器件:SYSBIOS
工具/软件:TI C/C++编译器
您好!
我使用 PDK 4.01创建了一个新的 CCS 7空项目、在该项目中、我测试了教程中的示例代码。 我保留了所有自动参数。 问题是、在链接时未找到 IPC、XDC 和 SYSBIOS 中应用程序调用方法的多个源文件(但编译正常、与 DSP 的通信测试正常)。 我想它来自我的安装参数或我错过的配置。
我尝试从 XDC、IPC 和 PDK 的安装文件夹中添加多个库、但它只是创建了更多未解析的符号。 您是否对我的错误有任何了解?
我将错误的主要部分和 cfg 文件放在下面。 在链接命令中、您可以看到我尝试查找缺少库的文件夹(使用-i"/home/ahonorat/ti/...)。
谢谢
------------------------
构建目标:Sobel-678.out
调用:C6000链接器
"/home/ahonorat/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/bin/cl6x /home/ahonorat/ti/dsplib_c66x_3_4_0_0/packages/ti/dsplib/lib /home/ahonorat/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/lib /generated/Core1.obj /generated/Core4.obj /generated/Core7.obj /src/dump.obj /src/memory.obj /src/splitMerge.obj /src/yuvRead.obj -mv6600 -g -define=SOC_C6678 --define=EVM_C6678 --define=use_BIOS --define=device_C6678 --diag_wrap=off --display_error_number --diag_warning=225 -z -m"reeel-6678.map"-i"/home/ahonorat/ti/pdk_c667x_2_0_7/packages/ti/platform/evmc6678l/platform_lib/lib/debug /home/ahonorat/ti/ipc_3_46_02_04/packages/ti/sdo/ipc/lib/ipc/instrumented /home/ahonorat/ti/ccsv7/tools/compiler/ti-cgt-c6000_8.1.4/include /generated/Core2.obj /generated/Core5.obj /src/cache.obj /src/fifo.obj /src/semaphore6678.obj /src/utils.obj -exit_exit_ex-exit.xml"-/home/ahonorat/ti/ti-cgt-c6000_8.1.3/lib -/home/ahonorat/ti/ipc_3_46_02_04/packages/ti/sdo/utils/lib/utils/instrumented -exit_ex-ex-exit.example.exctrines"-"-"-/generated/Core0.obj -"/generated/Core3.obj -exit.line"-"-example"-"/generated/Core6.obj -"/src/communication.obj -exit.line.ex-"-example"-"/src/main.obj -"/src/sobel.obj -line.example"-"/src/yuvDisplay.obj -excove"-"-example.example"-"-"-line"-example"-"-example"-"-exit.line"-example"-"-"-example"-"-example.example.example.example.exe"-example.example"-"
警告#10247-D:在不使用 SECTIONS 规范的情况下创建输出段".neeardata"
警告#10247-D:在不使用 SECTIONS 规范的情况下创建输出段".rodata"
警告#10247-D:在不使用 SECTIONS 规范的情况下创建输出段".bss"
警告#10247-D:创建不带 SECTIONS 规范的输出段".text"
警告#10247-D:在不使用 SECTIONS 规范的情况下创建输出段".const"
警告#10247-D:在不使用 SECTIONS 规范的情况下创建输出段".fardata"
警告#10247-D:在不使用 SECTIONS 规范的情况下创建输出段".cinit"
警告#10247-D:在不使用 SECTIONS 规范的情况下创建输出段".stack"
警告#10247-D:创建不带 SECTIONS 规范的输出段".far"
警告#10247-D:创建不带 SECTIONS 规范的输出段".switch"
警告#10247-D:在没有 SECTIONS 规范的情况下创建输出段".mySharedMem"
警告#10247-D:在没有 SECTIONS 规范的情况下创建输出段".MSMCSRAM"
警告#10247-D:在不使用 SECTIONS 规范的情况下创建输出段".myInputVideoMem"
警告#10210-D:创建默认大小为0x400的".stack"段;使用-stack 选项更改默认大小
未定义 的首次引用
符号
------ --------
GateMP_Params_init ./src/semaphore6678.obj
GateMP_Close ./src/semaphore6678.obj
GateMP_create ./src/semaphore6678.obj
GateMP_DELETE ./src/semaphore6678.obj
GateMP_enter ./src/semaphore6678.obj
GateMP_leave ./src/semaphore6678.obj
GateMP_open ./src/semaphore6678.obj
ipc_start ./src/communication.obj
MultiProc_self /src/communication.obj
notify_registerEvent /src/communication.obj
notify_sendEvent ./src/communication.obj
TI_SYSBIOS_BIOS_exit__E ./src/main.obj
TI_SYSBIOS_BIOS_start__E ./src/main.obj
TI_SYSBIOS_KNL_Semaphore_create ./src/communication.obj
TI_SYSBIOS_KNL_Semaphore_Pend__E ./src/communication.obj
TI_SYSBIOS_KNL_Semaphore_post__E ./src/communication.obj
xdc_runtime_System_abort__E ./src/communication.obj
xdc_runtime_System_printf__E ./src/dump.obj
xdc_runtime_Timestamp_get32__E ./src/dump.obj
错误#10234-D:未解析的符号仍然存在
错误#10010:链接过程中遇到错误;未生成"sobre-678.out"
>>编译失败
Makefile: 159 :La recette pour la cible« è re é chel-678.out »a é chou é e
Makefile: 155 :la recette pour la cible« all »a ché ou é e
gmake[1]:***[sobre el-678.out] erreur 1.
gmake:***[全部] erreur 2.
****构建完成****
--------------------------------------------
VAR MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');
VAR 内存= xdc.useModule('xdc.runtime.Memory');
/*
* 获取构建设备支持的名称列表。
* 即["CORE0"、"Core1"、"Core..."。]
*
VAR namelist = MultiProc.getDeviceProcNames ();
/*
* 由于这是一个单映像示例、因此我们不会(在构建时)生成该示例
处理器 。 因此、我们提供"null"
* 作为本地 procName 并允许 IPC 在运行时设置本地 ProcID。
*
MultiProc.setConfig(null、名称列表);
/*
* SysStd 系统提供程序是一个用于调试的好工具
* 但没有最佳性能。 请使用 xdc.runtime.SysMin
以 获得更好的性能。
*
VAR 系统 = xdc.useModule('xdc.runtime.System');
VAR SysStd = xdc.useModule('xdc.runtime.SysStd');
System.SupportProxy = SysStd;
/*在 printf 中支持%f */
System.extendedFormats ="%f%$S";
/*应用中明确使用的模块*/
VAR MessageQ = xdc.useModule('ti.sdo.ipc.MessageQ');
VAR IPC = xdc.useModule('ti.sdo.ipc.Ipc');
VAR HeapBufMP = xdc.useModule('ti.sdo.ipc.heaps.HeapBufMP');
VAR MultiProc = xdc.useModule('ti.sdo.utils.MultiProc');
VAR Notify = xdc.useModule('ti.sdo.ipc.Notify');
VAR 时间戳= xdc.useModule('xdc.runtime.Timestamp');
/* BIOS/XDC 模块*/
VAR BIOS = xdc.useModule('ti.sysbios.BIOS');
BIOS.heapSize = 0x8000;
VAR 任务 = xdc.useModule('ti.sysbios.knl.Task');
var tsk0 = Task.create ('&tsk0_func');
tsk0.instance.name ="tsk0";
/*同步所有处理器(这将在 IPC_START 中完成)*/
Ipc.procSync = IPC.ProcSync_All;
/*共享内存基址和长度*/
VAR SHAREMDE= 0x0C000000;
VAR SHAREDMEMSIZE = 0x000FFFFC;// 1 MB - 4字节
/*
* 需要定义共享区域。 IPC 模块使用此功能
* 以制作可移植指针。 所有处理器都需要添加此内容
* 使用其共享存储器区域的基址进行调用。
* 如果处理器无法访问内存,请勿添加。
*
VAR SharedRegion = xdc.useModule('ti.sdo.ipc.SharedRegion');
SharedRegion.setEntryMeta(0、
{基地址:SHAREMMEM,
Len: SHAREDMEMSIZE、
ownerProId:0、
IsValid:true、
名称:"DDR2 RAM"、
});
/*创建堆*/
/*仅在使用动态分配时取消注释以下行
VAR HeapMemMP = xdc.useModule('ti.sdo.ipc.heaps.HeapMemMP');
SharedRegion.setEntryMeta(1、
{base:0x8000000、
Len: 0x10000000、
ownerProId:0、
IsValid:true、
名称:"DDR3"、
createHeap:true、
});
*
/**共享内存部分*/
Program.sectMap[".mySharedMem"]="DDR3";
Program.sectMap[".MSMCSRAM"]="MSMCSRAM";
/**会议部分 DDR3*/
Program.sectMap[".myConstMem"]="DDR3";
Program.sectMap[".myInputVideoMem"]= new Program.SectionSpec ();
Program.sectMap[".myInputVideoMem"].loadSegment ="DDR3";
Program.sectMap[".myInputVideoMem"].type ="NOINIT";