VxWorks6.9上SMP功能学习

来源:互联网 发布:畅旋787棋牌源码 编辑:程序博客网 时间:2024/06/13 21:45


UINT32 smpCnt=0;

void myIdleTaskShow(void)
{
 UINT32 currentCpuIdx;
 cpuset_t cpuSet;
 UINT32 cpuIdx=0;
 while(1)
 {
  currentCpuIdx=vxCpuIndexGet();
  cpuSet=vxCpuConfiguredGet();

  //cpuIdx=_WRS_CPU_INDEX_GET ();
  
  printf("currentCpuIdx=%d,cpuSet=%d,smpCnt=%x\n",currentCpuIdx,cpuSet,smpCnt);
  smpCnt++;
  
  taskDelay(100);
 }
 
}

void CCIdle(void)
{
 TASK_ID tId;
 tId=taskSpawn("ccTask", 150,0,8192,myIdleTaskShow,0,1,2,3,4,5,6,7,8,9);
 
}


这个程序运行在ZYNQ7K硬件平台上,硬件平台内部有2个ARMv7的内核,两个CPU分别是CPU0和CPU1,默认从CPU0启动,两个CPU同时运行同一个VxWorks Kernel程序。从执行结果分析:

--同一个任务可以在CPU0上运行,也可以在CPU1上运行

--2个CPU共享内存,都可以访问到smpCnt变量

--2个CPU共享同一个外设,都通过同一个串口打印输出。




原创粉丝点击