CN111858444A - Windows系统下基于双口RAM通信的CAN总线驱动设计方法 - Google Patents

Windows系统下基于双口RAM通信的CAN总线驱动设计方法 Download PDF

Info

Publication number
CN111858444A
CN111858444A CN202010656680.8A CN202010656680A CN111858444A CN 111858444 A CN111858444 A CN 111858444A CN 202010656680 A CN202010656680 A CN 202010656680A CN 111858444 A CN111858444 A CN 111858444A
Authority
CN
China
Prior art keywords
port ram
board card
dual
bus
receiving
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
Application number
CN202010656680.8A
Other languages
English (en)
Inventor
高娟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tianjin Jinhang Computing Technology Research Institute
Original Assignee
Tianjin Jinhang Computing Technology Research Institute
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tianjin Jinhang Computing Technology Research Institute filed Critical Tianjin Jinhang Computing Technology Research Institute
Priority to CN202010656680.8A priority Critical patent/CN111858444A/zh
Publication of CN111858444A publication Critical patent/CN111858444A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/40Bus networks
    • H04L2012/40208Bus networks characterized by the use of a particular bus standard
    • H04L2012/40215Controller Area Network CAN

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Systems (AREA)

Abstract

本发明属于Windows系统技术领域,具体涉及一种Windows系统下基于双口RAM通信的CAN总线驱动设计方法。所述方法包括:首先,查找双口RAM板卡,通过板卡的槽位号信息并结合PLX动态库进行板卡定位和查找;其次,获取双口RAM的地址映射空间,对目标板卡进行地址映射空间的计算,同时获取信号灯基地址;然后,划分双口RAM地址空间,将双口RAM分配出与底层通信模块通信的交互区间和制定通信规则。最后,提供给上层应用软件调用的接口。该方案可以为上层应用软件提供操作CAN板卡的接口函数,使用CAN板卡进行收发数据,极大的缩短了应用软件与底层板卡的交互时间。

Description

