- 博客(28)
- 资源 (3)
- 收藏
- 关注
转载 Ethercat解析(五)之初始化流程
一、EtherCAT入口 源代码执行命令sudo /etc/init.d/ethercat start,将会从文件module.c文件中的ec_init_module函数中开始往下执行初始化流程。二、初始化大致过程(1) ec_init_module 主要用于生成/dev/EtherCAT设备,并且调用ec_master_init初始化主机相关信息。ec_master...
2018-09-03 16:58:08
4766
转载 Ethercat解析(四)主站运行阶段
由主站驱动提供的EtherCAT主站可运行在如下图中几个阶段:孤儿阶段:主站等待以太网连接。空闲阶段:主站已经连接了以太网,但是应用空间没有对主站请求。在此阶段,主站会自动扫描从站总线并等待应用空间的操作。在此阶段,命令行工具可以访问总线,但是由于缺少总线配置,不能进行过程数据的交换。可操作阶段:主站被应用层请求,此时可对总线进行配置也可进行过程数据的交换...
2018-09-03 16:49:17
1145
转载 Ethercat解析(三)之命令行工具的使用
说明:EtherCAT为了方便用户空间对主站进行调试,因此提供一套用户空间使用的工具来设置从站参数,观察调试信息等等。正常情况下,每个主站的实例都会生成一个字符设备,名字为:/dev/EtherCATx。欲想深入了解其他命令,可通过执行ethercat –help命令来查看详细使用方法。下面具体的介绍了一下各参数及命令的使用,其中[ ]中为必选参数,< >为可选参数。1...
2018-09-03 16:42:43
6324
3
转载 Ethercat解析(二)之基础答疑
(1) 为什么要将EtherCAT主站整合在内核空间?答:一方面考虑到内核空间相比于用户空间函数的延迟时间短且内核空间可直接操控硬件;另一方面,由于主站大多是周期工作,而内核定时器执行周期工作较为精准。 EtherCAT-1.5.2理论上支持任何实时性(rtai,xenomai)或者非实时内核(linux-2.6以上的版本)(2) EtherCAT本地化网卡与通用网卡优劣分析答...
2018-09-03 16:29:04
2635
原创 Etherlab解析(一)之获取、编译、安装(Ubuntu14.04)
前言:EtherCAT(以太网控制自动化技术)是一个开放架构,以以太网为基础的现场总线系统,其名称的CAT为控制自动化技术(Control Automation Technology)字首的缩写。EtherCAT是确定性的工业以太网,最早是由德国的Beckhoff公司研发。优势:免费、开源、稳定性能良好、支持实时扩展。 环境:Ubuntu14.04 一、获取(1) 从EtherC...
2018-09-03 16:25:40
2907
原创 Linux 库的使用
1 基本概念1.1 什么是库 一种可执行代码的二进制形式,可以被操作系统载入内存执行。 1.2 库的种类 静态库:静态库的代码在编译过程中已经被载入可执行程序,因此体积较大。 动态库:可执行程序运行时才载入内存的,在编译过程中仅简单的引用,因此代码体积较小。 1.3 库的命名 静态库的名字一般为libxxxx.a,其中 xxxx 是该lib的名称。 动态库的名字一般为l...
2018-08-28 00:16:37
294
原创 git简单使用
1.windows下安装git1.1下载原文件并安装git服务端下载 git客户端下载1.2生成SSH密钥右键鼠标,选中 “Git Bash here”,打开git终端: 输入如下指令,然后一路回车生成密钥。ssh-keygen -t rsa -C &amp;amp;amp;amp;amp;amp;quot;your_email@example.com&amp;amp;amp;amp;amp;amp;quot;查看密钥生成 1.3添加密钥
2018-08-24 15:27:55
237
原创 Linux内核进程睡眠和唤醒
对于 TASK_INTERRUPTIBLE 和 TASK_UNINTERRUPTIBLE 补充说明一下: 值 含义 状态 TASK_RUNNING 可执行状态(执行状态、执行等待状态)。 执行态或就绪态 TASK_INTERRUPTIBLE 可打断睡眠,可以接受信号并被唤醒,也可以在等待条件全部达成后被显式唤醒(比如wake_up()函数)。 ...
2018-08-22 17:22:36
4087
转载 linux内核中list用法
2018-08-16 14:42:08
4334
原创 Linux内核同步方法
当多个进程、线程或中断、正常用户程序同时访问同一个资源,可能导致错误,因此内核需要提供并发控制机制,对公共资源的访问进行同步控制,确保共享资源的安全访问。 linux中包含了众多的互斥与同步机制,包括信号量、互斥体、自旋锁、原子操作、读写锁等。在讨论之前我们引入几个概念: 进程上下文:应用程序陷入内核运行时所处的内核环境。 中断上下文:中断服务程序执行时所处的内核环境。 ...
2018-08-16 14:07:13
857
转载 为什么linux内核函数出现错误,返回值是一个负数
该疑问出现与我看《linux内核设计与实现》这本书的12.3.2这节中下面一段代码:page = __get_free_pages(GFP_KERNEL,3);if (!page){ /*没有足够的内存:你必须处理这种错误!*/ return -ENOMEM; }1.如何理解函数返回指针内核中的函数通常以返回指针的形式来传递调用函数后执...
2018-08-15 15:51:47
2404
转载 为什么在宏定义中会用到do-while(0)
宏定义中使用do{}while(0)的好处1 空的宏定义避免warning:#define foo() do{}while(0)2 存在一个独立的block,可以用来进行变量定义,进行比较复杂的实现。3 如果出现在判断语句过后的宏,这样可以保证作为一个整体来是实现:#define SAFE_DELETE(p) do{ delete p; p = NULL} whil...
2018-08-15 11:46:13
686
转载 C++中Operator类型强制转换成员函数解析
转换函数定义了由&lt;类型说明符1&gt;到&lt;类型说明符2&gt;之间的映射关系。可见,转换函数是用来将一种类型的数据转换成为另一种类型类型转换操作符(type conversion operator)是一种特殊的类成员函数,它定义将类类型值转变为其他类型值的转换。转换操作符在类定义体内声明,在保留字 operator 之后跟着转换的目标类型。转换函数又称类型强制转换成员函数,...
2018-07-17 14:16:45
2775
转载 Vmware虚拟机三种网络模式详解
原文来自http://note.youdao.com/share/web/file.html?id=236896997b6ffbaa8e0d92eacd13abbf&type=note 我怕链接会失效,故转载此篇文章由于Linux目前很热门,越来越多的人在学习linux,但是买一台服务放家里来学习,实在是很浪费。那么如何解决这个问题?虚拟机软件是很好的选择,常用的虚拟机软件有vmware ...
2018-04-27 15:50:56
181
原创 android camera2 拍照流程
正文camera2 API 的加入是从AndroidV5.0(21)开始的,因此我们使用Camera2应该是在Android 5.0(含5.0)之后。同时,对于Android6.0我们需要有动态权限的管理。这两点应该是使用Camera2使用前的最基本认知。Android 5.0对拍照API进行了全新的设计,新增了全新设计的Camera v2 API,这些API不仅大幅提高了Android系统拍照的功
2017-12-04 16:22:08
4990
2
原创 抽象类与接口区别
看到这个问题,自己想起来以前痛苦的学习过程。简单的回答一下。接口和抽象类之间有没有区别?可以肯定的回答:有区别。那既然有区别,我们不妨带着疑问去探索一下,语言设计者们在设计接口和抽象类时为什么要设计出区别,他们的目的何在。编程语言的设计其实也是一门哲学。首先接口和抽象类的设计目的就是不一样的。接口是对动作的抽象,而抽象类是对根源的抽象。对于抽象类,比如男人,女人这两个类,那我们可以为这
2017-11-30 14:17:53
208
转载 Android模拟器Genymotion安装使用教程详解
一、注册\登录打开Genymotion官网,https://www.genymotion.com/ ,首先点击右上角的Sign in进行登录操作。如何登录就不细讲了,下面讲一下如何注册(备注:注册按钮在登录界面中)。注册如果没有账号,则需要先注册。在登录界面,点击Create an account按钮打开注册界面。注册界面如下:(使用谷歌浏览器翻译后
2017-11-16 19:50:59
331
转载 变量命令规则
变量命名规范本节内容主要参考自代码大全(第二版)1、变量命名的注意事项变量命名最关键的一点就是:名字要能准确的描述出该变量所代表的事物 变量名长度最好控制在10~16个字符之间 对位于全局命名空间中的名字加以限定词,并且应该一般加在后面 常见的限定词:Total, Sum, Average, Max, Min, Record, String, Pointer Num比较特殊,...
2017-11-07 17:24:03
751
转载 QT5帮助文档使用
学习图形界面开发,肯定离不开帮助文档的使用,因为它不像 C 语言那样就那么几个函数接口,图形接口的接口可以用海量来形容,常用的我们可能能记住,其它的真的没有必要去记,用到什么就去帮助文档查看用法。我们使用 Qt 帮助文档,主要分为这么几步:1)类使用的相关介绍2)查看所用部件(类)的相应成员函数(功能,参数,返回值)3)查看部件的信号4)查看部件的事件(所对应的
2017-10-16 11:02:11
940
原创 TortoiseSVN 安装及使用
TortoiseSVN是windows平台下Subversion的免费开源客户端。 一般我们都是先讲讲服务器的配置,然后再讲客户端的使用,但是在TortoiseSVN上,却可以反过来。因为,如果你的要求不高,只是想在本机,或者是可信任的局域网络中使用SVN版本控制,可以不需要安装VisualSVN Server,而只使用TortoiseSVN即可。一.接下来就来讲讲Tort
2017-10-11 15:51:49
407
原创 将CPP文件移植成C文件方法和注意的问题
一:将类转换为结构体第一步:将类当中的所有变量转换为结构体变量(结构体变量公有访问)// 映射点class CMappingPoint{public: __int64 m_nCoordinate; // __int64 m_nMeasurement; //};转换后typedef str...
2017-10-11 15:42:25
7438
转载 QT中QWidget、QDialog及QMainWindow的区别
QT中QWidget、QDialog及QMainWindow的区别 QWidget类是所有用户界面对象的基类。 窗口部件是用户界面的一个基本单元:它从窗口系统接收鼠标、键盘和其它事件,并且在屏幕上绘制自己。每一个窗口部件都是矩形的,并且它们按Z轴顺序排列。一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分。 QMainWindow 类提供一个有菜单条、锚接
2017-10-11 15:30:50
362
转载 C++继承:公有,私有,保护
C++继承:公有,私有,保护公有继承(public)、私有继承(private)、保护继承(protected)是常用的三种继承方式。1. 公有继承(public)公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的,不能被这个派生类的子类所访问。2. 私有继承(private)私有继承的特点是基类的公有成员和保护成员都...
2017-10-11 15:18:36
255
原创 使用QT调试ROS工程
配置qt环境,调试ros工程1. 向Qt Creator里添加工程从 Dash home 里启动Qt Creator,将看到下面的Welcome界面: 这里我们导入 dgps_ros 包,使之成为Qt Creator的C++工程。点击 Open Project 按钮,在弹出的对话框中选择 /home/ros/ros-project/dgps/src/dgps_ros/路径下的 ...
2017-10-11 14:49:25
5523
原创 ROS系统下创建msg与srv文件过程
1. 创建msg和srv文件1.介绍msg和srv文件msg:msg文件是简单的文本文件,描述ROS的字段信息,他们是用于在不同的语言生成源代码信息。srv:srv文件描述一个服务。它是由两部分组成:一个请求和一个响应。2.msg常用类型boolint8, int16, int32, int64 (plus uint*) float32, float64 str
2017-10-11 14:45:58
1466
原创 ubuntu14.04 安装ros 开发环境
#!/bin/bash# 一:ubuntu14.04.1安装ROS 开发环境 if false; then echo "第一步:配置source.list文件" sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sourc
2017-10-11 14:16:24
974
QT5.12Samp2019.zip
2020-01-08
串口应用测试程序
2013-07-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人