vxworks pci驱动

本文详细介绍了基于VxWorks操作系统的PCI设备驱动开发流程,包括PCI配置空间的理解,如何查找和访问设备,以及PCI中断处理。通过pciFindDevice获取设备信息,使用pciConfigInLong等函数进行配置空间的读取,最后注册驱动程序并处理中断。
摘要由CSDN通过智能技术生成

PCI配置空间

当VxWorks内核起来之后,PCI设备的第一次使用都是必须在调用sysHwInit2()例程之后。但是由于MMU内存映射的初始化和激活是在例程sysHwInit()和sysHwInit2()之间的,所以推荐的PCI初始化顺序为:

sysHwInit() 默认的MMU table entries相当于将本地事务映射为PCI事务的HOST-Bridge的访问侧

sysHwInit2() 在该例程中,程序员必须静态配置所有的PCI设备,或者调用动态配置routine pciAutoConfig()

每个PCI设备有3种物理空间:配置空间、存储器空间和I/O空间。配置空间是长度256字节的一段连续空间(16个32位寄存器)其中前64个字节为头标,其余192字节为设备相关信息。在64字节的头标中,前16字节的定义是确定的,后48字节的具体含义因设备而异。配置空间中的一个重要部分是基地址寄存器(BaseAddresssRegister),它的内容是PCI设备的地址空间映射到系统地址空间的起始物理地址。其中,bit0=1表示IO空间映射,bit0=0表示存储器空间映射。所有PCI设备必须实现存储器空间映射。通过向BAR写全1即可确定所需地址空间的大小。在VxWorks下要访问一个PCI设备,只需要知道该设备的厂商号和设备号。

基于VxWorks的PCi设备驱动程序开发流程,分为4个步骤:①创建设备;②根据PCI设备的配置参数,对PCI设备编写功能函数程序;

知道厂商号和设备号后,利用VxWorks提供的函数pciFindDevice()获得设备的总线号、设备编号和功能号。然后调用peiConfigInLong()获得多功能数据采集卡设备的配置空间、内存空间、I/O空间的地址;pciConfigInByte得到设备中断号。在读取设备的基地址时,结合设备相关的说明书进行

STATUS pciFindDevice(int vendorId, int deviceId,int 

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值