Windows系统下基于双口RAM通信的CAN总线驱动设计方法
技术领域
本发明属于Windows系统技术领域,具体涉及一种Windows系统下基于双口RAM通信的CAN总线驱动设计方法。
背景技术
CAN总线作为实时控制的串行通信网络,具有网络各节点之间数据通信实时性强的特点,容易形成冗余结构,提高系统的可靠性和系统的灵活性。
Windows系统下没有CAN总线组件,不提供CAN总线通信的驱动接口。对于DSP芯片类的板卡需要用户开发芯片类CAN模块与系统主机应用程序通信的接口程序,从而实现Windows系统下板卡类CAN模块的驱动过程。目前成熟的CAN总线驱动技术有通过操作系统调用的方式,为应用层提供一套标准的文件操作接口函数;还有根据SPI接口设计扩展CAN模块,进行虚拟内存分配和虚拟地址映射从而实现CAN驱动。但是上述方法没有提供数据缓冲机制,且直接操作CAN芯片模块无法进行故障定位。
为了解决Windows系统下的CAN总线模块驱动问题,在主机应用程序与DSP板卡底层程序之间提供交互接口,提出一种基于双口RAM通信的CAN总线驱动设计方法。
发明内容
(一)要解决的技术问题
本发明要解决的技术问题是:如何提供一种Windows系统下的CAN总线驱动设计方法。
(二)技术方案
为解决上述技术问题,本发明提供一种Windows系统下基于双口RAM通信的CAN总线驱动设计方法,所述方法包括:
步骤1:查找双口RAM板卡;
步骤2:获取双口RAM的地址映射空间;
步骤3:划分双口RAM地址空间;
步骤4:提供CAN总线驱动接口函数;
通过以上步骤,可以实现Windows系统下的CAN总线驱动功能。
其中,所述步骤1中,
首先,根据PCI板卡的槽位号,使用PLX动态库函数定位双口RAM板卡;
然后,根据板卡的DeviceID,VendorID,slotID以及plx芯片类型进行匹配并获取目标板卡的总线号、槽位号、功能号。
其中,所述步骤1中,
首先,根据双口RAM板卡在PCI机箱的位置信息,使用PLX动态库遍历所有PCI设备查找目标板卡;
然后,将目标板卡的VendorId、DeviceId、PlxChip、slot信息与第一步找到的PCI设备进行对比。如果匹配成功,则保存当前设备的bus、slot、function的信息。
其中,所述步骤2中,
根据索引号使用库函数进行双口RAM板卡的内存地址空间映射,同时根据映射规则计算信号灯基地址。
其中,所述步骤2中,
①使用库函数PlxPci_DeviceOpen打开目标板卡设备,并根据索引号使用库函数PlxPci_PciBarMap进行地址空间映射;
②获取目标板卡的内存地址空间和信号灯地址空间。
其中,所述步骤3中,
首先,采取偶地址存数规则,将内存地址空间划分为6个区间,分别为板卡基本信息区、CAN通道的发送和接收缓存起始地址存放区、CAN通道的命令更新标志区、CAN通道的命令区、CAN通道的反馈状态区、CAN通道的错误标志区;
然后,根据驱动中实际使用的CAN通道数,选用信号灯基地址个数;对共享的内存空间采用信号灯保护机制,防止对数据读写失败。
其中,所述步骤3中,
1)使用偶地址存储数据原则,内存地址划分的最小单位为双字节;
2)将内存地址空间划分为6个区间:
①板卡基本信息区:用于存储板卡名称,板号,内存大小,双口RAM大小长度,软件版本号、本板自检结果信息、板卡运行状态、自检结果、工作模式;
②CAN通道的发送和接收缓存起始地址存放区:用于存储CAN各个通道的发送缓存区的起始地址和发送缓存区的起始地址;
③CAN通道的命令更新标志区:用于存储上层应用软件给CAN各个通道的下达的命令是否已更新的标志;
④CAN通道的命令区:用于存储上层应用软件给CAN各个通道的下达的命令;
⑤CAN通道的反馈状态区:用于存储CAN各个通道的CAN端口开关状态,接收指针在接收缓冲区的位置,接收指针位置取反后的值,数据发送结束标志;
⑥CAN通道的错误标志区:用于存储CAN各个通道运行时出现的故障类型。
其中,所述步骤4中,
①提供板卡工作模式选择的接口:CAN总线板卡可工作在三个模式,分别为正常、自检、复位;
②提供接口可设置CAN总线波特率、接收缓冲区大小和起始地址,发送缓冲区大小和起始地址;
③提供接口可设置发送数据,需要指定发送的长度和发送的数据数组;
④提供判断上次发送是否完成的接口;
⑤提供接口用于接收数据,采用循环缓冲区方法进行数据接收,需要给出接收长度指针和接收数组指针。
其中,所述步骤4中,
①提供板卡工作模式选择的接口:CAN总线板卡可工作在三个模式,分别为正常、自检、复位;正常模式下,CAN总线板卡可以正常进行数据发送和接收,可以接收上层应用软件的命令;自检模式下,CAN总线板卡进行端口的自检操作;复位模式下,CAN总线板卡对CAN端口进行软复位;
②提供接口可设置CAN总线波特率、接收缓冲区大小和起始地址,发送缓冲区大小和起始地址;
缓冲区分配规则:
设需要分配N个缓冲区,每个缓冲区大小为M,0x600为发送和接收缓冲区起始分配地址。根据使用偶地址存储数据原则,需要将地址空间大小扩容两倍,则第i(i=0,1......N-1)个缓冲区的起始地址计算公式为:startAddr=0x600+M*2*i;
③提供接口可设置发送数据,需要指定发送的长度和发送的数据数组;
首先判断该通道上一次数据发送是否完成,如果未完成则需要返回状态值提示用户;
其次,判断此次发送的数据长度是否大于发送缓冲区最大长度,如果是则返回故障值,否则将发送数组里的数据写入到双口RAM的发送缓冲区地址;
然后申请信号灯,对发送完成标志清零、设置命令更新标志为1。操作完后释放信号灯;
④提供判断上次发送是否完成的接口;
首先申请信号灯,读取发送完成标志所在的双口RAM地址的值,然后释放信号灯并返回发送完成标志给上层应用软件;
⑤提供接口用于接收数据,采用循环缓冲区方法进行数据接收,需要给出接收长度指针和接收数组指针;
首先,申请信号灯,获取接收指针和接收指针取反位置,释放信号灯;
然后,循环判断当前接收指针是否与已接收的指针重合,如果没有则读取接收缓冲区的数据并移动已接收的指针,同时计数已接收的数据个数,否则退出本次接收过程;
其次,判断已接收的指针是否超过接收缓冲区的范围,如果超过则将已接收的指针指向接收缓冲区起始地址;
最后,判断本次已接收的数据个数是否超过最大值,如果超过则退出循环。
其中,所述方法用于在Windows平台下,解决CAN总线驱动问题。
(三)有益效果
与现有技术相比较,本发明在系统为Windows的应用场景下,针对CAN总线模块特点,并结合PLX库定位双口RAM硬件资源,设计实现了一种Windows系统下基于双口RAM通信的CAN总线串口驱动。本发明为上层软件CAN通讯开发提供了统一接口,上层应用软件与驱动层不会产生耦合问题,降低了上层开发人员CAN通信开发的难度。同时,使用双口RAM内存空间作为驱动层和底层通信软件的数据交互区,更方便上层应用软件进行故障定位。
附图说明
图1为基于双口RAM通信的CAN总线驱动实现流程图。
具体实施方式
为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
为解决现有技术问题,本发明提供一种Windows系统下基于双口RAM通信的CAN总线驱动设计方法,如图1所示,所述方法包括:
步骤1:查找双口RAM板卡;
步骤2:获取双口RAM的地址映射空间;
步骤3:划分双口RAM地址空间;
步骤4:提供CAN总线驱动接口函数;
通过以上步骤,可以实现Windows系统下的CAN总线驱动功能。
其中,所述步骤1中,
首先,根据PCI板卡的槽位号,使用PLX动态库函数定位双口RAM板卡;
然后,根据板卡的DeviceID,VendorID,slotID以及plx芯片类型进行匹配并获取目标板卡的总线号、槽位号、功能号。
其中,所述步骤1中,
首先,根据双口RAM板卡在PCI机箱的位置信息,使用PLX动态库遍历所有PCI设备查找目标板卡;
然后,将目标板卡的VendorId、DeviceId、PlxChip、slot信息与第一步找到的PCI设备进行对比。如果匹配成功,则保存当前设备的bus、slot、function的信息。
其中,所述步骤2中,
根据索引号使用库函数进行双口RAM板卡的内存地址空间映射,同时根据映射规则计算信号灯基地址。
其中,所述步骤2中,
①使用库函数PlxPci_DeviceOpen打开目标板卡设备,并根据索引号使用库函数PlxPci_PciBarMap进行地址空间映射;
②获取目标板卡的内存地址空间和信号灯地址空间。
其中,所述步骤3中,
首先,采取偶地址存数规则,将内存地址空间划分为6个区间,分别为板卡基本信息区、CAN通道的发送和接收缓存起始地址存放区、CAN通道的命令更新标志区、CAN通道的命令区、CAN通道的反馈状态区、CAN通道的错误标志区;
然后,根据驱动中实际使用的CAN通道数,选用信号灯基地址个数;对共享的内存空间采用信号灯保护机制,防止对数据读写失败。
其中,所述步骤3中,
1)使用偶地址存储数据原则,内存地址划分的最小单位为双字节;
2)将内存地址空间划分为6个区间:
①板卡基本信息区:用于存储板卡名称,板号,内存大小,双口RAM大小长度,软件版本号、本板自检结果信息、板卡运行状态、自检结果、工作模式;
②CAN通道的发送和接收缓存起始地址存放区:用于存储CAN各个通道的发送缓存区的起始地址和发送缓存区的起始地址;
③CAN通道的命令更新标志区:用于存储上层应用软件给CAN各个通道的下达的命令是否已更新的标志;
④CAN通道的命令区:用于存储上层应用软件给CAN各个通道的下达的命令;
⑤CAN通道的反馈状态区:用于存储CAN各个通道的CAN端口开关状态,接收指针在接收缓冲区的位置,接收指针位置取反后的值,数据发送结束标志;
⑥CAN通道的错误标志区:用于存储CAN各个通道运行时出现的故障类型。
其中,所述步骤4中,
①提供板卡工作模式选择的接口:CAN总线板卡可工作在三个模式,分别为正常、自检、复位;
②提供接口可设置CAN总线波特率、接收缓冲区大小和起始地址(偏移基地址的位移),发送缓冲区大小和起始地址;
③提供接口可设置发送数据,需要指定发送的长度和发送的数据数组;
④提供判断上次发送是否完成的接口;
⑤提供接口用于接收数据,采用循环缓冲区方法进行数据接收,需要给出接收长度指针和接收数组指针。
其中,所述步骤4中,
①提供板卡工作模式选择的接口:CAN总线板卡可工作在三个模式,分别为正常、自检、复位;正常模式下,CAN总线板卡可以正常进行数据发送和接收,可以接收上层应用软件的命令;自检模式下,CAN总线板卡进行端口的自检操作;复位模式下,CAN总线板卡对CAN端口进行软复位;
②提供接口可设置CAN总线波特率、接收缓冲区大小和起始地址(偏移基地址的位移),发送缓冲区大小和起始地址;
缓冲区分配规则:
设需要分配N个缓冲区,每个缓冲区大小为M,0x600为发送和接收缓冲区起始分配地址。根据使用偶地址存储数据原则,需要将地址空间大小扩容两倍,则第i(i=0,1......N-1)个缓冲区的起始地址计算公式为:startAddr=0x600+M*2*i;
③提供接口可设置发送数据,需要指定发送的长度和发送的数据数组;
首先判断该通道上一次数据发送是否完成,如果未完成则需要返回状态值提示用户;
其次,判断此次发送的数据长度是否大于发送缓冲区最大长度,如果是则返回故障值,否则将发送数组里的数据写入到双口RAM的发送缓冲区地址;
然后申请信号灯,对发送完成标志清零、设置命令更新标志为1。操作完后释放信号灯;
④提供判断上次发送是否完成的接口;
首先申请信号灯,读取发送完成标志所在的双口RAM地址的值,然后释放信号灯并返回发送完成标志给上层应用软件;
⑤提供接口用于接收数据,采用循环缓冲区方法进行数据接收,需要给出接收长度指针和接收数组指针;
首先,申请信号灯,获取接收指针和接收指针取反位置,释放信号灯;
然后,循环判断当前接收指针是否与已接收的指针重合,如果没有则读取接收缓冲区的数据并移动已接收的指针,同时计数已接收的数据个数,否则退出本次接收过程;
其次,判断已接收的指针是否超过接收缓冲区的范围,如果超过则将已接收的指针指向接收缓冲区起始地址;
最后,判断本次已接收的数据个数是否超过最大值,如果超过则退出循环。
其中,所述方法用于在Windows平台下,解决CAN总线驱动问题。
实施例1
本实施例提供一种Windows系统下基于双口RAM通信的CAN总线驱动设计方法,包括:
(1)查找双口RAM板卡,)使用PLX动态库对PCI设备进行遍历查询定位目标板卡;
(2)获取双口RAM的地址映射空间,获取双口RAM的地址空间基地址和信号灯基地址;
(3)划分双口RAM地址空间,将双口RAM分配与CAN通信模块交互的数据区域和命令区域;
(4)提供给应用程序接口,应用程序可以访问双口RAM并与底层CAN通信模块进行通信。
其中:所述步骤(1)、(2)实现了双口RAM目标板卡的资源信息。
其中,所述步骤(3)制定了与CAN通信模块的基于双口RAM通信协议和规则,步骤(4)提供了应用程序访问的接口函数,实现了CAN总线驱动。
实施例2
如图1所示,为了解决Windows系统下CAN总线驱动问题,本实施例采用基于双口RAM通信的实现方法。下面对本实施例的内容作进一步描述。
1、查找双口RAM板卡
首先,根据双口RAM板卡在PCI机箱的位置信息,使用PLX动态库遍历所有PCI设备查找目标板卡;
然后,将目标板卡的VendorId、DeviceId、PlxChip、slot信息与第一步找到的PCI设备进行对比。如果匹配成功,则保存当前设备的bus、slot、function的信息;
2、获取双口RAM的基地址映射空间
①使用库函数PlxPci_DeviceOpen打开目标板卡设备,并根据索引号使用库函数PlxPci_PciBarMap进行地址空间映射;
②获取目标板卡的内存地址空间和信号灯地址空间;
3、划分双口RAM地址空间
1)使用偶地址存储数据原则,内存地址划分的最小单位为双字节。
2)将内存地址空间划分为6个区间:
①板卡基本信息区:用于存储板卡名称,板号,内存大小,双口RAM大小长度,软件版本号、本板自检结果信息、板卡运行状态、自检结果、工作模式;
②CAN通道的发送和接收缓存起始地址存放区:用于存储CAN各个通道的发送缓存区的起始地址和发送缓存区的起始地址;
③CAN通道的命令更新标志区:用于存储上层应用软件给CAN各个通道的下达的命令是否已更新的标志;
④CAN通道的命令区:用于存储上层应用软件给CAN各个通道的下达的命令;
⑤CAN通道的反馈状态区:用于存储CAN各个通道的CAN端口开关状态,接收指针在接收缓冲区的位置,接收指针位置取反后的值,数据发送结束标志;
⑥CAN通道的错误标志区:用于存储CAN各个通道运行时出现的故障类型;
4、提供CAN总线驱动接口函数
①提供板卡工作模式选择的接口:CAN总线板卡可工作在三个模式,分别为正常、自检、复位。正常模式下,CAN总线板卡可以正常进行数据发送和接收,可以接收上层应用软件的命令;自检模式下,CAN总线板卡进行端口的自检操作;复位模式下,CAN总线板卡对CAN端口进行软复位。
②提供接口可设置CAN总线波特率、接收缓冲区大小和起始地址(偏移基地址的位移),发送缓冲区大小和起始地址。
缓冲区分配规则:
设需要分配N个缓冲区,每个缓冲区大小为M,0x600为发送和接收缓冲区起始分配地址。根据使用偶地址存储数据原则,需要将地址空间大小扩容两倍,则第i(i=0,1......N-1)个缓冲区的起始地址计算公式为:startAddr=0x600+M*2*i;
③提供接口可设置发送数据,需要指定发送的长度和发送的数据数组;
首先判断该通道上一次数据发送是否完成,如果未完成则需要返回状态值提示用户;
其次,判断此次发送的数据长度是否大于发送缓冲区最大长度,如果是则返回故障值,否则将发送数组里的数据写入到双口RAM的发送缓冲区地址;
然后申请信号灯,对发送完成标志清零、设置命令更新标志为1。操作完后释放信号灯。
④提供判断上次发送是否完成的接口;
首先申请信号灯,读取发送完成标志所在的双口RAM地址的值,然后释放信号灯并返回发送完成标志给上层应用软件。
⑤提供接口用于接收数据,采用循环缓冲区方法进行数据接收,需要给出接收长度指针和接收数组指针;
首先,申请信号灯,获取接收指针和接收指针取反位置,释放信号灯;
然后,循环判断当前接收指针是否与已接收的指针重合,如果没有则读取接收缓冲区的数据并移动已接收的指针,同时计数已接收的数据个数,否则退出本次接收过程;
其次,判断已接收的指针是否超过接收缓冲区的范围,如果超过则将已接收的指针指向接收缓冲区起始地址;
最后,判断本次已接收的数据个数是否超过最大值,如果超过则退出循环;
综上,本发明属于Windows系统技术领域,具体涉及一种Windows系统下基于双口RAM通信的CAN总线驱动设计方法。所述方法包括:首先,查找双口RAM板卡,通过板卡的槽位号信息并结合PLX动态库进行板卡定位和查找;其次,获取双口RAM的地址映射空间,对目标板卡进行地址映射空间的计算,同时获取信号灯基地址;然后,划分双口RAM地址空间,将双口RAM分配出与底层通信模块通信的交互区间和制定通信规则。最后,提供给上层应用软件调用的接口。
本发明可以实现Windows系统下CAN总线驱动,该方法已经经过了算法验证,并进行了实验检验。结果标明,该方案可以为上层应用软件提供操作CAN板卡的接口函数,使用CAN板卡进行收发数据,采用双口RAM通信机制,极大的缩短了应用软件与底层板卡的交互时间。同时,双口RAM作为数据交互的中间介质,为上层应用和底层板卡程序提供了故障定位的数据依据,更方便程序调试。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

