CN115129648A - 车载监控板pcie总线转usb总线的方法及装置 - Google Patents
车载监控板pcie总线转usb总线的方法及装置 Download PDFInfo
- Publication number
- CN115129648A CN115129648A CN202210613574.0A CN202210613574A CN115129648A CN 115129648 A CN115129648 A CN 115129648A CN 202210613574 A CN202210613574 A CN 202210613574A CN 115129648 A CN115129648 A CN 115129648A
- Authority
- CN
- China
- Prior art keywords
- pcie
- bus
- usb
- function
- calling
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/38—Universal adapter
- G06F2213/3852—Converter between protocols
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明提供一种车载监控板PCIE总线转USB总线的方法及装置,该方法应用于基于Linux系统的设备,该方法包括:调用PCIE探测函数,将PCIE设备挂载到PCIE总线,并加载所述PCIE设备的驱动;调用所述PCIE探测函数,枚举USB探测函数,将USB设备节点挂载到所述PCIE总线,所述USB探测函数挂接于所述PCIE总线;调用USB总线注册函数,在USB总线上注册挂载到所述PCIE总线下的所述USB设备节点,连接所述PCIE总线和所述USB总线。该方法通过调用PCIE探测函数,拓展车载板卡PCIE总线的功能,使USB总线上的设备挂载到PCIE总线下,有效提升数据传输速度和板卡程序烧写速度。
Description
技术领域
本发明涉及轨道交通技术领域,尤其涉及一种车载监控板PCIE总线转USB总线的方法及装置。
背景技术
随着科技的发展,轨道交通领域朝着自动化、无人驾驶、互联互通的方向发展,轨道交通信号系统的列控装备的数据传输数据越来越大,对数据传输速度有着越来越高的要求。
目前,轨道交通列车的车载监控板使用串口进行程序烧写和数据拷贝,烧写程序时间长,数据传输速度慢,无法满足轨道交通信号系统日益增长的数据传输速度需求。
发明内容
本发明提供一种车载监控板PCIE总线转USB总线的方法及装置,用以解决现有技术中车载监控板使用串口进行程序烧写和数据拷贝,烧写程序时间长,数据传输速度慢的缺陷,对车载监控板进行完善,增加PCIE总线转USB总线的接口,提高数据传输速度和板卡程序烧写速度。
本发明提供一种车载监控板PCIE总线转USB总线的方法,所述方法应用于基于Linux系统的设备,所述方法包括:
调用PCIE探测函数,将PCIE设备挂载到PCIE总线,并加载所述PCIE设备的驱动;
调用所述PCIE探测函数,枚举USB探测函数,将USB设备节点挂载到所述PCIE总线,所述USB探测函数挂接于所述PCIE总线;
调用USB总线注册函数,在USB总线上注册挂载到所述PCIE总线下的所述USB设备节点,连接所述PCIE总线和所述USB总线。
根据本发明提供的一种车载监控板PCIE总线转USB总线的方法,所述调用PCIE探测函数,将PCIE设备挂载到PCIE总线,并加载所述PCIE设备的驱动,包括:
调用所述PCIE探测函数,初始化PCIE设备信息结构体;
调用PCIE设备使能函数,激活所述PCIE设备;
调用PCIE资源申请函数,申请所述PCIE设备的I/O资源;
调用PCIE设备配置函数,将所述PCIE设备配置为总线直接寄存器访问模式;
调用PCIE使能MSI中断函数,为所述PCIE设备分配MSI中断;
调用申请中断函数,初始化所述MSI中断。
根据本发明提供的一种车载监控板PCIE总线转USB总线的方法,在所述调用PCIE设备配置函数,将所述PCIE设备配置为总线直接寄存器访问模式之后,所述方法包括:
调用直接寄存器缓冲区申请函数,为所述总线直接寄存器访问模式的所述PCIE设备申请直接寄存器缓冲区。
根据本发明提供的一种车载监控板PCIE总线转USB总线的方法,所述调用PCIE资源申请函数,申请所述PCIE设备的I/O资源,包括:
调用PCIE资源基地址函数,获取所述I/O资源的基地址;
调用PCIE资源区域长度函数,获取所述I/O资源的I/O区域长度;
调用PCIE请求区域函数,申请所述I/O资源的地址空间;
调用IO地址空间映射函数,所述地址空间的物理地址映射成内核虚拟地址;
其中,所述PCIE资源申请函数包括所述PCIE资源基地址函数、所述PCIE资源区域长度函数和所述PCIE请求区域函数。
根据本发明提供的一种车载监控板PCIE总线转USB总线的方法,在所述调用USB总线注册函数之前,所述方法还包括:
建立USB控制器句柄;
基于所述USB控制器句柄,注册所述USB总线。
根据本发明提供的一种车载监控板PCIE总线转USB总线的方法,在所述调用PCIE探测函数之前,所述方法还包括:
调用PCIE总线驱动加载函数,将PCIE驱动句柄注册为PCIE设备驱动,所述PCIE设备驱动包括PCIE设备列表、所述PCIE探测函数和PCIE释放函数;
确定所述PCIE设备为所述PCIE设备列表中的设备,调用所述PCIE探测函数。
本发明还提供一种车载监控板PCIE总线转USB总线的装置,所述装置应用于基于Linux系统的设备,所述装置包括:
第一处理模块,用于调用PCIE探测函数,将PCIE设备挂载到PCIE总线,并加载所述PCIE设备的驱动;
第二处理模块,用于调用所述PCIE探测函数,枚举USB探测函数,将USB设备节点挂载到所述PCIE总线,所述USB探测函数挂接于所述PCIE总线;
第三处理模块,用于调用USB总线注册函数,在USB总线上注册挂载到所述PCIE总线下的所述USB设备节点,连接所述PCIE总线和所述USB总线。
本发明还提供一种车载监控板,包括:
如上述的车载监控板PCIE总线转USB总线的装置和USB外部接口。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述车载监控板PCIE总线转USB总线的方法。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述车载监控板PCIE总线转USB总线的方法。
本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述车载监控板PCIE总线转USB总线的方法。
本发明提供的车载监控板PCIE总线转USB总线的方法及装置,通过调用PCIE探测函数,拓展车载板卡PCIE总线的功能,使USB总线上的设备可以挂载到PCIE总线下,实现PCIE接口到USB接口的转接,使用转接的USB接口对数据进行拷贝、程序烧写和部署,便于人员操作,有效提升程序烧写、数据拷贝、日志下载及数据传输的速度,为PCIE增加其它总线通道奠定了技术基础。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的车载监控板PCIE总线转USB总线的方法的流程示意图;
图2是本发明提供的PCIE总线设备扫描与挂载过程的流程示意图;
图3是本发明提供的USB总线枚举过程的流程示意图;
图4是本发明提供的PCIE总线驱动过程的流程示意图;
图5是本发明提供的Linux系统的架构示意图;
图6是本发明提供的车载监控板的结构示意图;
图7是本发明提供的车载监控板PCIE总线转USB总线的装置的结构示意图;
图8是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明实施例的描述中,需要说明的是,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本发明实施例的描述中,需要说明的是,除非另有明确的规定和限定,术语“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体连接;可以是机械连接,也可以是电连接,或有线通信连接,或无线通信连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明实施例中的具体含义。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明实施例的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
随着科技的发展,轨道交通领域朝着自动化、无人驾驶、互联互通的方向发展,轨道交通信号系统的列控装备的数据传输数据越来越大,对数据传输速度有着越来越高的要求。
目前,轨道交通列车的车载监控板使用串口进行程序烧写和数据拷贝,烧写程序时间长,数据传输速度慢,无法满足轨道交通信号系统日益增长的数据传输速度需求。
PCIE(PCI Express)是新一代的高速数据传输的总线接口,因其传输速率快,例如,PCIE 3.0的传输速率可到达8Gb/s,广泛应用于数据中心、云计算、人工智能、机器学习、视觉计算、显卡、存储和网络等领域。
PCIE是一种高速串行计算机扩展总线标准,PCIE 4.0提供16Gb/s比特率,比PCIE3.0提供的带宽增加一倍。
轨道交通列车的车载监控板等列控设备的总线逐步朝着PCIE总线转接方向发展,原先的SATA接口被PCIE接口取代,PCIE 4.0SSD由非易失性存储器NVM Express(NVMe)规范驱动,NVMe SSD是替代SATA SSD的绝佳选择,专为横向扩展和超大规模数据传输环境而设计。
PCIE同时保持软件支持和二手机械接口的向后兼容性,PCIE总线可支持采用AHCI、NVMe和SCSI协议的硬盘,有SATA Express、M.2、PCIe、U.2等多种接口,对于兼容当前不用类型的设备非常便捷,不同类型的设备均可插在相同的插槽之上,例如,显卡、声卡、采集卡、转接卡、硬盘等,也可以通过转接的方式接入PCIE总线。
下面结合图1至图6描述本发明实施例的车载监控板PCIE总线转USB总线的方法,对车载监控板进行完善,增加PCIE总线转USB总线的接口,提高数据传输速度和板卡程序烧写速度。
如图1所示,本发明实施例的车载监控板PCIE总线转USB总线的方法包括步骤110至步骤130。
在本发明实施例,车载监控板PCIE总线转USB总线的方法应用于基于Linux系统的设备,也即PCIE总线转USB总线是在Linux系统的环境下实现的。
步骤110、调用PCIE探测函数,将PCIE设备挂载到PCIE总线,并加载PCIE设备的驱动。
在该步骤中,通过调用PCIE探测函数,将PCIE设备在PCIE总线上的挂载,并将挂载在PCIE总线上的PCIE设备驱动,实现PCIE设备的挂载和驱动。
其中,挂载(mounting)是指由操作系统使一个存储设备(诸如硬盘、CD-ROM或共享资源)上的计算机文件和目录可供用户通过计算机的文件系统访问的一个过程,驱动指能够使计算机与相应的设备进行通信的过程。
在该实施例中,PCIE探测函数是PCIE设备驱动中的一个函数,PCIE设备驱动(pcie_driver())由多个函数构成,包括设备列表(id_table)、PCIE探测函数(xhci_pci_probe())以及释放函数(remove())等函数。
PCIE探测函数对PCIE设备进行开启和初始化等操作,进而驱动程序开始文件操作、处理中断、DMA操作等工作,最终向内核注册字符设备,并进入启动状态。
步骤120、调用PCIE探测函数,枚举USB探测函数,将USB设备节点挂载到PCIE总线。
其中,USB探测函数挂接于PCIE总线,USB是英文Universal Serial Bus(通用串行总线)的缩写,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。
需要说明的是,USB探测函数直接挂接于PCIE总线,通过调用PCIE探测函数,将USB设备节点挂载于PCIE总线,相关技术中,一些PCIE转串口驱动通过外部KO文件注册到内核的,而本发明实施例中,PCIE转USB是直接修改内核函数,内核移植完成后直接就具备了PCIE转换功能。
在该实施例中,通过调用PCIE探测函数(xhci_pci_probe())枚举挂接于PCIE总线上的USB探测函数(usb_hcd_pci_probe()),将USB设备节点挂载到PCIE总线上,在PCIE总线创建USB设备节点。
步骤130、调用USB总线注册函数,在USB总线上注册挂载到PCIE总线下的USB设备节点,连接PCIE总线和USB总线。
在该实施例中,USB总线上挂载者USB设备,通过调用USB总线注册函数(usb_register_bus()),对挂载到PCIE总线下USB设备节点进行注册,实现PCIE总线与USB总线之间的连接。
可以理解的是,通过调用USB总线注册函数,将挂载到PCIE总线下USB设备进行注册,通过USB总线控制器连接挂载到PCIE总线下的USB设备节点,在该步骤中,USB总线已通过创建USB控制器句柄,把控制器添加到USB总线上,其中,USB总线控制器指Linux系统中USB总线主控制器。
在实际执行中,车载监控板中实现PCIE总线与USB总线连接后,可以直接使用USB总线上设置的USB接口更加便捷地上传下载更新各种应用数据、日志等文件,也能更快地烧写板卡应用程序。
可以理解的是,USB接口是大量计算机和智能设备的标准扩展接口和必备接口之一,具有使用方便、支持热插拔、连接灵活等优点,在机器视觉领域,大多机器视觉的摄像头采用USB标准连入主机系统,机器视觉是信号系统智能运维的发展方向,对数据传输速度有极高的要求,本发明实施例提供的PCIE总线转接,可以将USB总线上的设备挂载到PCIE总线进行更快速地数据传输,能够很好的满足轨道交通信号系统的发展需求。
根据本发明实施例提供的车载监控板PCIE总线转USB总线的方法,以linux系统为基础,通过调用同一PCIE探测函数,拓展车载板卡PCIE总线的功能,使USB总线上的设备可以挂载到PCIE总线下,实现PCIE接口到USB接口的转接,使用转接的USB接口对数据进行拷贝、程序烧写和部署,便于人员操作,有效提升程序烧写、数据拷贝、日志下载及数据传输的速度,为PCIE增加其它总线通道奠定了技术基础。
在一些实施例中,步骤110包括:
调用PCIE探测函数,初始化PCIE设备信息结构体;
调用PCIE设备使能函数,激活PCIE设备;
调用PCIE资源申请函数,申请PCIE设备的I/O资源;
调用PCIE设备配置函数,将PCIE设备配置为总线直接寄存器访问模式;
调用PCIE使能MSI中断函数,为PCIE设备分配MSI中断;
调用申请中断函数,初始化MSI中断。
在该实施例中,在PCIE探测函数(xhci_pci_probe())中对PCIE扩展总线设备函数(XbusPCIe_device())中保存PCIE设备信息结构体进行初始化,PCIE设备信息结构体是保存设备基本信息的结构体,后续各种类型的结构体都继承PCIE设备信息结构体。
通过调用PCIE设备使能函数(pci_enable_device())去激活PCIE设备,PCIE设备使能函数的调用可使驱动程序可以访问PCIE设备的任何资源,以使PCIE设备实际地被激活。
在实际执行中,与PCIE设备使能函数(pci_enable_device())作用相反的函数为PCIE设备使能中断函数(pci_disable_device()),PCIE设备使能中断函数用于关闭PCIE设备。
可以理解的是,Linux系统把设备当作一种特殊文件整合到文件系统中,每个如PCIE设备一般的I/O设备都被分配了一条路径,实现PCIE设备的挂载和驱动,需要调用PCIE资源申请函数,为PCIE设备申请对应的I/O资源。
在该实施例中,调用PCIE设备配置函数,将PCIE设备配置为总线直接寄存器访问模式,直接寄存器访问(Direct Memory Access,DMA)允许不同速度的硬件装置沟通,不需要依赖于CPU的大量中断负载。
在实现DMA传输时,是由DMA控制器直接掌管总线,因此,存在着一个总线控制权转移问题,即DMA传输前,CPU要把总线控制权交给DMA控制器,DMA传输将数据从一个地址空间复制到另外一个地址空间,而在结束DMA传输后,DMA控制器应立即把总线控制权再交回给CPU。
在该实施例中,将工作模式设置成总线主设备模式,PCIE设备获取总线占有权之后处理直接寄存器访问操作,调用PCIE设备配置函数(pci_set_master())将PCIE设备配置成总线直接寄存器访问模式。
可以理解的是,实现PCIE设备的驱动需要进行MSI(Message SignaledInterrupts)中断初始化。
在该实施例中,驱动在调用申请中断函数(request_irq())之前需要先调用PCIE使能MSI中断函数(pci_enable_msi())为PCIE设备分配MSI中断,使得PCIE设备切换到MSI模式,再去调用申请中断函数(request_irq())给PCIE设备注册中断,完成MSI中断的初始化。
在一些实施例中,在调用PCIE设备配置函数,将PCIE设备配置为总线直接寄存器访问模式之后,还可以调用直接寄存器缓冲区申请函数,为总线直接寄存器访问模式的PCIE设备申请直接寄存器缓冲区。
需要说明的是,PCIE驱动程序中,以直接寄存器访问操作的方式保证PCIE总线的数据传输即数据的读写操作,调用直接寄存器缓冲区申请函数(pci_alloc_consistent())给数据的读写操作分配直接寄存器访问操作的缓冲区。
在实际执行中,直接寄存器缓冲区申请函数处理直接寄存器缓冲区数据分配和映射,其返回值是保证数据一致性的直接寄存器缓冲区的内核虚拟地址。
在一些实施例中,为PCIE设备申请I/O资源通过如下步骤实现:
调用PCIE资源基地址函数,获取I/O资源的基地址;
调用PCIE资源区域长度函数,获取I/O资源的I/O区域长度;
调用PCIE请求区域函数,申请I/O资源的地址空间;
调用IO地址空间映射函数,地址空间的物理地址映射成内核虚拟地址;
其中,PCIE资源申请函数包括PCIE资源基地址函数、PCIE资源区域长度函数和PCIE请求区域函数。
在实施例中,调用PCIE资源基地址函数(pci_resource_start())和PCIE资源区域长度函数(pci_resource_len())获取I/O资源的基地址和I/O区域长度。
需要说明的是,调用PCIE请求区域函数(pci_request_regions())申请I/O资源的地址空间是物理地址,内核对任何内存的访问都需要使用自己的虚拟地址,所以还需要调用IO地址空间映射函数(ioremap())将该物理地址映射成内核虚拟地址,以使I/O资源的地址对内核可用。
在一些实施例中,PCIE设备的驱动过程还包括对鼠标、键盘、控制台等字符设备的注册过程。
注册字符设备包括分配设备号、初始化字符设备和添加设备,在该实施例中,通过调用动态分配设备编号函数(alloc_chrdev_region())动态注册字符设备编号,再通过主设备号函数(MAJOR())、次设备号函数(MINOR())分别获取主设备号和次设备号,然后调用字符设备初始化函数(cdev_init())函数对该字符设备的结构体进行初始化,建立字符设备结构体和系统调用驱动函数结构体(file_operations)之间的连接。
最后将字符设备添加进Linux系统内核中,调用字符设备注册函数(cdev_add())函数向内核注册一个字符设备结构,以使字符设备进入使用状态。
在一些实施例中,在调用USB总线注册函数之前,建立USB控制器句柄;基于USB控制器句柄,注册USB总线。在该实施例中,先创建USB控制器句柄(usb_hcd),通过USB控制器句柄中的usb_add_hcd()函数把主控制器添加到USB总线上,也即在系统中实现USB总线的注册。
在一些实施例中,在调用PCIE探测函数之前,调用PCIE总线驱动加载函数,将PCIE驱动句柄注册为PCIE设备驱动,PCIE设备驱动包括PCIE设备列表、PCIE探测函数和PCIE释放函数;确定PCIE设备为PCIE设备列表中的设备,调用PCIE探测函数。
在该实施例中,PCIE初始化函数(xhci_pci_init)通过调用PCIE总线驱动加载函数(pcie_register_driver()),将PCIE驱动句柄(xhci_pci_driver)注册为PCIE设备驱动(pcie_driver()),实现PCIE驱动的初始化。
其中,PCIE设备驱动(pcie_driver())包括设备列表(id_table)、PCIE探测函数(xhci_pci_probe())以及释放函数(remove())等函数。
设备列表(id_table)包含PCIE设备ID(pci_dev_id)和PCIE供应商ID(pci_vendor_id),在PCIE设备初始化时,需要判断PCIE设备是否是系统支持的设备,以判断PCIE设备能否正常驱动工作。
确定PCIE设备为PCIE设备列表中的设备,判断PCIE设备可以正常驱动工作,再去调用PCIE探测函数(xhci_pci_probe())。
释放函数(remove())是实现PCIE驱动卸载的函数,调用释放函数(remove())会释放PCIE探测函数(xhci_pci_probe())中所启动的各种I/O资源,再调用PCIE驱动卸载函数(pcie_driver_unregister())进行PCIE总线驱动的卸载。
下面对Linux系统中PCIE总线设备的扫描和挂载过程进行具体描述。
PCIE总线上有Host/PCIE桥和PCIE/PCIE桥,Host/PCIE桥提供CPU和PCIE设备相互访问的通道,实现系统CPU空间和PCI空间的映射,PCIE/PCIE桥实现PCIE设备的级联,
如图5所示,Linux系统中PCIE总线属于树状结构,CPU连接Host/PCIE桥,在PCIEbus1上延伸出PCIE/PCIE桥1和PCIE/PCIE桥2,PCIE设备1挂接于PCIE bus1,PCIE设备2和PCIE设备3通过PCIE/PCIE桥2挂接于PCIE bus1。
在PCIE bus2上延伸出PCIE/PCIE桥3,PCIE bus3通过PCIE/PCIE桥3与PCIE bus2连接,PCIE设备4挂接于PCIE bus3。
在实际执行中,PCIE总线属于树状结构,PCIE总线上设备扫描与挂载的过程是基于深度优先算法的。
如图2所示,在Linux系统上电后开始扫描PCIE设备,PCIE总线扫描连接到这个总线上的PCIE设备,例如,连接在PCIE总线的PCIE设备包括Device1、Device2和Device3。
PCIE总线为每个PCIE设备创建pci_dev并挂载到总线描述符上的devices链,然后检查是否有PCIE设备驱动加载。
如果有PCIE设备驱动加载,驱动程序将PCIE设备挂载到总线描述符的drivers链上。
此时,Linux系统的platform机制开自动匹配,当drv->driver.probe等于pci_device_probe的时候,PCIE设备驱动生效,完成PCIE总线上PCIE设备的扫描和挂载。
下面对Linux系统中USB总线枚举过程进行具体描述。
需要说明的是,USB是拓扑结构,如图5所示,USB 3.0设备1挂接于PCIE bus1、USB3.0设备2和USB 3.0设备3挂接于PCIE bus2、USB 3.0设备4挂接于PCIE bus3。
通过USB总线枚举对接入的USB设备进行识别、寻址、状态管理、动态配置。
如图3所示,插入USB设备后,通过内部管脚电平变化触发中断,进入总线枚举。
USB协议定义了设备的6种状态,仅枚举过程设备就经历了4个状态的迁移:上电状态(Powered),默认状态(Default),地址状态(Address)和配置状态(Configured)。
上电状态:将一个USB设备插入USB接口;默认状态:检测USB设备状态、复位、是否高速设备、查询设备描述符;地址状态:Host给USB设备分配地址,启用新地址与主机进行通信;配置状态:主机挂载USB设备,并且给USB设备配置状态,成功激活USB设备,进入使用状态。
在该实施例中,经过枚举过程的4状态,USB设备驱动激活,USB设备可以开始使用。
下面对Linux系统中PCIE总线驱动初始化的过程进行具体描述。
如图4所示,Linux系统相应的模块开始加载,通过pcie_driver进行PCIE总线驱动的注册,根据PCIE驱动中的设备列表id_table判定是否为支持的相关设备。
判断为支持的相关设备时,继续执行PCIE探测函数,开启PCIE设备、为其申请I/O资源,执行中断初始化、DMA初始化和字符设备初始化等操作,驱动程序开始文件操作、处理中断、DMA操作等工作。
在PCIE探测函数执行完操作后,调用释放函数对模块进行卸载,注销相应的PCIE驱动,当再次调用PCIE探测函数完成PCIE总线与USB总线的连接之后,驱动自动进入USB总线枚举过程。
下面对本发明实施例提供的车载监控板PCIE总线转USB总线的装置进行描述,下文描述的车载监控板PCIE总线转USB总线的装置与上文描述的车载监控板PCIE总线转USB总线的方法可相互对应参照。
如图7所示,本发明实施例提供的车载监控板PCIE总线转USB总线的装置包括:
第一处理模块710,用于调用PCIE探测函数,将PCIE设备挂载到PCIE总线,并加载PCIE设备的驱动;
第二处理模块720,用于调用PCIE探测函数,枚举USB探测函数,将USB设备节点挂载到PCIE总线,USB探测函数挂接于PCIE总线;
第三处理模块730,用于调用USB总线注册函数,在USB总线上注册挂载到PCIE总线下的USB设备节点,连接PCIE总线和USB总线。
根据本发明实施例提供的车载监控板PCIE总线转USB总线的装置,
在一些实施例中,第一处理模块710用于调用PCIE探测函数,初始化PCIE设备信息结构体;调用PCIE设备使能函数,激活PCIE设备;调用PCIE资源申请函数,申请PCIE设备的I/O资源;调用PCIE设备配置函数,将PCIE设备配置为总线直接寄存器访问模式;调用PCIE使能MSI中断函数,为PCIE设备分配MSI中断;调用申请中断函数,初始化MSI中断。
在一些实施例中,第一处理模块710用于调用直接寄存器缓冲区申请函数,为总线直接寄存器访问模式的PCIE设备申请直接寄存器缓冲区。
在一些实施例中,第一处理模块710用于调用PCIE资源基地址函数,获取I/O资源的基地址;调用PCIE资源区域长度函数,获取I/O资源的I/O区域长度;调用PCIE请求区域函数,申请I/O资源的地址空间;调用IO地址空间映射函数,地址空间的物理地址映射成内核虚拟地址;
其中,PCIE资源申请函数包括PCIE资源基地址函数、PCIE资源区域长度函数和PCIE请求区域函数。
在一些实施例中,第二处理模块720用于建立USB控制器句柄;基于USB控制器句柄,注册USB总线。
在一些实施例中,第一处理模块710用于调用PCIE总线驱动加载函数,将PCIE驱动句柄注册为PCIE设备驱动,PCIE设备驱动包括PCIE设备列表、PCIE探测函数和PCIE释放函数;
确定PCIE设备为PCIE设备列表中的设备,调用PCIE探测函数。
本发明实施例还提供一种车载监控板。
车载监控板包括如上文描述的车载监控板PCIE总线转USB总线的装置和USB外部接口。
车载监控板PCIE总线转USB总线的装置可以实现PCIE总线转USB总线,USB外部接口连接车载监控板PCIE总线转USB总线的装置,在USB外部接口插接设备时,可以通过PCIE总线提高数据烧写和数据拷贝速度,降低时间成本。
如图6所示,车载监控板可以采用Imx6架构,车载监控板通过PCIE总线和PCIE接口接入μPD720202扩展芯片,车载监控板PCIE总线转USB总线的装置可以设置于μPD720202扩展芯片。
在该实施例中,通过扩展μPD720202芯片增加两个USB3.0外部接口Port1和Port2,可以使得USB3.0设备插入Port1和Port2,可以通过PCIE总线实现数据烧写和数据拷贝。
图8示例了一种电子设备的实体结构示意图,如图8所示,该电子设备可以包括:处理器(processor)810、通信接口(Communications Interface)820、存储器(memory)830和通信总线840,其中,处理器810,通信接口820,存储器830通过通信总线840完成相互间的通信。处理器810可以调用存储器830中的逻辑指令,以执行车载监控板PCIE总线转USB总线的方法,该方法应用于基于Linux系统的设备,该方法包括:调用PCIE探测函数,将PCIE设备挂载到PCIE总线,并加载PCIE设备的驱动;调用PCIE探测函数,枚举USB探测函数,将USB设备节点挂载到PCIE总线,USB探测函数挂接于PCIE总线;调用USB总线注册函数,在USB总线上注册挂载到PCIE总线下的USB设备节点,连接PCIE总线和USB总线。
此外,上述的存储器830中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的车载监控板PCIE总线转USB总线的方法,该方法应用于基于Linux系统的设备,该方法包括:调用PCIE探测函数,将PCIE设备挂载到PCIE总线,并加载PCIE设备的驱动;调用PCIE探测函数,枚举USB探测函数,将USB设备节点挂载到PCIE总线,USB探测函数挂接于PCIE总线;调用USB总线注册函数,在USB总线上注册挂载到PCIE总线下的USB设备节点,连接PCIE总线和USB总线。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的车载监控板PCIE总线转USB总线的方法,该方法应用于基于Linux系统的设备,该方法包括:调用PCIE探测函数,将PCIE设备挂载到PCIE总线,并加载PCIE设备的驱动;调用PCIE探测函数,枚举USB探测函数,将USB设备节点挂载到PCIE总线,USB探测函数挂接于PCIE总线;调用USB总线注册函数,在USB总线上注册挂载到PCIE总线下的USB设备节点,连接PCIE总线和USB总线。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种车载监控板PCIE总线转USB总线的方法,所述方法应用于基于Linux系统的设备,其特征在于,所述方法包括:
调用PCIE探测函数,将PCIE设备挂载到PCIE总线,并加载所述PCIE设备的驱动;
调用所述PCIE探测函数,枚举USB探测函数,将USB设备节点挂载到所述PCIE总线,所述USB探测函数挂接于所述PCIE总线;
调用USB总线注册函数,在USB总线上注册挂载到所述PCIE总线下的所述USB设备节点,连接所述PCIE总线和所述USB总线。
2.根据权利要求1所述的车载监控板PCIE总线转USB总线的方法,其特征在于,所述调用PCIE探测函数,将PCIE设备挂载到PCIE总线,并加载所述PCIE设备的驱动,包括:
调用所述PCIE探测函数,初始化PCIE设备信息结构体;
调用PCIE设备使能函数,激活所述PCIE设备;
调用PCIE资源申请函数,申请所述PCIE设备的I/O资源;
调用PCIE设备配置函数,将所述PCIE设备配置为总线直接寄存器访问模式;
调用PCIE使能MSI中断函数,为所述PCIE设备分配MSI中断;
调用申请中断函数,初始化所述MSI中断。
3.根据权利要求2所述的车载监控板PCIE总线转USB总线的方法,其特征在于,在所述调用PCIE设备配置函数,将所述PCIE设备配置为总线直接寄存器访问模式之后,所述方法包括:
调用直接寄存器缓冲区申请函数,为所述总线直接寄存器访问模式的所述PCIE设备申请直接寄存器缓冲区。
4.根据权利要求2所述的车载监控板PCIE总线转USB总线的方法,其特征在于,所述调用PCIE资源申请函数,申请所述PCIE设备的I/O资源,包括:
调用PCIE资源基地址函数,获取所述I/O资源的基地址;
调用PCIE资源区域长度函数,获取所述I/O资源的I/O区域长度;
调用PCIE请求区域函数,申请所述I/O资源的地址空间;
调用IO地址空间映射函数,所述地址空间的物理地址映射成内核虚拟地址;
其中,所述PCIE资源申请函数包括所述PCIE资源基地址函数、所述PCIE资源区域长度函数和所述PCIE请求区域函数。
5.根据权利要求1-4任一项所述的车载监控板PCIE总线转USB总线的方法,其特征在于,在所述调用USB总线注册函数之前,所述方法还包括:
建立USB控制器句柄;
基于所述USB控制器句柄,注册所述USB总线。
6.根据权利要求1-4任一项所述的车载监控板PCIE总线转USB总线的方法,其特征在于,在所述调用PCIE探测函数之前,所述方法还包括:
调用PCIE总线驱动加载函数,将PCIE驱动句柄注册为PCIE设备驱动,所述PCIE设备驱动包括PCIE设备列表、所述PCIE探测函数和PCIE释放函数;
确定所述PCIE设备为所述PCIE设备列表中的设备,调用所述PCIE探测函数。
7.一种车载监控板PCIE总线转USB总线的装置,所述装置应用于基于Linux系统的设备,其特征在于,所述装置包括:
第一处理模块,用于调用PCIE探测函数,将PCIE设备挂载到PCIE总线,并加载所述PCIE设备的驱动;
第二处理模块,用于调用所述PCIE探测函数,枚举USB探测函数,将USB设备节点挂载到所述PCIE总线,所述USB探测函数挂接于所述PCIE总线;
第三处理模块,用于调用USB总线注册函数,在USB总线上注册挂载到所述PCIE总线下的所述USB设备节点,连接所述PCIE总线和所述USB总线。
8.一种车载监控板,其特征在于,包括:
如权利要求7所述的车载监控板PCIE总线转USB总线的装置和USB外部接口。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至6任一项所述车载监控板PCIE总线转USB总线的方法。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述车载监控板PCIE总线转USB总线的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210613574.0A CN115129648A (zh) | 2022-05-31 | 2022-05-31 | 车载监控板pcie总线转usb总线的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210613574.0A CN115129648A (zh) | 2022-05-31 | 2022-05-31 | 车载监控板pcie总线转usb总线的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115129648A true CN115129648A (zh) | 2022-09-30 |
Family
ID=83377232
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210613574.0A Pending CN115129648A (zh) | 2022-05-31 | 2022-05-31 | 车载监控板pcie总线转usb总线的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115129648A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116028409A (zh) * | 2023-03-30 | 2023-04-28 | 苏州浪潮智能科技有限公司 | 转接卡、主板、计算机、数据传输方法、设备和介质 |
-
2022
- 2022-05-31 CN CN202210613574.0A patent/CN115129648A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116028409A (zh) * | 2023-03-30 | 2023-04-28 | 苏州浪潮智能科技有限公司 | 转接卡、主板、计算机、数据传输方法、设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8281303B2 (en) | Dynamic ejection of virtual devices on ejection request from virtual device resource object within the virtual firmware to virtual resource driver executing in virtual machine | |
US6496893B1 (en) | Apparatus and method for swapping devices while a computer is running | |
US9411654B2 (en) | Managing configuration and operation of an adapter as a virtual peripheral component interconnect root to expansion read-only memory emulation | |
RU2532708C2 (ru) | Способ и устройство для осуществления операции ввода/вывода в среде виртуализации | |
US8028184B2 (en) | Device allocation changing method | |
RU2639693C1 (ru) | Способ обработки ресурса, операционная система и устройство | |
US7457900B2 (en) | Method for discovering and partitioning PCI devices | |
US5797031A (en) | Method and apparatus for peripheral device control by clients in plural memory addressing modes | |
US7926054B2 (en) | System, method, and computer-readable medium for virtual machine instantiation from an external peripheral device | |
US9311127B2 (en) | Managing configuration and system operations of a shared virtualized input/output adapter as virtual peripheral component interconnect root to single function hierarchies | |
US20080126648A1 (en) | Message Signaled Interrupt Management for a Computer Input/Output Fabric Incorporating Platform Independent Interrupt Manager | |
CN109324991B (zh) | 一种pcie设备的热插拔装置、方法、介质及系统 | |
US20080126617A1 (en) | Message Signaled Interrupt Management for a Computer Input/Output Fabric Incorporating Dynamic Binding | |
KR100764921B1 (ko) | 장치 이뉴머레이션을 위한 가상 rom | |
CN113111025B (zh) | Pci设备映射方法、装置、设备及存储介质 | |
US9665522B2 (en) | Protocol neutral fabric | |
US20180196772A1 (en) | Uma-Aware Root Bus Selection | |
CN112306581B (zh) | 一种基板管理控制器管理bios配置的方法及介质 | |
CN115129648A (zh) | 车载监控板pcie总线转usb总线的方法及装置 | |
CN101779196A (zh) | Pci设备的i/o空间请求抑制方法 | |
US20150326684A1 (en) | System and method of accessing and controlling a co-processor and/or input/output device via remote direct memory access | |
KR20230053496A (ko) | 인터커넥트를 통해 장치 운영 체제에 액세스하기 위한 시스템, 방법 및 장치 | |
WO2001065365A1 (en) | Apparatus and method for swapping devices while a computer is running | |
US5909593A (en) | System for assigning snoop levels to snooper modules and selectively invoking snooper modules having specified relation to a selected snoop level for hardware detection | |
CN112948315A (zh) | 存储区域共享方法、存储介质及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |