SylixOS SylixOS CAN总线驱动之三


在SylixOS中CAN报文的传输框图如图 11所示。图11 SylixOS CAN报文传输框图(注:此文档承接之前的文档编写,之前文档中详细介绍过的报文,传输结构体在此文档中不做详细介绍。)在SylixOS中CAN报文的传输不是底层和上层应用的直接传输。而是在底层和应用层中间加了一层系统缓存队列。所有收发的CAN报文都要先经过一个系统缓存机制传输到真正调用到它的地方。SylixOS中CAN报文是以消息队列的方式进行缓存的,程序清单 21是向消息队列中写入一帧CAN报文的具体实现。程序清单21从缓存中读取一帧CAN报文

上层应用向底层传输一帧CAN报文的时候也是通过系统缓存,向系统缓存中写入一帧CAN报文的具体实现如程序清单 22所示。程序清单22向缓存中写入一帧CAN报文

第一步:如程序清单 31所示,在应用层创建一个线程,打免费云主机域名开一个CAN设备。程序清单31打开CAN设备

第二步:如程序清单 32所示,填充一个CAN报文结构体。程序清单32填充CAN报文

第三步:如程序清单 33所示,调用write函数向系统TX缓存队列中写入一帧CAN报文,再调用ioctl函数实现底层传输。程序清单33填充发送缓存
第四步:如程序清单 34所示,最终调用到底层传输函数。从系统队列中读取一帧CAN报文后对设备寄存器进行相关操作将消息传输到总线上。程序清单34底层starup函数

注:如果想要发送多帧CAN报文,在写入操作结束后需要加等待,以确保所有的CAN报文都成功写入系统缓存队列中。
第一步:底层如果接收到CAN报文以后,会触发一次中断,在中断服务函数中所做的事就是判断状态标志位置,如果是接收中断,就把接收到的CAN报文通过回调函数写入,系统缓存队列中,具体实现如程序清单 35所示。程序清单35 CAN底层中断服务函数

第二步:在应用程序中创建一个线程,在线程中所做的事情就是不间断得读取系统缓存的消息队列。如果缓存不为空,就读取里面的CAN报文,并打印,具体操作如程序清单 36所示。程序清单36 CAN应用层读取缓存

CAN报文传输流程,到此结束。
内部交流文档,若发现相关错误或者建议,请及时联系文档创建者进行修订和更新。

相关推荐: RH413–用AIDE监控文件的改变

1.安装aide软件包2.备份aide的配置文件3.免费云主机域名编辑aide配置文件4.对aide进行初始化5.更改aide数据库的名称6.检查系统文件是否发生变化7.修改下/etc/issue文件进行测试8.更改该文件权限,看aide是否可以检查出来相关推…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 01/25 11:34
下一篇 01/25 11:34