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

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

Info

Publication number
CN111858445A
CN111858445A CN202010657375.0A CN202010657375A CN111858445A CN 111858445 A CN111858445 A CN 111858445A CN 202010657375 A CN202010657375 A CN 202010657375A CN 111858445 A CN111858445 A CN 111858445A
Authority
CN
China
Prior art keywords
port ram
bus
dual
channel
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
CN202010657375.0A
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 CN202010657375.0A priority Critical patent/CN111858445A/zh
Publication of CN111858445A publication Critical patent/CN111858445A/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

Abstract

本发明属于vxworks系统下CAN总线驱动技术领域,具体涉及一种vxworks系统下基于双口RAM通信的CAN总线驱动设计方法。其包括:首先,划分双口RAM地址空间,将双口RAM分配出与底层通信模块通信的交互区间和制定通信规则。然后,提供给上层应用软件调用的接口,其中接口包括初始化驱动函数、板卡工作模式选择、初始化CAN端口、发送数据、接收数据、判断发送完成函数。本发明为上层软件CAN通讯开发提供了统一接口,上层应用软件与驱动层不会产生耦合问题,降低了上层开发人员CAN通信开发的难度。同时,使用双口RAM内存空间作为驱动层和底层通信软件的数据交互区,更方便上层应用软件进行故障定位。

Description

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

Claims (10)

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

Priority Applications (1)

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

Applications Claiming Priority (1)

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

Publications (1)

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

Family

ID=73153436

Family Applications (1)

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

Country Status (1)

Country Link
CN (1) CN111858445A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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 (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113656250A (zh) * 2021-08-18 2021-11-16 天津津航计算技术研究所 一种下位机板卡状态监控技术的实现方法
CN113656250B (zh) * 2021-08-18 2024-04-05 天津津航计算技术研究所 一种下位机板卡状态监控技术的实现方法

Similar Documents

Publication Publication Date Title
CN107209644B (zh) 一种数据处理方法以及NVMe存储器
KR101466592B1 (ko) 스케일러블 스토리지 디바이스들
CN103117929B (zh) 一种基于PCIe数据交换的通信方法及系统
CN110914796B (zh) 处理i/o请求的方法及设备
KR20140082829A (ko) 다수의 메모리 포트들에 걸친 선택적 복제를 사용하여 메모리 접근 지연들을 감소시키는 시스템 및 방법
KR20170043993A (ko) 인터페이스 제어 메커니즘을 갖는 전자 시스템 및 그것의 동작 방법
CN111752480A (zh) 一种数据写方法、数据读方法及相关设备、系统
CN111858444A (zh) Windows系统下基于双口RAM通信的CAN总线驱动设计方法
CN113010470B (zh) 边缘节点远程控制系统、方法、设备及存储介质
US20230376442A1 (en) Enabling a Multi-Chip Daisy Chain Topology using Peripheral Component Interconnect Express (PCIe)
CN113032293A (zh) 缓存管理器及控制部件
US11966585B2 (en) Storage device and storage system
CN110618883B (zh) 一种用于共享内存链表的方法、装置、设备及存储介质
CN111858445A (zh) vxworks系统下基于双口RAM通信的CAN总线驱动设计方法
CN114416630A (zh) 基于pcie的通信方法、装置、计算机设备和可读存储介质
CN115269221A (zh) 基于共享内存机制的fpga硬件抽象层设计方法、系统
KR20200135715A (ko) 데이터 처리 방법, 장치, 기기 및 매체
US8364879B2 (en) Hierarchical to physical memory mapped input/output translation
CN109857553A (zh) 内存管理方法及装置
CN111858446A (zh) Windows系统下基于双口RAM通信的CAN总线通信模块设计方法
CN115114042A (zh) 存储数据访问方法、装置、电子设备和存储介质
CN115883022B (zh) Dma传输控制方法、装置、电子设备及可读存储介质
CN101788888A (zh) 一种实现目标端驱动的方法及该目标端驱动
CN108829624B (zh) 一种cps节点属性数据与功能方法代码的存储组织方法
CN108845965B (zh) 一种基于um-bus总线的cps从节点动态识别方法

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