Chinaunix首页 | 论坛 | 博客
  • 博客访问: 375490
  • 博文数量: 44
  • 博客积分: 2060
  • 博客等级: 上尉
  • 技术积分: 528
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-17 20:50
文章分类
文章存档

2011年(1)

2010年(28)

2008年(15)

分类:

2010-03-08 11:44:29

你应该知道的硬件知识 PIC共存下的系统

PIC彻底走进历史的日子已经不远,Windows已经开始叫嚣要放弃对PIC系统的支持,新的架构也彻底和PICbyebye(例如我们伟大的IA64^_^)。当然,PIC还会继续在单片机、嵌入式领域发挥余热,这就不是我们所能理会的了。但目前PICAPIC共存的情况还普遍存在,MP specPICAPIC共存的平台规定了三种模式:PIC modeVirtual Wire ModeSymmetric I/O Mode

笔者:Symmetric这个单词打着甚为麻烦,下文把Symmetric I/O Mode称为APIC mode

三种模式中,PIC modeVirtual Wire Mode互斥存在,所谓有你没它。APIC mode是所有MP平台最终进入的模式。Spec规定,为了PC/AT compatibility,系统在RESET后首先进入PIC mode或者Virtual Wire mode,操作系统(或BIOS)在适当时候切换入APIC mode

IMCRInterrupt Mode Configuration Register,中断模式配置寄存器,控制当前系统的中断模式——PIC?还是APIC?当系统RESET后,该寄存器清0,系统默认进入PIC模式。此时BSPBoot Startup Processor,多处理器系统中第一个启动的CPU)的NMIINTR脚为硬连线,直接从外部接入,不经过APIC。下图显示了这个结构:

3-1 PIC模式中断连接图

注意图中的虚线,PIC模式下,外部中断通过PIC直接到达BSPINTR脚,而NMI直接连接BSPNMI脚。

IMCR1,可将系统切换至APIC模式。此时外部中断直接通过APIC到达CPUNMI则连接LAPICLINT1脚。

的访问

MP spec规定,I/O端口22h23h用于支持IMCR寄存器。对22h端口写70h可选中IMCR,此时对23h端口读/写即可。此外,如果PIC mode没有实现,IMCR则可能没有实现。MP tableMP feature information字节的IMCRP bit报告平台是否有ICMR

笔者:IMCRPIC mode可能已被埋入了历史的黄土。笔者查阅了ICH9ICH即南桥)的spec,没有找到该寄存器的描述。Google了一下,除了mp spec其它地方都没提到它。窃以为,此物已死。

顾名思义,该模式有一条虚导线。这条虚导线就是APIC——LAPICIOAPIC。除此之外,该模式和PIC模式没有大的区别。

IOAPIC用作虚导线情况如下:

3-2 Virtual Wire Mode —— IOAPIC

如图虚线,外部中断通过PIC连接的IOAPIC管脚,最终到达BSP。当然,连接PIC的这个管脚需要被配置成ExtINT模式。

笔者:specIOAPIC用作Virtual Wire的描述只有寥寥数语。根据前面介绍IOAPIC的内容,我们来猜测一下IOAPIC是什么样的。首先,IOAPICPRT表已经配置好了,不然无法向LAPIC发中断消息。其次由于外部中断即连接PIC又连接IOAPIC,为了避免出现中断复接的情况,IOAPIC中除了连接PIC的管脚,其它的都应该被mask。连接PIC的管脚delivery mode配置成ExtINT。再来猜猜PIC是什么样的。图中没有话出,但PICINTA脚肯定是连到了BSP的,因为对于配置成ExtINT的中断消息,CPU要通过INTA脚应答PIC,并接收中断的vector …… 以上纯属个人猜测

LAPIC用作Virtual Wire的情况:

3-3 Virtual Wire Mode —— LAPIC

还是看图中虚线,这次PIC接的是BSPLINT0脚,当然,该管脚也要配置成ExtINT模式。

笔者:MP spec没说如何从Virtual Wire Mode切换到APIC模式。我们再猜测一下,重新配置模式为ExtINTLAPICIOAPIC)的管脚,将PIC的所有管脚mask掉?

没什么好说的,直接看图:

3-4 APIC mode

一个要求,进入APIC模式后要将PIC的所有管脚mask掉。

 

阅读(6108) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~