微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > Virtex-II Pro开发板进行双核系统解决方案

Virtex-II Pro开发板进行双核系统解决方案

时间:11-19 来源:互联网 点击:

。没有获得权限,则等待或者退出;获得权限后,对共享资源访问,访问结束后释放锁。其在系统中的连接如图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开发板进行双核系统设计提供了参考价值。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top