CN111858445A - vxworks系统下基于双口RAM通信的CAN总线驱动设计方法 - Google Patents
vxworks系统下基于双口RAM通信的CAN总线驱动设计方法 Download PDFInfo
- 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
Links
- 238000004891 communication Methods 0.000 title claims abstract description 38
- 238000000034 method Methods 0.000 title claims abstract description 38
- 238000013461 design Methods 0.000 title claims abstract description 15
- 230000006870 function Effects 0.000 claims abstract description 48
- 239000000872 buffer Substances 0.000 claims description 66
- 230000005540 biological transmission Effects 0.000 claims description 15
- 230000009977 dual effect Effects 0.000 claims description 14
- 238000013507 mapping Methods 0.000 claims description 9
- 230000008569 process Effects 0.000 claims description 6
- 230000007246 mechanism Effects 0.000 claims description 5
- 238000004364 calculation method Methods 0.000 claims description 4
- 230000003993 interaction Effects 0.000 abstract description 6
- 238000011161 development Methods 0.000 abstract description 4
- 230000008878 coupling Effects 0.000 abstract description 2
- 238000010168 coupling process Methods 0.000 abstract description 2
- 238000005859 coupling reaction Methods 0.000 abstract description 2
- 238000006073 displacement reaction Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 1
- 239000011093 chipboard Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
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/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L2012/40208—Bus networks characterized by the use of a particular bus standard
- H04L2012/40215—Controller Area Network CAN
Abstract
本发明属于vxworks系统下CAN总线驱动技术领域,具体涉及一种vxworks系统下基于双口RAM通信的CAN总线驱动设计方法。其包括:首先,划分双口RAM地址空间,将双口RAM分配出与底层通信模块通信的交互区间和制定通信规则。然后,提供给上层应用软件调用的接口,其中接口包括初始化驱动函数、板卡工作模式选择、初始化CAN端口、发送数据、接收数据、判断发送完成函数。本发明为上层软件CAN通讯开发提供了统一接口,上层应用软件与驱动层不会产生耦合问题,降低了上层开发人员CAN通信开发的难度。同时,使用双口RAM内存空间作为驱动层和底层通信软件的数据交互区,更方便上层应用软件进行故障定位。
Description
技术领域
本发明属于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中,
首先,申请信号灯,获取接收指针和接收指针取反位置,释放信号灯;
然后,循环判断当前接收指针是否与已接收的指针重合,如果没有则读取接收缓冲区的数据并移动已接收的指针,同时计数已接收的数据个数,否则退出本次接收过程;
其次,判断已接收的指针是否超过接收缓冲区的范围,如果超过则将已接收的指针指向接收缓冲区起始地址;
最后,判断本次已接收的数据个数是否超过最大值,如果超过则退出循环。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113656250A (zh) * | 2021-08-18 | 2021-11-16 | 天津津航计算技术研究所 | 一种下位机板卡状态监控技术的实现方法 |
Citations (4)
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接口卡 |
-
2020
- 2020-07-09 CN CN202010657375.0A patent/CN111858445A/zh active Pending
Patent Citations (4)
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)
Title |
---|
杨磊: "模块化机器人关节控制系统底层通讯平台的设计", 《中国优秀硕士学位论文全文数据库(电子期刊)信息科技辑 》, pages 140 - 164 * |
艾春晖 等: "基于双口 RAM 的CPCI 总线通讯机制研究", 《机械制造与自动化》, pages 110 - 112 * |
高强 等: "CAN 总线的PCI 接口通信卡设计", 《电子技术应用, pages 122 - 124 * |
Cited By (2)
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 |