你好,
变量是每个核单独的,不是共享的,但可以每个核上变量定义到同一个内存位置,达到类似全局的效果,教你一个方法。
(1)比如要共享变量share_variable,在每个核的代码中都声明:
///
#pragma DATA_SECTION (share_variable, ".global_shared");
static unsigned int share_variable;
///
(2)在link文件*.cmd中加入段定义
//
MEMORY {
.....
VAR_SHARED_RAM: origin = 0x0C3E0000 length=0x00020000
.....
}
....
.global_shared:type=NOINIT>VAR_SHARED_RAM
///
这样每个核上的变量share_variable,都对应与M3中的同一个内存,这就达到了类似全局变量的效果。
另外,记得在访问核间共享内存时,用spin_lock互斥(C6678有64个硬件信号量)。
-------------------------------------------------------------------------------------------------------------------------------------------
BTW:Enea提供针对C66的商用平台软件,如果有兴趣可以联系。
我们是TI的白金合作伙伴,可以提供C66上的全套商用平台软件,,包括操作系统、BSP驱动、TCP/IP协议栈,LINX IPC模块、中间件和开发工具。
OSEck RTOS 软件平台包括:
? OSEck RTOS内核:
o 稳定可靠,支持所有DSP,有20+年历史。
o 专门针对C66x优化。没有内存碎片的内存管理。
o 内存自动裁剪,统一的出错处理机制。
o …….
? BSP(驱动)源代码:优化高效的驱动,如RapidIO,Ethernet等。
? LINX IPC: 支持分布式系统的IPC.
o 使多核、多DSP、多板卡的编程好像单核编程一样。
o 支持任何物理介质,如C66x多核之间(EDMA),多DSP之间(RapidIO),多板卡之间(RapidIO, Ethernet)。
? TCP/IP协议
? Package Flow 软件加速包
? Optima开发优化工具:CPU,内存等性能优化工具。
Enea在DSP RTOS领域有近20年的开发、现场使用经验,针对复杂的C6678,从2010年起专门投入30多人的专家团队来支持优化6678软件平台,包括:
? 内核、重写高性能驱动、分布式支持、网络加速、优化工具等,现在以及有30多个客户使用Enea针对6678的软件平台:
1. 成熟、稳定、可靠、现场验证的,专门针对6678 DSP特别优化的OSEck RTOS。
2. 成熟稳定的针对C6678的驱动程序,支持包括SRIO、以太网、PA、Multicore Navigator、MPAX、中断管理等。
3. 跨核、跨DSP、跨板卡系统的透明传输模块LINX。
Br
William.dong@enea.com