Claims (10)

1.一种Windows系统下基于双口RAM通信的CAN总线驱动设计方法,其特征在于,所述方法包括:
步骤1:查找双口RAM板卡;
步骤2:获取双口RAM的地址映射空间;
步骤3:划分双口RAM地址空间;
步骤4:提供CAN总线驱动接口函数;
通过以上步骤,可以实现Windows系统下的CAN总线驱动功能。
2.如权利要求1所述的Windows系统下基于双口RAM通信的CAN总线驱动设计方法,其特征在于,所述步骤1中,
首先,根据PCI板卡的槽位号,使用PLX动态库函数定位双口RAM板卡;
然后,根据板卡的DeviceID,VendorID,slotID以及plx芯片类型进行匹配并获取目标板卡的总线号、槽位号、功能号。
3.如权利要求1所述的Windows系统下基于双口RAM通信的CAN总线驱动设计方法,其特征在于,所述步骤1中,
首先,根据双口RAM板卡在PCI机箱的位置信息,使用PLX动态库遍历所有PCI设备查找目标板卡;
然后,将目标板卡的VendorId、DeviceId、PlxChip、slot信息与第一步找到的PCI设备进行对比。如果匹配成功,则保存当前设备的bus、slot、function的信息。
4.如权利要求1所述的Windows系统下基于双口RAM通信的CAN总线驱动设计方法,其特征在于,所述步骤2中,
根据索引号使用库函数进行双口RAM板卡的内存地址空间映射,同时根据映射规则计算信号灯基地址。
5.如权利要求1所述的Windows系统下基于双口RAM通信的CAN总线驱动设计方法,其特征在于,所述步骤2中,
①使用库函数PlxPci_DeviceOpen打开目标板卡设备,并根据索引号使用库函数PlxPci_PciBarMap进行地址空间映射;
②获取目标板卡的内存地址空间和信号灯地址空间。
6.如权利要求1所述的Windows系统下基于双口RAM通信的CAN总线驱动设计方法,其特征在于,所述步骤3中,
首先,采取偶地址存数规则,将内存地址空间划分为6个区间,分别为板卡基本信息区、CAN通道的发送和接收缓存起始地址存放区、CAN通道的命令更新标志区、CAN通道的命令区、CAN通道的反馈状态区、CAN通道的错误标志区;
然后,根据驱动中实际使用的CAN通道数,选用信号灯基地址个数;对共享的内存空间采用信号灯保护机制,防止对数据读写失败。
7.如权利要求1所述的Windows系统下基于双口RAM通信的CAN总线驱动设计方法,其特征在于,所述步骤3中,
1)使用偶地址存储数据原则,内存地址划分的最小单位为双字节;
2)将内存地址空间划分为6个区间:
①板卡基本信息区:用于存储板卡名称,板号,内存大小,双口RAM大小长度,软件版本号、本板自检结果信息、板卡运行状态、自检结果、工作模式;
②CAN通道的发送和接收缓存起始地址存放区:用于存储CAN各个通道的发送缓存区的起始地址和发送缓存区的起始地址;
③CAN通道的命令更新标志区:用于存储上层应用软件给CAN各个通道的下达的命令是否已更新的标志;
④CAN通道的命令区:用于存储上层应用软件给CAN各个通道的下达的命令;
⑤CAN通道的反馈状态区:用于存储CAN各个通道的CAN端口开关状态,接收指针在接收缓冲区的位置,接收指针位置取反后的值,数据发送结束标志;
⑥CAN通道的错误标志区:用于存储CAN各个通道运行时出现的故障类型。
8.如权利要求1所述的Windows系统下基于双口RAM通信的CAN总线驱动设计方法,其特征在于,所述步骤4中,
①提供板卡工作模式选择的接口:CAN总线板卡可工作在三个模式,分别为正常、自检、复位;
②提供接口可设置CAN总线波特率、接收缓冲区大小和起始地址,发送缓冲区大小和起始地址;
③提供接口可设置发送数据,需要指定发送的长度和发送的数据数组;
④提供判断上次发送是否完成的接口;
⑤提供接口用于接收数据,采用循环缓冲区方法进行数据接收,需要给出接收长度指针和接收数组指针。
9.如权利要求1所述的Windows系统下基于双口RAM通信的CAN总线驱动设计方法,其特征在于,所述步骤4中,
①提供板卡工作模式选择的接口:CAN总线板卡可工作在三个模式,分别为正常、自检、复位;正常模式下,CAN总线板卡可以正常进行数据发送和接收,可以接收上层应用软件的命令;自检模式下,CAN总线板卡进行端口的自检操作;复位模式下,CAN总线板卡对CAN端口进行软复位;
②提供接口可设置CAN总线波特率、接收缓冲区大小和起始地址,发送缓冲区大小和起始地址;
缓冲区分配规则:
设需要分配N个缓冲区,每个缓冲区大小为M,0x600为发送和接收缓冲区起始分配地址。根据使用偶地址存储数据原则,需要将地址空间大小扩容两倍,则第i(i=0,1......N-1)个缓冲区的起始地址计算公式为:startAddr=0x600+M*2*i;
③提供接口可设置发送数据,需要指定发送的长度和发送的数据数组;
首先判断该通道上一次数据发送是否完成,如果未完成则需要返回状态值提示用户;
其次,判断此次发送的数据长度是否大于发送缓冲区最大长度,如果是则返回故障值,否则将发送数组里的数据写入到双口RAM的发送缓冲区地址;
然后申请信号灯,对发送完成标志清零、设置命令更新标志为1。操作完后释放信号灯;
④提供判断上次发送是否完成的接口;
首先申请信号灯,读取发送完成标志所在的双口RAM地址的值,然后释放信号灯并返回发送完成标志给上层应用软件;
⑤提供接口用于接收数据,采用循环缓冲区方法进行数据接收,需要给出接收长度指针和接收数组指针;
首先,申请信号灯,获取接收指针和接收指针取反位置,释放信号灯;
然后,循环判断当前接收指针是否与已接收的指针重合,如果没有则读取接收缓冲区的数据并移动已接收的指针,同时计数已接收的数据个数,否则退出本次接收过程;
其次,判断已接收的指针是否超过接收缓冲区的范围,如果超过则将已接收的指针指向接收缓冲区起始地址;
最后,判断本次已接收的数据个数是否超过最大值,如果超过则退出循环。
10.如权利要求1所述的Windows系统下基于双口RAM通信的CAN总线驱动设计方法,其特征在于,所述方法用于在Windows平台下,解决CAN总线驱动问题。
CN202010656680.8A 2020-07-09 2020-07-09 Windows系统下基于双口RAM通信的CAN总线驱动设计方法 Pending CN111858444A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010656680.8A CN111858444A (zh) 2020-07-09 2020-07-09 Windows系统下基于双口RAM通信的CAN总线驱动设计方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010656680.8A CN111858444A (zh) 2020-07-09 2020-07-09 Windows系统下基于双口RAM通信的CAN总线驱动设计方法

