磁力驱动泵浦-上海龙亚泵业与您共同探讨磁力驱动泵的性能参数、价格行情!
  • 磁力驱动泵
  • 磁力驱动泵
当前位置: 主页 > 氟塑料磁力驱动泵 >

氟塑料磁力驱动泵上海厂家UBOOT下IXP425 PCI驱动程序设计

时间:2011-11-18 03:25来源:龙亚磁力驱动泵 作者:上海龙亚磁力驱动泵 点击:
>摘要:>>本文说明了IXP425 PCI控制器的结构和操作方法,然后说明了如何在UBOOT下为IXP425编写PCI驱动程序,最后说明了怎样驱动PCI网卡EEPRO-100。>>一、引言>>UBOOT是sourceforge下的一个开放源
>摘要:>>本文说明了IXP425 PCI控制器的结构和操作方法,然后说明了如何在UBOOT下为IXP425编写PCI驱动程序,最后说明了怎样驱动PCI网卡EEPRO-100。>>一、引言>>UBOOT是sourceforge下的一个开放源代码的项目,它是Universal Bootloader的简写,也就是通用开始工作程序的意思。通过选取不同的编译选项,可以引导多种处理器开始工作,如PowerPC,ARM,MIPS,X86等。>>IXP425是Intel公司推出的一款施用XScale核的CPU,其内部有三个网络处理引擎,被广泛的运用于网络设备中。要施用网络处理引擎必须施用Intel提供的库,但因为版权的原因,UBOOT并没有提供对网络处理引擎的支持,因此其不克不及施用网络。为了方便调试,咱们为UBOOT编写了PCI的驱动程序,这样就能施用PCI网卡拜候网络。>>本文说明如何编写IXP425的PCI驱动程序,并以EEPRO-100网卡为例,说明了如何驱动PCI网卡。>>二、PCI配置空间>>每个PC I 设备有3 种物理空间: 配置空间、Mory空间和I/O 空间。配置空间是长度256 字节的一段连续空间,其中前64个字节为Header( 头标) , 其余192 字节为设备相关信息。在64 字节的Header 中, 前16 字节的定义是确定的,后48字节的具体含义因设备而异,图1为配置空间的头标区。>>图1>>配置空间中的一个重要部分是基地址寄存器(Base Address Register) , 它的内容是PCI 设备的地址空间映射到系统地址空间的起始物理地址。其中,bit0= 1 表示I/O 空间映射, bit0= 0 表示存储器空间映射。所有PC I 设备必须使成为事实存储器空间映射或者I/O空间映射。通过向BAR 写全1 然后读取相关寄存器便可确定所需地址空间的巨细。>>三、IXP425 PCI控制器>>IXP425内部集成了PCI控制器,既支持在主标准样式也支持在从标准样式下工作,具体的工作标准样式可以在PCI控制状态寄存器的Bit0上读取,这一名在系统重起时由扩大总线的Bit1设置,为只读,若该位为1则IXP425作为主设备,若该位为0则IXP425位从设备。>>在IXP425中,PCI的寄存器可分为两类。一类可以直接由IXP425内部的AHB总线拜候,和内存统一编址,提供了拜候PCI配置空间的接口。另一类寄存器是PCI配置空间寄存器,它们符合PCI总线规范,其内容在第二节中介绍过。>>3.1 配置方法>>对于IXP425的PCI配置空间和外部设备的PCI配置空间,拜候的方法是不同的,底下将分别说明。>>a、拜候IXP425配置空间>>IXP425内部的PCI配置空间不克不及由AHB总线拜候,IXP425提供了台式机i_crp_ad_cbe,台式机i_crp_wdata,台式机i_crp_rdata三个寄存器来完成对其内部PCI配置空间的拜候。台式机i_crp_ad_cbe纪录要拜候的地址和号令,台式机i_crp_wdata,台式机i_crp_rdata分别为数据写入寄存器和数据读取寄存器。拜候的过程如次:>>(1)在台式机i_crp_ad_cbe中写入要操作的号令和要拜候寄存器的偏移量>>(2)如果要做写入操作,向台式机i_crp_wdata中写入数据;如果要作读取操作,从台式机i_crp_rdata中读取数据。>>b、拜候外部设备PCI配置空间>>台式机i_np_ad,台式机i_np_cbe,台式机i_np_wdata,台式机i_np_rdata,这四个寄存器为一组non_pre_fetch寄存器,它们提供了拜候外部PCI配置空间的方法。它们归属上边介绍的第一类寄存器,可以由AHB总线直接拜候,编址分别为0xC0000000,0xC0000004,0xC0000008和0xC000000C。台式机i_np_ad是PCI总线地址寄存器,提供了拜候外部PCI配置空间的地址。台式机i_np_cbe是PCI号令及字节控制寄存器,它将对外部PCI空间作相应的操作,这些个操作包括读/写配置空间,读/写Mory空间及读/写I/O空间等,在配置的过程中主如果完成对配置空间的读写,Mory空间和I/O空间可以在配置完成后由CPU迸发的读写。台式机i_np_wdata,台式机i_np_rdata分别为需要读入或者写入的数据,它们将被保存在这两个寄存器中。对外部PCI空间的拜候可分为如次的三个步骤:>>(1)在台式机i_np_ad中写入需要拜候寄存器的地址,格式如图2示:>>图2>>PCI总线可以在标准样式0和1两种标准样式下工作,但IXP425只支持在标准样式0下工作,所以这搭只说明了在标准样式0下的操作。这搭要出格指出的是,选定特定的PCI设备需要把ID_SEL引脚置高电平,其功效犹如片选信号,高电平的选择可以在台式机i_np_ad的11到31位完成,如连接外部设备ID_SEL引脚的为地址线31位则应该把第31位置1。>>(2)在台式机i_np_cbe写入要操作的号令>>(3)如果要写入数据,就在台式机i_np_wdata中写入数据;如果要读取数据,则可以在台式机i_np_rdata中读取>>3.2 AHB地址与PCI地址间的转换>>在进行Mory读/写和I/O读写时,可以用地址转换迸发的进行,底下说明了AHB地址和PCI地址间的转换关系。>>a、AHB空间到PCI空间的转化>>在IXP425中,PCI的地址空间被分为四个窗口,共为64M,如表1示:>>起始地址 竣事地址>>窗口一 ( 16MB ) 0x48000000 0x48FFFFFF>>窗口二 ( 16MB ) 0x49000000 0x49FFFFFF>>窗口三 ( 16MB ) 0x4A000000 0x4AFFFFFF>>窗口四 ( 16MB ) 0x4B000000 0x4BFFFFFF>>表1>>当AHB总线上有如上所述的地址时,将会通过寄存器PCI_PCIMBASE转换。该寄存器被分为4个部分,每部分纪录了转换后的基地址。例如若PCI_PCIMBASE的值为0x12345678,若AHB总线地址为0x48012345,转换后的PCI地址为0x12012345。若AHB总线地址为0x4A005678,怎PCI总线地址为0x56005678。>>b、PCI地址到AHB地址的转化>>PCI地址到AHB地址的转换通过PCI_AHBMBASE, PCI_AHBIOBASE,及在配置空间中的BAR0-5几个寄存器来控制。寄存器PCI_AHBMBASE被分为四部分,对应BAR0-3四个基址寄存器,负责PCI Mory周期的地址转换。假设PCI_AHBMBASE的值为0x01020304,BAR0值为0x20000000, BAR1的值为0x21000000, BAR2值为0x22000000,BAR3值为0x23000000。当PCI总线地址为0x21001234时,它将被映射到BAR1上,对应得AHB地址就为0x02001234。>>寄存器PCI_AHBIOBASE和BAR5对应,PCI_AHBIOBASE纪录I/O在AHB总线上的基址,而BAR5纪录在PCI总线上的基址,它们的转换方法与上边Mory地址的转换方法不异。而落在BAR4范围内的地址将被直接转换到IXP425内的一个寄存器PCI Doorbell Register。>>四、PCI驱动程序>>4.1 PCI控制器初始化>>因为咱们施用的目标板IXDP425中,IXP425工作在主标准样式下,因此这搭只介绍主标准样式下的初始化过程。其过程如次:>>(1)为PCI控制器分配引脚。除了PCI控制器自己的连接外,IXP425还施用了GPIO的一部分引脚,这包括GPIO14时钟引脚,GPIO13 RESET引脚,GPIO8-11中断引脚。>>(2)配置寄存器PCI_AHBMBASE, PCI_AHBIOBASE,PCI_PCIMBASE,以及IXP425的Base Address Register,为IXP425内部的AHB与PCI地址转换做初始化。>>(3)电子扫描外部设备。通过在PCI总线上电子扫描来发明PCI设备,若在总线上读取到有设备ID则表示有设备存在,这是还应该读取设备的Base Address Register,以确定设备存储器的巨细。>>⑷为每个设备分配基地址。通过电子扫描获得的存储器巨细为外围设备计较统一的AHB总线上的基址,并把计较获得的基址写入相应PCI设备的Base Address Register。>>4.2 连接网卡驱动程序>>在U-BOOT中已经提供了EEPRO-100的驱动程序,只要把它同PCI的驱动程序连接就能够施用。>>(1)加入编译选项。在include/configs/ixdp425.h中加入#define CONFIG_EEPRO100,这样U-BOOT在编译时就会加上网卡部分的程序。>>(2)连接网卡驱动程序。在网卡的驱动程序中施用了两个宏来完成AHB地址和PCI地址的转换,bus_to_phys(a)提供了PCI地址到AHB地址的转换,phys_to_bus(a)提供了AHB地址到PCI地址的转换。这两个宏内部施用了一个结构表示第端午中秋年节中所述寄存器的值。结构如次:>>struct 台式机i_region {>>unsigned long bus_start; /* Start on the bus */>>unsigned long phys_start; /* Start in physical address space */>>unsigned long size; /* Size */>>unsigned long flags; /* Resource flags */>>};>>在结构中定义了PCI地址的起始地址,AHB地址的起始地址,存储器巨细和资源类型(Mory或者I/O)等信息。在初始化中对这个结构赋值,然后挪用函数台式机i_register_hose(hose);向系统注册就可完成网卡驱动程序的连接。>>5、结论>>本文介绍了如何为IXP425在U-BOOT下添加PCI驱动程序,说明了IXP425 PCI控制器的工作方式,最后说明了怎样把PCI网卡EEPRO-100加入到U-BOOT中。>>参考文献>>1、PCI Local Bus Specification Revision 2.2 .>>2、Intel IXP4XX Product Line of Network Processors and IXC1100 Control Plane Processors Developer’s Manual. Intel Inc.>尊敬的用户您好:上海氟塑料磁力驱动泵厂家,请找上海龙亚氟塑料磁力驱动泵厂,如需选型报价的客户请致电O21-6l557088 或 O21-6l557088 (*^__^*) 嘻嘻……。 (责任编辑:龙亚磁力驱动泵厂)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情: