工具/软件:TI-RTOS
各位专家、您好!
我在将数据从一个位置复制到另一个位置时遇到问题。
我将举例说明:
任务是查看缓冲器中的上升/下降。
配置文件 app.cfg 中
Program.sectMap[".far:src"]="MSMCSRAM"
Program.sectMap[".far:dest"]="MSMCSRAM"
在 file1.c 中:
extern far Int16_t src;/*来自 Modul file2.c*/
#pragma DATA_SECTION (dest、".far:dest");
#pragma DATA_ALIGN (dest、64);
int16_t dest[size];
void Task1() //在 Core0上运行,让我们假设是100ms 的循环时间
{
memcopy (src、dest、sizeof (src);
sendviaTCP (dest);
}
在 file2.c 中
#pragma DATA_SECTION (src、".far:src");
#pragma DATA_ALIGN (src、64);
int16_t src[size];
void Task2()/*在 Core 1上运行,让我们假设25ms Cycltime*/
{
INT 切换;
if (切换)
{
for (i=0;<size;i++))
{
SRC[I]=I;
}
}
其他
{
for (i=0;<size;i++))
{
SRC[I]=size-I;
}
}
toggle ();
}
我尝试使用信标来阻止以以下方式对缓冲区进行访问:
CSL_semAcquireInDirect (4);/*请求队列中的信号量4 */
执行{
SemOwner=CSL_semGetResourceOwner(4);/*检查 Core 1是否具有 SEM*/
isFree =CSL_semIsFree (4);/check sem 是否为 free*/
} while ((SemOwner!= 1)&&(0=isFree));
不幸的是、我看到斜坡断裂、在一帧中上下混了。
我认为这是我对存储器访问的误解、因此我可以从哪里获得合适的数据表或信息?
此致 Martin