Publications (1)

Publication Number Publication Date
CN111858444A true CN111858444A (zh) 2020-10-30

Family

ID=73153313

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010656680.8A Pending CN111858444A (zh) 2020-07-09 2020-07-09 Windows系统下基于双口RAM通信的CAN总线驱动设计方法

Country Status (1)

Country Link
CN (1) CN111858444A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112433966A (zh) * 2020-11-15 2021-03-02 中国航空工业集团公司洛阳电光设备研究所 一种基于Windows平台的多接口架构及实现方法
CN113656250A (zh) * 2021-08-18 2021-11-16 天津津航计算技术研究所 一种下位机板卡状态监控技术的实现方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102681969A (zh) * 2011-03-11 2012-09-19 山西国营大众机械厂军品第一研究所 基于can总线的长帧数据传输卡和长帧数据传输方法
CN103293995A (zh) * 2013-06-09 2013-09-11 南车株洲电力机车研究所有限公司 基于微控制器的现场总线通信模块
CN103309830A (zh) * 2013-07-08 2013-09-18 哈尔滨工业大学 VxWorks操作系统下CPCI总线CAN通信模块的驱动器及驱动方法
CN208384564U (zh) * 2018-07-10 2019-01-15 西安长远电子工程有限责任公司 一种基于pci总线的高速缓冲型can接口卡

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102681969A (zh) * 2011-03-11 2012-09-19 山西国营大众机械厂军品第一研究所 基于can总线的长帧数据传输卡和长帧数据传输方法
CN103293995A (zh) * 2013-06-09 2013-09-11 南车株洲电力机车研究所有限公司 基于微控制器的现场总线通信模块
CN103309830A (zh) * 2013-07-08 2013-09-18 哈尔滨工业大学 VxWorks操作系统下CPCI总线CAN通信模块的驱动器及驱动方法
CN208384564U (zh) * 2018-07-10 2019-01-15 西安长远电子工程有限责任公司 一种基于pci总线的高速缓冲型can接口卡

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
杨磊: "模块化机器人关节控制系统底层通讯平台的设计", 《中国优秀硕士学位论文全文数据库(电子期刊)信息科技辑 》, pages 140 - 164 *
艾春晖 等: "基于双口RAM的CPCI总线通讯机制研究", 《机械制造与自动化》, pages 110 - 112 *
高强 等: "CAN总线的PCI接口通信卡设计", 《电子技术应用》, pages 122 - 124 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112433966A (zh) * 2020-11-15 2021-03-02 中国航空工业集团公司洛阳电光设备研究所 一种基于Windows平台的多接口架构及实现方法
CN112433966B (zh) * 2020-11-15 2023-02-10 中国航空工业集团公司洛阳电光设备研究所 一种基于Windows平台的多接口架构及实现方法
CN113656250A (zh) * 2021-08-18 2021-11-16 天津津航计算技术研究所 一种下位机板卡状态监控技术的实现方法
CN113656250B (zh) * 2021-08-18 2024-04-05 天津津航计算技术研究所 一种下位机板卡状态监控技术的实现方法

