LXFY
驱动牛犊
驱动牛犊
  • 注册日期2001-12-11
  • 最后登录2003-12-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3405回复:21

PCI地址的动态分配是如何实现的?

楼主#
更多 发布于:2002-02-23 10:50
我以往是搞软件的,最近一个月才开始开发简单的硬件和驱动程序,年前我作过一个ISA的试验板,现在公司要搞PCI,我发觉ISA与PCI有巨大的差别,哪位大虾可以告诉我PCI是如何实现PNP的?制作PCI板必须用PCI专用的芯片吗?还是无论用什么芯片只要尊守PCI的通信协议就可以?
我相信万有引力
Tom.Cat
禁止发言
禁止发言
  • 注册日期2001-10-10
  • 最后登录2019-07-29
  • 粉丝1
  • 关注0
  • 积分-53792分
  • 威望197411点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2002-02-23 11:20
用户被禁言,该主题自动屏蔽!
LXFY
驱动牛犊
驱动牛犊
  • 注册日期2001-12-11
  • 最后登录2003-12-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-02-23 14:30
非常感谢Tom.Cat对我的帮助
我现在的确有一些资料(PCI系统结构四),不过由于我对硬件了解不多,加上书讲的过于抽象,我很难理解还是希望大家给小弟一些简单易懂的解释,以便我有一个初步的认识,因为往往走出这第一步是最难的。
我相信万有引力
jst7792
论坛版主
论坛版主
  • 注册日期2001-12-10
  • 最后登录2006-11-16
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-02-25 16:19
光看PCI系统结构会越看越糊涂,不如直接看芯片资料.
兄弟们,给点分吧
lawhfy
驱动牛犊
驱动牛犊
  • 注册日期2001-06-15
  • 最后登录2002-04-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-02-26 09:30
制作PCI的方法有很多,最简单的是用S5933或PLX公司的接口芯片,那么你即使对PCI接口协议了解不多。也可以完成。它的主要缺陷是使用的灵活度比较差,但是开发周期比较短。通常在用接口芯片做完以后,你会对PCI接口协议有比较深的认识,这是如果用FPGA来自己做接口的话,成功的把握比较大,当然这跟各人的基础有关。
LXFY
驱动牛犊
驱动牛犊
  • 注册日期2001-12-11
  • 最后登录2003-12-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-02-26 12:27
恕我无知,FPGA是什么?
我相信万有引力
jst7792
论坛版主
论坛版主
  • 注册日期2001-12-10
  • 最后登录2006-11-16
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-02-26 13:14
Field Programable Gate Array
兄弟们,给点分吧
Tom.Cat
禁止发言
禁止发言
  • 注册日期2001-10-10
  • 最后登录2019-07-29
  • 粉丝1
  • 关注0
  • 积分-53792分
  • 威望197411点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2002-02-26 15:29
用户被禁言,该主题自动屏蔽!
mengfaf
驱动牛犊
驱动牛犊
  • 注册日期2002-02-26
  • 最后登录2005-05-31
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-02-27 09:46
jst7792兄:请教WINDOWS应用程序是如何实现对PCI插卡的数据读写工作的,希赐教。
jst7792
论坛版主
论坛版主
  • 注册日期2001-12-10
  • 最后登录2006-11-16
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-02-27 10:02
如果你想彻底搞清楚这个问题,从现在开始研究驱动程序,没有驱动程序,除非你在实模式下面,否则是不能操作硬件的.
如果你不想深入下去,就找一些别人可以提供驱动和API的芯片,不过驱动还是应当研究一下,应该有点具体概念.
兄弟们,给点分吧
mengfaf
驱动牛犊
驱动牛犊
  • 注册日期2002-02-26
  • 最后登录2005-05-31
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-02-27 16:36
jst7792兄:我还是有点不明白,像如下的定义后
DWORD P9050_ReadDWord (P9050_HANDLE hPlx, P9050_ADDR addrSpace, DWORD dwLocalAddr)
{
    DWORD dwOffset = hPlx->addrDesc[addrSpace].dwMask & dwLocalAddr;
    P9050_SetMode (hPlx, addrSpace, P9050_MODE_DWORD, dwLocalAddr);
    return P9050_ReadSpaceDWord(hPlx, addrSpace, dwOffset);
}
是不是不需要其他的库支持,就可以编译通过了吗,请赐教。
mengfaf
驱动牛犊
驱动牛犊
  • 注册日期2002-02-26
  • 最后登录2005-05-31
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-02-27 16:56
jst7792兄:帮我看一下以下的程序,为什么BUILD通不过,再次感谢!
jst7792
论坛版主
论坛版主
  • 注册日期2001-12-10
  • 最后登录2006-11-16
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-02-27 20:55
你是在用windriver编写驱动程序,严格的说这不是驱动程序,而是用户态的应用程序。建议先编译一下windriver生成的测试框架,看一看有没有问题。你的程序肯定需要windrvr.h和lib文件,可能还需要9050相关的库
兄弟们,给点分吧
lvwj
驱动老牛
驱动老牛
  • 注册日期2001-08-21
  • 最后登录2021-01-31
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望181点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
  • 社区居民
13楼#
发布于:2002-02-27 22:33
孙喜明译的一本书《vxd 入门》(记不清了),站上也有提及的。里面对 pnp 的内容讲的挺好的。在此之前,你最好看一下驱动入门(vxd 入门),然后看一下 vtoolsd 中 pnp 的例子。
www.bjjcz.com
lvwj
驱动老牛
驱动老牛
  • 注册日期2001-08-21
  • 最后登录2021-01-31
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望181点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
  • 社区居民
