首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 单元电路介绍 > 其它电路
利用Virtex-II Pro开发板进行双核系统研究
来源:本站整理  作者:佚名  2011-11-22 07:53:44



2 软件工程设计

  2.1 软件工程构建

  (1)配置软件平台

  由于两个PowerPC通过总线及总线桥共享串口输入,因此需要在SOFtware Platform Settings中,对stdout和stdin配置为RS232_UART_1。

  (2)添加应用工程

  添加工程ppc0_test_share和ppc1_test_share。选中两个工程文件,分别Mark to initialize BRAM,并将软件工程指定给各自的处理器。

  Generate the linker script,指定将所有程序段放入各自的私有BRAM中。Update Bitstream以生成相应的全局比特流文件。

  软件工程包括SDRAM 测试、LED外设测试、SHARE BRAM的读写操作,测试结果通过共享串口进行输出。双核CPU通过Mutex核进行互锁访问,控制访问共享串口。

  2.2 Mutex核使用

  Mutex提供多核环境下处理器对共享设备的互斥访问。其原理是:Mutex具有32 bit的写数据寄存器,如图2所示。CPU_0访问共享资源前,先向该数据寄存器写自己的CPU_ID,如果Mutex设备空闲,则将CPUID写入寄存器,并LOCk置1。CPU_0通过查询和比较写数据寄存器和自己的CPUID,以确定是否获得访问共享资源的权限。没有获得权限,则等待或者退出;获得权限后,对共享资源访问,访问结束后释放锁。其在系统中的连接如图3所示。

  

  xps_mutex连接到PLB0和PLB1总线上,初始化时需要对其地址进行配置。在设计过程中发现,由于Xilinx的软件设计问题,EDK10在头文件xparameters.h中不能正常生成SPLB1的地址,表现为软件自动生成的SPLB1和SPLB0的地址相同,会造成Mutex初始化失败。因此在初始化Mutex时,切勿直接使用XMutex_LookupConfig()函数。PPC_1初始化Mutex的过程如下:

  #define XPAR_XPS_MUTEX_0_SPLB1_BASEADDR 0x82600000

  void init_lock ()

  { XMutex_Config *cfg;

  XMutex_Config XMutex_ConfigTable[] ={

  { XPAR_XPS_MUTEX_0_DEVICE_ID,

  XPAR_XPS_MUTEX_0_SPLB1_BASEADDR,

  //该地址需要对应SPLB1的地址

  XPAR_XPS_MUTEX_0_NUM_MUTEX,

  XPAR_XPS_MUTEX_0_ENABLE_USER}

  };

  cfg=&XMutex_ConfigTable[0];

  XMutex_CfgInitialize(&mutex, cfg, cfg->BaseAddress);

  }

  访问共享串口的操作为:

  void share_rs232(char *messages)

  { char *tmp;

  XMutex_Lock(&mutex, MUTEX_NUM);//对共享资源加锁

  printf("CPU(%x):%srn",XPAR_CPU_ID,messages);

  XMutex_Unlock(&mutex,MUTEX_NUM); //释放

  }

  2.3 系统测试结果

  2.3.1 共享串口测试

  设置超级终端,连接JTAG电缆,选中Download Bitstream将比特流下载到目标板上。通过共享串口,两个CPU分别输出其工作状态。输出结果如图4所示。

  

  其中CPU(0)输出私有存储器SDRAM的测试正确信息,说明PPC_0正常工作。

  同时观察板上LED显示,led_0、led_2和led_1、led_3呈现交替闪烁状态,说明PPC_1及外设LED工作正常。

  2.3.2 共享存储器读写测试

  SSHM_READFLAG为CPU读写状态指示。SSHM_READFLAG为0时,PPC_0进行写操作;为1时,PPC_1进行读操作。共享存储器的读写操作测试结果如图5所示。

  

  PPC_0对共享BRAM进行写数据操作,数据依次为0~4,每次写操作完成后将SSHM_READFLAG置1。PPC_1在PPC_0每次数据操作完毕后,检测到SSHM_READFLAG为1时进行读数据操作,操作完成后置SSHM_READFLAG为0。

  本文完成基于Virtex-II pro开发板的双核PowerPC系统的构建,提高板上资源利用效率。系统通过Mutex的互锁机制完成对共享资源的控制。共享串口输出调试结果,解决了开发板的单串口不易调试的问题;通过共享BRAM进行数据交换,可以实现系统的并行协同处理;直接下载比特流即可实现双核的系统运行,调试和系统运行更为方便。该系统为使用Virtex-II Pro开发板进行双核系统设计提供了参考价值。

上一页  [1] [2] 

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:26,085.94000 毫秒