2.2 启动
因为是双核CPU,所以在实现过程中应特别注意合理安排系统的启动顺序。上电后,上电复位信号COLDRES_L必须保持为低电平直到电源和参考时钟稳定在工作范围之内;然后BCM1250读取配置PLL倍频系数的引脚电平,从AD引脚读取系统其它配置信息,例如,是否选用PCI内部仲裁器,串口是否工作在同步模式等。启动时,芯片根据AD[17:18]信号电平,选择从挂在通用总线CS0上的Flash,或者从SMBus 0口的串行EEPROM读取启动代码。
图3以Windriver公司的VxWorks嵌入式实时操作系统为例,说明了启动顺序。其它操作系统的启动顺序类似。CPU0首先初始化,CPU1保持启动状态,等待CPU0完成基本的内核初始化、串口初始化、L1 Cache和L2 Cache的初始化;然后CPU0对CPU1初始化,包括内核的基本初始化和CPU1内部的L1 Cache初始化;接着,CPU1再次等待,CPU0对DDR SDRAM进行初始化,再将操作系统等数据从ROM复制到SDRAM,通知CPU1,然后启动操作系统;CPU1收到通知后,也将数据从ROM复制到SDRAM,运行操作系统的复本。较早地初始化串口,是为了便于通过计算机屏幕及监测系统的启动状况,判断故障所在。
2.3 选择操作系统的考虑
因为BCM1250是一种SMP系统,所以选择操作系统时应考虑SMP系统的特点,充分发挥BCM1250的双内核特性。与单核处理器相比,SMP系统的优势是显然的:
(1) 在完成一组任务时,两个CPU并行运行比一个CPU单独运行的速度快得多。
(2) 即使有一个CPU出现了致命故障,另一个CPU也能无缝地接管它的工作,降低系统的停工时间。
SMP系统与分布式多处理器的区别在于:在一个分布式多处理器系统中,处理单元个体通常以单独节点的形式存在,每个这样的节点中的处理器类型可以不同,并且各自配备内存和I/O设备。每个处理器可以运行自己的操作系统,只通过一种互连方式(例如以太网) ,利用消息或旗语来与其它处理器同步。而紧耦合共享内存SMP系统则不同。在SMP系统中,所有的处理器都运行操作系统的同一个副本,该操作系统可协调每个相似的CPU上同时发生的活动。由于紧耦合CPU所访问的是一个公共内存区,所以它们必须通过一种基于低延时共享内存的通信机制实现相互之间的同步。这对操作系统提出了要求。
其次,如果操作系统选择得当,能使硬件中确切的处理单元数对应用程序员透明。于是应用软件就能不进行任何针对SMP的修改而运行。
再次,BCM1250同时有两个任务在运行,两个CPU都可以处理中断,所以操作系统还必须具备“旋转锁”等机制,保证任务的合理调度和中断的及时处理。
业界流行的MontaVistaLinux专业版、VxWorks等RTOS均支持SMP系统。当然,用户也可以将单处理器RTOS扩展为支持SMP的系统。
虽然BCM1250比单内核处理器在结构上只多了一个内核,但是在启动顺序、任务调度、中断管理等方面却有着较大的差别,相应地对RTOS提出了较高的要求。BCM1250主要用于高端设备,在国内的开发应用还不普及。
--
原文链接: http://www.ednchina.com/Article/html/2006-07/2006710104727.htm
|