Similar Documents

Publication Publication Date Title
US11467975B2 (en) Data processing method and NVMe storage device
CN1647054B (zh) 双模网络设备驱动设备、系统和方法
US6421769B1 (en) Efficient memory management for channel drivers in next generation I/O system
CN103117929B (zh) 一种基于PCIe数据交换的通信方法及系统
CN107229415B (zh) 一种数据写方法、数据读方法及相关设备、系统
CN109690512A (zh) 具有触发操作的gpu远程通信
CN111858444A (zh) Windows系统下基于双口RAM通信的CAN总线驱动设计方法
CN112948149A (zh) 一种远端内存共享方法、装置、电子设备及存储介质
CN113010470B (zh) 边缘节点远程控制系统、方法、设备及存储介质
US11966585B2 (en) Storage device and storage system
CN112052100B (zh) 基于共享内存的虚拟机通信方法及设备
CN104731635A (zh) 一种虚拟机访问控制方法,及虚拟机访问控制系统
CN116431530B (zh) 一种cxl内存模组、内存的处理方法及计算机系统
KR20200135715A (ko) 데이터 처리 방법, 장치, 기기 및 매체
AU2013245529A1 (en) Network Interface
CN115269221A (zh) 基于共享内存机制的fpga硬件抽象层设计方法、系统
CN111858445A (zh) vxworks系统下基于双口RAM通信的CAN总线驱动设计方法
CN111858446A (zh) Windows系统下基于双口RAM通信的CAN总线通信模块设计方法
CN115883022B (zh) Dma传输控制方法、装置、电子设备及可读存储介质
CN113660123B (zh) 虚拟交换机升级方法、装置、电子设备以及存储介质
CN107357853B (zh) 一种redis控制台的操作方法、装置及计算机系统
US20230049427A1 (en) Method for external devices accessing computer memory
CN113434089A (zh) 数据搬移方法、装置及pcie系统
KR20200143922A (ko) 메모리 카드 및 이를 이용한 데이터 처리 방법
US11880686B2 (en) Devices transferring cache lines, including metadata on external links

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