双MicroBlaze软核处理器的SOPC系统设计(二)
扫描二维码
随时随地手机看文章
相关资料:
双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字节,可以重复发送。