14楼#
发布于:2002-02-27 22:44
你用金龙公司的 plx9052 转会比较快。
pnp 过程大致如下(你最好查阅一下相关资料,我记不住):
 
计算机启动时,pnp bios 会扫描 pci 槽有没有扩展卡,如果有扩展卡,就读入其配置请求(一般存放在扩展卡的eeprom中),若扩展卡带扩展rom , bios 还会将控制权交给扩展卡的扩展rom中存放的启动程序; bios 启动完成后,计算机进入实模式(dos),然后进入保护模式(windows)。在 windows 启动时,操作系统仲裁所有 pci 设备的资源并分配资源给pci 设备。 pci 设备通过其驱动程序获取所分配的资源,并有驱动程序驱动工作。

资源包括:中断,io端口,内存,dma
www.bjjcz.com
mengfaf
驱动牛犊
驱动牛犊
  • 注册日期2002-02-26
  • 最后登录2005-05-31
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2002-02-28 09:28
那就烦请jst7792兄给一个具备PCI基本操作的小例程,
email:mengfa@yahoo.com.cn 不胜感激!
Master_Yi
驱动牛犊
驱动牛犊
  • 注册日期2002-04-04
  • 最后登录2004-06-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2002-04-15 17:37
PCI的资源分配是在BIOS中完成的吧?并不是每台机器都有WINDOWS的.然后软件只需要问BIOS 拿到相应的硬件的资源分配就可以对硬件进行操作了.BIOS提供了相应的操作界面.
我读书少,不要欺负我呀!
squirrel
驱动牛犊
驱动牛犊
  • 注册日期2002-03-16
  • 最后登录2002-08-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2002-04-15 18:39
的确,不是每台机器上都有windows,但:
1.现在的机器上几乎都有pci插槽和/或pci内嵌设备;
2.每台机器上也同样有操作系统;
没有windows操作系统的计算机也要过日子,也要把pci给操作(用)起来。
bios是工作在实模式下的,而pci内存映射的地址是保护模式下的,你能说是bios分配给pci的资源。这些在pci系统结构中说的很清楚,bios的确要枚举出每类总线(当然包括pci)上的每一个设备,然后建立管理设备的数据结构,当加载操作系统的时候,要把这个数据结构的的指针传递给操作系统,让操作系统知道系统里有那些设备他们的资源以及需要分配的资源情况。然后操作系统继续配置和管理这些设备。
当然,并不是说bios什么资源都不分配,那可能系统就无法正常启动了。因为在系统启动的过程中至少要用到显示器、键盘和硬盘光驱等设备,这些设备必须通过bios进行分配资源,并配置到可以使用位置。因为,以windows为例,我们第一次看到“蓝天白云”的之前,操作系统还没有加载,但上述提出的设备却已经开始使用了。
很可能的一种情况是,bios给他们分配的资源只是解决燃眉之急的,但不能登大雅之堂,操作系统要想利用这些设备必须给这些设备重新分配资源。
davidji
驱动牛犊
驱动牛犊
  • 注册日期2002-02-04
  • 最后登录2002-08-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2002-04-16 01:45
在bios 中有POST global device class configuration manager它负责plug and play device 的test and initializing

在bios 中有pci configuration manager它负责识别每一个pci device and individual fuctions,另外他还负责决定每一个pci device 的资源。它从system resource manager得到请求的资源,并分配给每一个pci deivce.

在bios 中有pci device initializtion fuctions完成软件对硬件的access.

在bios 中有system resource map它有一个当前系统被使用的资源的译码表,系统的bios system resource manager and run-time utilities 能够监测到系统资源的分配情况。

在bios 中有bios system resource manager来仲裁资源的分配和释放。

the operation system is resposible for the run-time portion of the plug and play architecture.like the system bios, it relies on special interfaces to accomplish the task of dynamically configuring the system so that there are no system conflict

a plug and play operation system has the ability to dynamically configure the system in much the same way as the system bios.

for example, in the case of hot-insertion, a device may be added to the system at any time.to do so, it must also have access to the platform hardware. the plug and play operating system must detect the change in the system configuration, dynamically allocate system resource to the device if required, and load any deivce any device drivers associated with the device--all without user intervention.


---------------------------------------------------------
To fully implement PnP requires three things:


PnP BIOS - The core utility that enables PnP and detects PnP devices. The BIOS also reads the ESCD for configuration information on existing PnP devices.

Extended System Configuration Data (ECSD) - A file that contains information about installed PnP devices.

PnP operating system - Any operating system, such as Windows 95/98/ME, that supports PnP. PnP handlers in the operating system complete the configuration process started by the BIOS for each PnP device.

[编辑 -  4/16/02 作者: davidji]
Master_Yi
驱动牛犊
驱动牛犊
  • 注册日期2002-04-04
  • 最后登录2004-06-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2002-04-17 12:39
我想这个问题davidji已经讲的比较清楚了.技术上的细节我就不多罗嗦.我想请同志们想想DOS下的状况就比较清楚了.DOS也是在实模式,dos下也有PCI设备在工作,可见实模式下PCI能工作是毫无疑问的。事实上PCI BIOS规范中就有16和32位操作的定义。操作系统改不改资源分配是另外一回事,它可以改,但不一定非要改。
我读书少,不要欺负我呀!
上一页
游客

返回顶部