q
[align=right][color=#000066][此贴子已经被作者于2007-6-13 16:23:07编辑过][/color][/align]当然是你要编写驱动的那块卡的原理图呀。
搞了半天怎么变成CPCI了呢?主机是工控机还是CPCI?
你的卡片是买来的话,就会麻烦些,厂家一般不会提供很详细的信息。。。。自己做的就没有这个问题了。
热插拔与你说的随意插入就识别是两回事情(仅对PCI,CPCI来说吧)。
随意插入就能识别,叫做PCI的PnP特性,这个是与原来的ISA总线相比较的特点。以前的ISA总线设备比较麻烦,需要手动设置资源,比如中断啊,IO地址范围啊什么的,表现出来的效果就是:如果你新插卡要设置资源,卡的位置换了,也要重新设置。而PCI就方便些,随你插哪,都会自动分配资源,这个叫做Plug and Play也就是PnP。
关于热插拔:热插拔是CPCI才有的,PCI可没有,PnP虽然好,但也没有好到说系统带电运行过程中可以插入卡,拔除卡,也就是说PCI总线是必须要关机情况下插卡,拔卡。但是CPCI因为广泛运用到了电信等行业,需要系统宕机时间特别短,所以CPCI在PCI的基础上增加了热插拔规范,也就是实现了可以在开机运行的情况下插拔CPCI板卡。你可以仔细看看CPCI的热插拔规范。
热插拔对CPCI设备来说不是强制的,也就是说:不要求每个符合CPCI规范的板卡都有热插拔能力。
热插拔的实现是需要硬件和软件配合来进行的,通常情况如下(仅对外围卡,大致描述,实际上比这个复杂很多,分了很多步骤,主卡热插拔还要复杂些):
插进去:电气连接的插入通知通过长短针来实现,电气连接刚好OK的时候,插入的板卡要发送一个中断(一般用非屏蔽中断NMI)给系统,系统软件为插入的卡分配资源,并将卡加入系统中加载驱动开始工作。
拔出来:也是通过长短针,会在拔一点点的时候,向系统发一个中断,系统软件收到中断,把板子现在的工作停下来,并释放系统资源。
X86下面的用于控制CPCI的中断设置的一根线,是与另一个东西复用的,要在BIOS下进行正确设置才能起到中断作用。
所以你要编写驱动,如果要包含热插拔的特性的话,必须要仔细看CPCI的热插拔规范,有没有热插拔功能的驱动编写难度是不一样的--不仅仅要实现板卡的功能,还要实现板卡的热插拔控制,连应用程序也要跟着变化--因为不热插拔的情况下应用程序可以认为板卡一直存在,但有热插拔就不能这样想了。
是否实现热插拔需要你自己根据实际应用进行权衡。如果不是那种宕机时间要求特别小的应用,又或者你的CPU启动速度非常快(x86的不行,BOIS的时间就够长。。。。,但其它的如PPC,MPIS,SPARC就可以),就没有必要做热插拔。
另外,不知道你的BSP是不是自己写的,如果是,最好在开始做驱动之前做一下中断路由测试,也就是检查一下外围卡寄存器的intLine值是不是真的对应到系统相应的IRQ。。。。检查一下PCI的IRQ分配是不是正确的,如果不正确,搞起来会比较麻烦(但通常如果不是特别怪,默认的BSP模板是对的,,,就是有些卡就是不对,,每个厂家不一样)。
板卡是你自己做的吗?如果是:你肯定知道9052的本地(local)总线是如何与IDT71342连接的了--片选,地址,位宽等等。如果知道就可以把本地总线的地址空间确认,确认后根据这个地址编写EEPROM的内容,完成本地总线到PCI基址的映射关系。这个要仔仔细细看9052的手册,借助plx提供的工具来做。确定BAR类型,大小范围,位宽限制等。搞完之后,就可以通过PCI总线访问你的DPRAM了。使用了中断吗?没有就不用管了,用了的话就得配中断,也是EEPROM。
IDT71342的访问,最好让单片机等,不让PCI9052等,等了估计麻烦。又或者你做分页。数据量不大建议使用IO映射,免得各种板卡驱动不一样还麻烦(x86或者部分其它板卡还得加个MMU条目,大多数别的主板不用)。
关于识别:你就找0x10b5,0x9052的设备即可,或者你在EEPROM里面该掉它,变成你自己的。。。不过::::该Vendor ID和Device ID要小心,用Plx的那个工具,一旦你改了这两个,就改不回来了,因为它不再认了。我根据9030的做了个在VxWorks下可以读写EEPROM的程序,等你做到一定阶段,我可以提供给你看看,但现在还不需要。
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【笔记】生成报错synthdesignERROR被打赏50分 | |
【STM32H7S78-DK评测】LTDC+DMA2D驱动RGBLCD屏幕被打赏50分 | |
【STM32H7S78-DK评测】Coremark基准测试被打赏50分 | |
【STM32H7S78-DK评测】浮点数计算性能测试被打赏50分 | |
【STM32H7S78-DK评测】Execute in place(XIP)模式学习笔记被打赏50分 | |
每周了解几个硬件知识+buckboost电路(五)被打赏10分 | |
【换取逻辑分析仪】RA8 PMU 模块功能寄存器功能说明被打赏20分 | |
野火启明6M5适配SPI被打赏20分 | |
NUCLEO-U083RC学习历程2-串口输出测试被打赏20分 | |
【笔记】STM32CUBEIDE的Noruletomaketarget编译问题被打赏50分 |