接下来我们要开始正式进入LEON3的双核和四核的处理器平台设计。
首先我们来看一下硬件框图:
这是SMP的对称多处理器架构。对称多处理器是多个处理器运行操作系统地单一复本,并共享内存和一台计算机的其他资源。计算机负载把任务均匀分给这些处理器。这些处理器共享内存和地址空间。选择了AMBA 2.0 AHB/APB总线,存储控制器,PCI控制器,网络控制器,USB 2.0控制器。
硬件层的设计满足eCOS嵌入式操作系统对SMP的硬件限制要求:
1、处理器为2或者4核;
2、LEON3内有swapa指令,可以提供测试并设置同步机制,利用该条指令实现eCOS实现HAL_TAS_SET和HAL_TAS_CLEAR两个宏定义,eCOS在HAL层以这两个宏来实现螺旋锁;
3、在SMP系统中,各CPU通过Cache访问内存数据时,要求系统必须经常保持内存中数据与Cache中的数据的一致性,若Cache的内容更新了,内存中的内容也应该相应更新,否则会影响系统数据的一致性。硬件层采取了总线侦听技术维护了4个处理器的Data Cache的一致性;
4、硬件设计中所有的处理器共享SRAM和SDRAM,其编址方式是一致的,使编程更容易;
5、硬件设计中所有外设的寄存器,所有处理器都可以访问到;所有外设的中断都能引起所有处理器的中断处理,并且可以通过设置处理器的中断屏蔽寄存器指明哪个外设的中断由哪个处理器处理;
6、硬件设计中各个处理器之间通过多核中断控制器的中断来通信允许将中断传递到系统中特定的处理器,该处理器执行中断处理函数,根据消息的内容执行优先级抢占式重新调度或者时间片轮转调度;
对于软件部分,eCOS(embedded configurable operating system),这里有一些需要特别说明:
eCOS最大支持的处理器个数为8、典型的是2或者4;
硬件必须提供测试并设置或者比较并交换指令同步机制。eCOS内核使用这些硬件指令实现螺旋锁;
不使用Cache,所有的处理器共享Cache,或硬件维护Cache一致;
所有的处理器共享内存对所有的处理器的地址是一致的;
每个处理器都可以访问任何外设;
中断控制器必须将中断信号传送给指定的处理器;允许一个处理器上的事件导致另一个处理器的重新调度;
在某个处理器上运行的软件必须能识别其所运行的处理器;
再看一下LEON 3多核平台的实现:(eCOS嵌入式系统的移植,GRLIB IP库的配置和FPGA的开发)
eCOS的系统启动:由主CPU负责对数据结构初始化,并调用硬件抽象层中初始化程序,最后调用cyg_start进入应用程序。其他从CPU在系统复位后或处于挂起状态或处于某种循环状态。
1、对Configure/eCOS HAL/SPARC architecture设置如下:
FPU使能,SMP使能,Max number of CPUs supported 设为4。
2、对Configuration/eCOS Kernel/Kernel schedulers设置如下:
SMPsupport。
别的选择默认即可。
对于GRLIB IP库的配置:(使用tkconfig或者对包文件device.vhd手动编辑)
FPGA实现:(使用ISE的设计流程实现)
至此,我们就把各个部分已经实现。接下来就进行系统级的验证。
一是FPGA的综合报告;二是GRMON的反馈信息;三是使用timeslice,dhrystone等来验证系统软件的正确性。