奇妙之二进制
csdn博客专家,C/C++领域优质创作者,抖音搜奇妙之二进制,专注于Linux C/C++、嵌入式Linux开发,偶尔谈谈人生,目前致力于完成大约500篇的linux C/C++开发知识体系库,所有的文章都会一直保持更新(优化内容、排版),想学习的可以订阅我的专栏,也可以关注Linux 世界。
展开
-
全网唯一OpenCyphal/UAVCAN教程(1)OpenCyphal及相关生态介绍
开源轻量级,为太空宇宙飞船或者是机器人设计的通信框架。特性:对等网络,不需要bus master支持发布/订阅、请求/响应两种数据交换方式支持高精度的网络范围的时间同步可以使用不同的传输协议目前有三种语言的实现:Libuavcan.................................原创 2020-12-18 23:30:21 · 10338 阅读 · 6 评论 -
全网唯一OpenCyphal/UAVCAN教程(4)掌握结点以及结点ID(node_id)的概念
libuavcan库的大部分操作都是基于节点展开,这里的节点并非can节点,而是软件意义上的节点。后面我会用can节点,表示can总线上的节点,uavcan节点表示uavcan软件意义上的节点。can是广播型协议,但can提供了标识符(也就是ID)来实现can节点的点对点传输,这有点类似于tcp/udp层的的端口,只不过tcp/udp层实现了同一主机上不同应用间的消息转发,can通过id实现了同一总线上不同can节点间的消息转发。uavcan又利用了can帧的ID,只取了其中的7位作为uavcan节点原创 2021-05-04 11:38:03 · 4964 阅读 · 2 评论 -
全网唯一UAVCAN中文教程(4)从can 2.0升级到canfd的变化
文章目录1、什么是CAN FD?2、CAN FD如何工作?两个关键挑战解决方案:CAN FD框架NEED FOR SPEED:开启比特率切换3、混合经典CAN和CAN FD节点CAN FD与CAN的开销和数据效率CAN FD的最大比特率是多少?4、CAN FD应用1、什么是CAN FD?CAN FD协议由Bosch(与行业专家)预先开发,并于2012年发布。在标准化过程中已得到显着改进,如今已在ISO 11898-1:2015中进行了改进。原始的Bosch CAN FD版本(非ISO CAN FD)与转载 2022-03-05 11:55:44 · 3123 阅读 · 0 评论 -
全网唯一OpenCyphal/UAVCAN教程(9)linux下can配置和信息查询
syrius@tegra-ubuntu:~$ ifconfig can1can1: flags=193<UP,RUNNING,NOARP> mtu 16unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1024 (UNSPEC)RX packets 0 bytes 0 (0.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 0 b原创 2022-03-08 20:54:26 · 2764 阅读 · 0 评论 -
全网唯一OpenCyphal/UAVCAN教程(8)libcanard介绍
当Cyphal里,这个结构体代表一条完整的Cyphal消息,之后我们会根据metadata里提供的元信息,其实就是消息ID,调用对应的反序列化函数,将payload还原成具体的Cyphal消息。用于构造一个新的发送队列,原则上一个can物理接口需要分配一个发送队列,如果它们的MTU大小一致,是可以共用一条的。这个库不包含IO层,是平台无关的,意义是没有实现具体的数据收发,仅提供将发送出去的Cyphal消息转成can帧,以及将收到的can帧转成Cyphal消息。返回值是这条消息拆解成的can帧的数目。....原创 2022-08-30 23:24:30 · 1825 阅读 · 0 评论 -
全网唯一OpenCyphal/UAVCAN教程(6)DSDL文件的编译
假设你自己的dsdl放在public_regulated_data_types/reg下,需要注意的是,加上 --lookup-dir public_regulated_data_types/uavcan,这个路径是官方标准dsdl的存放路径,这个有点类似头文件查找的意思,这样子我们才能在自己的dsdl文件里引用官方标准定义的数据类型。如何将Cyphal的dsdl文件编译成C语言源文件呢?需要用到官方提供的一个python工具nunavut。指定编译后的源文件存放目录。...原创 2022-09-01 00:43:02 · 1414 阅读 · 0 评论 -
全网唯一OpenCyphal/UAVCAN教程(5)协议原理分析
实际上uavcan底层的传输协议不一定是can,只不过最初就是基于can总线。前面说过uavcan提供了两种传输方式,广播订阅和服务请求。这是传输层之上的东西,对于传输层而言,它只看到了can帧。消息比较短,单个can帧就可以携带,这种传输叫单帧传输;消息较长,需要几个can帧传输,这种叫多帧传输。那么一个can帧有多大呢?包含哪些字段?接下来我们来认识can帧结构。can帧结构1、单帧结构单帧最大8个字节,其中数据是可变的,最大占7个字节,最后一个字节叫尾部字节。尾部1字节8个位拆分成了原创 2021-02-21 15:37:42 · 7499 阅读 · 2 评论 -
全网唯一OpenCyphal/UAVCAN教程(7)定义自己的数据类型以及类型命名规范
前面的例子使用了libuavcan自带的数据类型,这一节介绍如何定义自己的数据类型。libuavcan采用DSDL(数据结构化描述语言)来描述通信数据格式。接触过DSDL的同学应该很容易上手,首先我们得写一个协议格式描述文件,通常以.uavcan作为后缀名,示例如下:## This service accepts nothing and returns the current time on the server node.## All DSDL definitions should contai原创 2020-12-20 10:37:45 · 6200 阅读 · 3 评论 -
全网唯一OpenCyphal/UAVCAN教程(2)学习CAN总线协议(背景知识上)
文章目录1 CAN的一些基本概念1.1 什么是CAN总线1.2 CAN的拓扑结构1.3 CAN信号表示1.4 CAN信号传输2 CAN通信的特点2.1 无主从之分2.2 非破坏性位仲裁机制2.3 系统的柔性2.4 通信速度2.5 数据传输方式2.6 远程数据请求2.7 错误检测、错误通知、错误恢复功能2.8 故障封闭2.9 连接限制3 CAN通信网络结构3.1 OSI基本参照模型3.2 CAN协议网络层次3.3 CAN总线状态1 CAN的一些基本概念1.1 什么是CAN总线CAN 是 Controll原创 2021-04-30 13:02:17 · 5300 阅读 · 1 评论 -
全网唯一OpenCyphal/UAVCAN教程(3)学习CAN协议之认识5种can帧(背景知识下)
文章目录1 CAN 协议中的帧2 数据帧与遥控帧2.1 帧起始2.2 仲裁段2.2.1仲裁过程2.2.2 仲裁段中的RTR,SRR和IDE位2.2.3 报文过滤2.3 控制段2.4 数据段2.5 CRC段2.6 ACK段2.7 帧结束1 CAN 协议中的帧在了解CAN总线的通信机制之前,首先需要了解CAN协议中五种类型的帧结构:数据帧遥控帧错误帧过载帧帧间隔在讲述五种帧结构的过程中,穿插讲述CAN总线的通信机制。2 数据帧与遥控帧在CAN协议中,数据帧和遥控帧有着原创 2021-05-01 00:08:34 · 5760 阅读 · 3 评论 -
全网唯一OpenCyphal/UAVCAN教程(10)canfd协议详解
1、CAN-FD协议特性随着电动汽车,无人驾驶汽车技术的快速发展,以及对汽车高级驾驶辅助系统和人机交互的增加,传统的CAN总线在传输速率和带宽等方面越来越显得力不从心,因此改进版的CAN总线应运而生。普通can主要有以下几方面不足:(1)最高数据传输速率限制为1 Mbit/s,车载领域实际使用速率最高为500 Kbit/s,无法满足越来越高的数据吞吐量需求;(2)每帧报文有效数据场为8 字节,有效负载比率不足50%;(3)性能上难以应对Flexray、Ethernet 等新型车载总线的威胁。市场原创 2022-03-02 00:49:12 · 1785 阅读 · 0 评论 -
can总线延时理论分析
根据CAN控制网络数据流的方向可以看出,CAN网络的报文信息延时由以下三部份组成。 1、帧延时Tdf : 由信息串行化导致的延时;帧延时即报文信息的传输延时,由帧长度和总线的传输速率决定。 帧长度:由数据场、识别符、填充位的个数共同决定。传输速率:传输速率由波特率度量,CAN通讯时:一般传输距离为40~10000M,速率5~1Mbit/...转载 2017-06-11 01:50:05 · 13020 阅读 · 0 评论 -
全网唯一OpenCyphal/UAVCAN教程(11)用candump和gawk工具写一个Cyphal协议解析小工具
经常需要调试Cyphal协议,yakut的安装比较麻烦,所以就用candump和gawk实现了一个协议解析工具。这个candump导出的数据,很明显这是一条心跳广播,7D55是心跳广播的id,而且还是条单帧消息。原创 2022-08-08 02:07:50 · 1232 阅读 · 1 评论