做一个简单的核间通过semaphore通信出错 - TMS320C6678 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 232|回复: 2

[未解决] 做一个简单的核间通过semaphore通信出错

[复制链接]

2

主题

5

帖子

1035

积分

金牌会员

Rank: 6Rank: 6

积分
1035
发表于 2020-9-25 09:18:21 | 显示全部楼层 |阅读模式
测试notify前想先测试2个核的semaphore传递信号,程序很简单:
在.cfg里加入semaphore,并设为0: Program.global.semHandle = Semaphore.create(0);  
在.c文件的任务里加入如下语句:0核打印,打印完释放semHandle ,1核等semHandle ,semHandle 来了 再打印:
         coreId = CSL_chipReadReg (CSL_CHIP_DNUM);
switch(coreId)
{
    case 0:
        platform_write("Core %d is working! \n",coreId);
        for(i=0;i<3;i++)
       {
            platform_write("Core %d is working on count %d! \n",coreId,i);
       }
       Semaphore_post(semHandle);
        platform_write("Core %d Mission Complete,and Semaphore is %d \n",coreId,Semaphore_getCount(semHandle));
     break;
case 1:
    Semaphore_pend(semHandle,BIOS_WAIT_FOREVER);
    platform_write("Core 1 is working! \n");
    for(i=0;i<Led_Light_Cnt;i++)
    {
        platform_write("Core 1 is working on count %d! \n",i);
    }
    break;
         default:
               break;
        }

可是运行结果总是0核打印正常,Semaphore_post 之后 Semaphore 也为1了,可是1核就是不打印啊,核1在Semaphore_pend(semHandle,BIOS_WAIT_FOREVER)之前的语句都正常执行,之后语句就不行了,传递不过来?!为啥?

我知道答案 本帖寻求最佳答案回答被采纳后将获得系统奖励0 , 目前已有2人回答
最近访问 头像模式 列表模式
回复

使用道具 举报

2

主题

5

帖子

1035

积分

金牌会员

Rank: 6Rank: 6

积分
1035
 楼主| 发表于 2020-9-25 16:12:19 | 显示全部楼层
回复 支持 反对

使用道具 举报

3

主题

467

帖子

1759

积分

创龙

Rank: 8Rank: 8

积分
1759
发表于 2020-9-25 18:26:21 | 显示全部楼层
可以参考一下我司相关多核案例

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则  回帖提醒

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号-1  

GMT+8, 2020-10-23 02:27 , Processed in 0.071076 second(s), 38 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表