双MicroBlaze软核处理器的SOPC系统设计(二)

时间:2013-04-24

相关资料:

双MicroBlaze软核处理器的SOPC系统设计(一)

 

 

 

 

  1.3 软件设计

  1.3.1 存储器映像

  为了保证每个处理器在执行软件部分时不发生冲突,必须对其存储器进行存储器映像。图2是存储器映像图。

图2 处理器的存储器映像图

 

  从图2中可以看出,用户可以灵活地为两个ELF文件分配适当大小的存储器空间作为ELF文件的映射地址范围。由于boot(引导)存储器不可以共享,所以ELF文件的boot部分(。vectors*)被映射到私有存储器中,它可以实现MicroBlaze处理器随时调用,也可以引导ELF文件加载到DDR中。Heap和stack的范围表示ELF文件在DDR中映像的存储器大小。boot存储器的大小表示boot部分所能引导的DDR的范围。ELF文件的位置和输出链接脚本的位置可以根据用户的需求选择。每个可执行文件的存储器映像地址都是通过编译器来实现的,实现以后被传到链接器,生成链接脚本。

  1.3.2 通信与同步

  利用Shared Memory模块通信是处理器之间常用的通信方式。其通信接口函数如下:

  SHM_WRITEAREA();/*向Shared Memory中写数据*/SHM_READAREA(); /*从Shared Memory中读数据*/利用Mailbox模块可以实现处理器之间的信息传递和中断。这在软件设计中主要体现在以下代码行中:

  XMbox_WriteBlocking();/*向Mailbox中写数据*/XMbox_ReadBlocking();/*从Mailbox中读数据*/在软件应用设计中,两个处理器之间的同步是通过Mutex Locks实现的,它的状态有LOCK和UNLOCK之分。Mutex状态的操作主要体现在以下命令行中:

  MLOCK();  /*使用之前LOCK*/MUNLOCK();/*使用之后UNLOCK*/软件的调试(debug)需要手工地选择处理器,两个处理器不可以同时调试。在XMD Console中的调试命令主要有:

  debugconfig–reset_on_run disable /*时避免复位*/dow executable.elf /*ELF文件*/run /*运行*/2 实验结果

  本设计采用调试模块分别对两个处理器进行调试,通过超级终端输出测试结果。

  2.1 Mailbox的测试结果

  通过Mailbox可以实现处理器之间的中断和通信。

  两处理器首先通过交换字符串“helo BOY”的形式汇合(rendezvous),以此来证明两个处理器的连接情况。在这里,每次发送的数据包为2044字节,共发送了3个数据包,都能成功地发送。经验证,每次发送的信息量为4096字节,可以重复发送。

  2.2 Mutex的测试结果

  通过Mutex可以实现两处理器的同步。当两个MicroBlaze处理器访问共享资源时,可以用Mutex核修改临界区域里共享资源的值。临界区域里的值是随着处理器的访问而更新的。在没有输出时处理器会锁定Mutex核,有输出时解锁Mutex核。同步使得控制台的输出结果正确可用,不会出现混乱的状态。

  2.3 Shared Memory的测试结果

  通过Shared Memory实现处理器之间的通信。处理器0首先向共享存储器中写入一个32位的数据并设置一个共享flag表明数据可用,等待处理器1读取这个数据。

  然后,处理器1从共享存储器中读取处理器0写入的数据并设置一个共享flag表明它已经读取了这个数据。双处理器会重复这样的过程,直到达到所设置的数目12.

  结 语

  本文以MicroBlaze软核为基础,利用XPS作平台来设计双MicroBlaze处理器片上系统,此片上系统可以很好地实现两软核处理器间的通信和中断功能,该系统在Xilinx公司的XUPV5-LX110T开发板上得到实现,在超级终端中得到验证。本设计的优点是把处理器核之间的通信、中断、同步放在了同一系统中进行研究,深入研究了处理器之间的中断控制。下一步要做的工作是更多核的片上系统设计和操作系统移植。

上一篇:双MicroBlaze软核处理器的SOPC系统设计(一)
下一篇:基于DSP的导航计算机硬件设计分析(一)

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料