双MicroBlaze软核处理器的SOPC系统设计(二)
出处:电子爱好者博客 发布于:2013-04-24 10:23:38
相关资料:
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开发板上得到实现,在超级终端中得到验证。本设计的优点是把处理器核之间的通信、中断、同步放在了同一系统中进行研究,深入研究了处理器之间的中断控制。下一步要做的工作是更多核的片上系统设计和操作系统移植。
版权与免责声明
凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。
本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。
如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
- EPS Global - 谁需要嵌入式安全?2024/4/22 15:39:31
- 什么是嵌入式SoC2024/4/3 16:20:28
- EasyARM-i.MX283(7)A 默认供电方案2024/3/28 17:39:53
- EasyARM-i.MX283(7)A 的快速入门2024/3/27 17:29:30
- 非线性数字滤波器:用例和示例代码2024/3/14 16:34:20
- 英特尔数据存储如何操作和实现
- 什么是微动开关_微动开关有什么用_微动开关使用方法
- VCC,VDD,VEE,VSS在电源原理图中有什么区别?
- 低压配电系统设计规范_低压配电系统设计注意事项
- xEV 主逆变器电源模块中第四代 SiC MOSFET 的短路测试
- 光耦详细应用教程
- 定义绝缘耐久性评估的电压脉冲测试要求
- 采用沟槽MOS结构,使存在权衡关系的VF和IR相比以往产品得到显著改善 ROHM推出实现业界超快trr的100V耐压SBD“YQ系列”
- NOVOSENSE - 纳芯微推出车规级温湿度传感器NSHT30-Q1,助力汽车智能化发展
- Keysight - EV 电池设计创新:扩大续航里程、延长电池寿命