您当前的位置:五五电子网电子知识单片机-工控设备综合-其它基于NiosII的SOPC多处理器系统设计方法 正文
基于NiosII的SOPC多处理器系统设计方法

基于NiosII的SOPC多处理器系统设计方法

点击数:7164 次   录入时间:03-04 12:02:40   整理:http://www.55dianzi.com   综合-其它

  4.2 为多处理器系统创建软件

   在 NiosII IDE[3]环境下,为3个处理器系统分别创建6个软件工程,为每个处理器创建一个应用工程和一个系统库工程。之后对软件工程进行编译、运行和调试。

   软件使用硬件Mutex共享一个消息缓存区。3个处理器分别写消息到消息缓存区(count)且循环加1。cpul读消息且通过JTAG_UART显示消息。每个处理器运行同样的C文件,但处理器的操作稍有不同。这是通过使用Ni-osII的cpuid实现的。在NioslI处理器系统中,某个处理器通过写其cpuid控制寄存器的值到Mutex寄存器的OWNER域来对Mutex加锁。cpuid寄存器保持一个静态值,在多处理器系统中,该值唯一地识别一个处理器,且在系统创建时确定。软件执行某个处理器的函数时,首先检查处理器的cpuid,如果cpuid正确,则执行相应函数。工程中的文件为 hello_world_multi.c,其中将信息写入缓冲区的功能由以下程序段实现:

程序段实现

  如果将信息从jtag_uart输出,那么程序首先判断id是否等于3。因为硬件设计时,只有cpul与jtag_uart相连,而cpul的id的值为 3(在系统创建时确定),cpu2、cpu3的id分别为1和2,且id的值等于cpuid控制寄存器的值加1,可在NiosII IDE环境下读取cpuid控制寄存器的内容。其信息输出的程序如下:

信息输出的程序

  在System Library属性中,第1个工程选择jtag_uart为stdin、stderr和stdout,选择cpul_timer为the SystEMCLOCk timer;第2个工程选择cpu2_timer为System clocktimer,验证stdin、stderr和stdout为null,因为这个处理器不与jtag_uart连接;第3个工程选择 cpu3_timer为SystEMClock timer,其余同工程2。验证这3个工程的SDRAM被选择为Program memory、Read-only data memory、Read/write data memory、Heap memory和Stack memory。

  分别经编译、下载、运行后,在终端上显示这3个处理器产生的消息,如图2所示。

处理器产生的消息

  结 语

  结果表明,3处理器系统通过硬件互斥核,实现了存储器的共享。在此实例的基础上,按同样的方法添加处理器及相应的硬件组件,并开发相关应用软件,即可实现满足不同需求的多处理器系统。



上一页  [1] [2] 


本文关键字:处理器  综合-其它单片机-工控设备 - 综合-其它