- 博客(191)
- 收藏
- 关注
原创 SxsTrace.exe使用笔记
SxsTrace.exe是Windows操作系统(Vista及以上版本)内置的命令行诊断工具,专用于追踪和分析Side-by-Side组件加载失败问题。该工具位于Windows系统目录(通常为),属于Windows原生支持工具集的一部分。
2026-01-13 20:15:49
43
原创 ucos-iii事件
在某些场合,可能需要多个时间发生了才能进行下一步操作,比如一些危险机器的启动,需要检查各项指标,当指标不达标的时候, 无法启动,但是检查各个指标的时候,不能一下子检测完毕啊,所以,需要事件来做统一的等待,当所有的事件都完成了, 那么机器才允许启动,这只是事件的其中一个应用。事件不与任务相关联,事件相互独立,一个32位的变量就是事件的集合,用于标识该任务发生的事件类型, 其中每一位表示一种事件类型(0表示该事件类型未发生、1表示该事件类型已经发生),一共32种事件类型具体见图。
2026-01-11 19:24:33
532
原创 ucos-iii事件控制块结构
μC/OS的事件由多个元素组成,在事件被创建时,需要由我们自己定义事件(也可以称之为事件句柄),因为它是用于保存事件的一些信息的, 其数据结构OS_FLAG_GRP除了事件必须的一些基本信息外,还有PendList链表与一个32位的事件组变量Flags等,为的是方便系统来管理事件。:因为可以有多个任务同时等待系统中的事件, 所以事件中包含了一个用于控制挂起任务列表的结构体,用于记录阻塞在此事件上的任务。这个变量可以为8位,16位或32位。:事件的类型,用户无需理会,μC/OS用于识别它是一个事件。
2026-01-10 12:39:00
394
原创 Ehercat代码解析中文摘录<9>
为了识别EtherCAT从站并提供参数(例如过程数据、支持的邮箱协议),每个EtherCAT从站都必须有一个SII(从站信息接口)。这可以通过多种方式完成,例如使用TwinCAT(见[3])或通过本章描述的EEPROM编程工具(图50:EEPROM编程工具)完成。因此,提供了一个额外的“EEPROM编程”工具(见第13.2章)。(图注:展示EEPROM编程工具主界面,包含“File”、“Slaves”菜单,以及“Device Description”和“Slaves”两个列表区域。:所有连接从站的列表。
2026-01-09 20:03:32
354
原创 Ehercat代码解析中文摘录<8>
默认情况下,提供了一系列与应用相关的配置,但也可以导入新的配置,例如用于德州仪器AM335x的配置。(图注:展示“File”菜单下拉选项,包含“新建”(Ctrl+N)、“打开”(Ctrl+O)、“保存”(Ctrl+S)、“另存为”和“退出”。主用户界面(图32:配置器主用户界面)结构如下:上方是工具条(文件、项目、工具和帮助),下方是3个独立的窗口(从站项目导航、从站设置和冲突)。(图注:展示“创建新的从站文件”对话框,包含输出路径选择、进度窗口以及“浏览”、“取消”、“关闭”、“开始”按钮。
2026-01-08 20:20:03
1169
原创 Ehercat代码解析中文摘录<7>
有三种可能性可用于控制从站行为:直接更新测试对象的启用/禁用位(表12:测试对象条目),或通过测试控制对象(第11.1.1章),或通过更新ESC寄存器0xF80:0xF83(第11.1.2章)。(表格内容详细描述了索引从0x3001到0x300A的多个测试对象的子索引、数据类型、访问权限、描述和测试目的,这些对象用于测试数据对齐、访问权限、枚举类型、大对象处理等不同场景。测试控制对象的每个子索引(条目)将一个启用/禁用功能(位0)映射到从站设备的一个物理数字输入。表18:通用对象包括所有已定义的对象。
2026-01-06 21:14:40
707
原创 Ehercat代码解析中文摘录<6>
位置控制位于EtherCAT主站上,因此在这种情况下,只需要将“目标速度”和“实际位置”链接到NC任务。对于相应的对象0x6061(操作模式显示)和0x6060(操作模式),没有为NC轴变量保留。在当前TwinCAT版本(2.11 build 1539)中,NC任务不为对象0x6060(操作模式)和0x6061(操作模式显示)提供变量,因此这些对象值需要由PLC直接提供。如果使用非预定义的驱动器,则需要两个基本信息:1 rev/min的目标速度值(⇒ 目标速度分辨率)和编码器分辨率。
2026-01-05 20:21:01
924
原创 Ehercat代码解析中文摘录<4>
EtherCAT 邮箱(MBX)用于传输非周期性数据,SSC 支持多种邮箱协议,本章介绍 FoE 和 EoE 的实现与使用。FoE 用于在主站和从站间传输文件(如配置文件、固件),SSC 默认支持 FoE 服务器功能。EoE 允许在 EtherCAT 总线上传输标准以太网帧,SSC 支持 EoE 从站实现。来源:AN_ET9300.pdf。用作个人学习和分享,侵删。
2026-01-03 18:21:14
292
原创 Ehercat代码解析中文摘录<3>
本地内存的分配取决于对象代码(VARIABLE、ARRAY 或 RECORD):变量(VARIABLE):若对象大小与平台定义的数据类型一致,直接定义变量即可。// 32 位变量对象数组(ARRAY)和记录(RECORD):通过结构体定义,首个成员为 8 位变量(子索引 0),存储最大子索引值。注:SSC 中为对齐需求,子索引 0 定义为 16 位变量!// 子索引 0,存储最大子索引值// 4 个 32 位数组元素// 子索引 0,存储最大子索引值// 8 位条目// 32 位条目。
2026-01-02 21:43:37
747
原创 Ehercat代码解析中文摘录<2>
SSC 包含多个(示例)应用程序,可用于主站 / 从站测试或作为应用程序开发的基础。默认 SSC 示例应用程序见本章开头,其他厂商可能提供额外示例,可通过手动添加、应用程序厂商的补丁文件或 SSC 工具添加到从站项目,详见 6.5.1。本示例基于 SSC 5.01 版本,说明如何为默认示例应用程序(SAMPLE_APPLICATION)添加新过程数据。本章概述默认(示例)应用程序、应用程序接口,并提供自定义应用程序开发的入门指南。用户特定应用程序可从零开发,或基于现有示例应用程序修改(推荐后者)。
2026-01-01 17:14:12
936
原创 Ehercat代码解析中文摘录<1>
设置 “EL9800_HW”“PIC24”“PIC18”“MCI_HW”“FC1100_HW” 用于激活预定义的硬件访问实现。若未使用上述任何设置,则需向从站项目添加用户特定的硬件访问文件。硬件访问层需提供的函数和宏定义在第 5 章 “硬件访问” 中。表 1 “硬件相关设置” 列出了已定义的硬件设置(位于 ecat_def.h 或 SSC 工具中)。本章介绍可用的硬件实现 / 设置,以及如何实现用户特定的硬件访问。可通过从站协议栈代码工具(第 12 章),根据应用程序的特定需求调整代码结构。
2025-12-31 17:57:12
1326
原创 Ethercat EOE笔记
除了已经描述的用于设备间通信的寻址模式,以太网现场总线还希望具有标准的基于 IP 的协议特征,如 TCP/IP、UDP/IP,以及所有基于他们的更高层协议(HTTP、FTP、SNMP 等)。理想情况下,单个以太网帧应被透明传输,这样避免了协议转换方面的限制。有两种不同的基本方法可以在周期性现场总线模式下实现非周期性以太网帧的传输。第一种方式,分配一个适当的可以嵌入非周期以太网帧的时间片。时间片的时间必须足够长,以确保在时间片内容纳(传输)完整的以太网帧。
2025-12-30 20:26:44
902
原创 linux内核查看网口负荷的指令
实时显示网口的 TCP/UDP 连接带宽占用,支持按主机筛选,适合定位高负荷连接。:直接读取 Linux 内核的网口收发统计数据(总字节数、数据包数、错误数),:查询网口的历史带宽数据(支持按时间粒度统计),适合分析负荷变化规律。:按网口实时输出每秒收发的字节数、数据包数,适合快速查看负荷趋势。:以折线图展示网口收发流量的实时变化,同时显示平均速率,直观性强。,适合嵌入式最小系统。
2025-12-29 20:18:38
141
原创 多线程编程
多线程编程的核心是 “并发”,但并发的背后必然绕不开 “同步”—— 如果多个线程争抢共享资源,轻则数据错乱,重则程序卡死。POSIX 线程库(pthread)作为 Linux 下多线程开发的标准,提供了三大核心同步原语:互斥锁、条件变量、读写锁。本文从新手视角出发,拆解这三大原语的用法、坑点,再聊聊多线程最经典的 “死锁” 问题,全程附实战案例和避坑指南。
2025-12-28 13:54:13
737
原创 MCUXpresso示波图实时跟踪变量教程
在新建项目向导的“Advanced project settings”中勾选“Redirect printf/scanf to ITM”。SWO是Cortex-M3/M4内核的调试接口之一,通过单一引脚实现非侵入式内存访问和调试信息输出。打开“SWO Trace Config”视图,设置SWO时钟速度(应与系统时钟一致)。打开Pins配置视图,将PIO0_15配置为SWO功能。需要与标准的SWD接口配合使用,仅需一个额外引脚。通过USB连接开发板与PC,下载程序。进入 debug,添加实时追踪的变量。
2025-12-26 19:50:07
467
原创 两种常见开关中断方式对比
经常会遇到两种典型的中断禁用 / 启用实现:一种是基于纯汇编编写的函数,另一种是编译器内置的内联函数,这两种的区别和功能具体拆解一下。
2025-12-25 20:40:30
732
原创 两种核心消息队列:环形队列与RTOS消息队列解析
int head;// 读指针(出队方向)int tail;// 写指针(入队方向)int tag;// 空/满标志位int size;// 队列容量// 存储空间} RINGQ;
2025-12-24 22:05:17
915
转载 【转载】RTOS中队列、环形队列、优先级队列的实现及使用
队列(queue)是一种只能在一端插入元素、在另一端删除元素的数据结构,遵循「先入先出」(FIFO)的规则。队列中有两个基本概念:队头指针(可变):永远指向此队列的第一个数据元素;队尾指针(可变):永远指向此队列的最后一个数据元素;队列中的数据存储方式有两种:① 基于静态连续内存(数组)存储,如图:❝后续都使用基于静态内存存储的队列讲解。❞「入队(enqueue)」「出队(dequeue)」① 普通队列是一种只能在一端入队,在一端出队的数据结构,规则:FIFO。
2025-12-23 20:57:38
15
原创 uC/OS-III信号量与消息队列
关键参数::二进制信号量设为0/1,计数信号量设为N最大计数值由类型决定(通常65535)发布(Post)操作opt选项的二进制构成:bit0: 调度选项 (0=不调度, 1=立即调度)bit1: 检查选项 (0=不检查溢出, 1=检查溢出)常用组合:#define OS_OPT_POST_1 0x01u // 发布并立即调度(不检查)#define OS_OPT_POST_NONE 0x00u // 发布不调度(不检查)#def
2025-12-22 20:36:34
307
原创 实用:嵌入式执行时间测量常用方法
以 Cortex-M 系列内核为例,通过使能 DWT(Data Watchpoint and Trace)模块的 CYCCNT 计数器,记录代码执行前后的计数值,计算差值后除以 CPU 频率,即可得到执行时间。配置定时器的预分频系数和自动重装载值,使其以已知频率(如 1MHz,即 1tick=1us)递增,测量前后读取计数器值,计算差值即为时间。CPU 周期计数器是内核自带的调试模块,每一个 CPU 周期自增 1,具有精度最高(纳秒级)、侵入性最小的优势,是函数级测量的首选方案。
2025-12-19 19:48:44
704
原创 EtherCAT分布式时钟
的底层核心,通过逻辑环网架构实现主从站时钟的相位对齐与频率校准,其本质是构建基于物理层延迟补偿的。从站0x0900:00 bit2=1,SYNC0/SYNC1 信号触发。从站0x0900:00 bit0=0,本地 16 位定时器触发。从站0x0900:00 bit1=1,Rx 报文中断触发周期。周期抖动≤10ns,同步偏差≤100ns。周期抖动≤1μs,同步偏差≥100μs。周期抖动≤100ns,同步偏差≤1μs。触发延迟≤5ns,同步偏差≤20ns。高精度运动控制(如电子齿轮同步)实现机制(寄存器配置)
2025-12-17 21:05:04
870
1
原创 ARM 架构 DSB 与 ISB 基础
ISB 就像一个 “刷新按钮”,会清空 CPU 里已经提前准备好的指令(指令流水线),让后续指令重新从内存读取。这样能确保执行的是最新的指令,而不是旧的 “缓存指令”。DSB 和 ISB 就是用来 “纠正” 这些优化的工具:当我们需要严格的执行顺序或数据同步时,用它们强制 CPU 按我们的要求来。比如通过系统调用进入内核,ISB 能确保后续指令按内核权限执行,避免权限错误。比如:先确保数据写完并同步到内存,再执行下一步读操作。所有和数据相关的操作(读数据、写数据)都完成后,才允许屏障。
2025-12-16 20:55:40
405
原创 IEE1588(PTP)笔记
(由于 sync 报文不可能携带精确的报文离开时间,所以我们在之后的 Follow_up 报文中,将 sync 报文精确的发送时间戳 t1 封装起来,发给从时钟): 时钟间偏差(主从时钟之间存在时间偏差,偏离值就是 offset,图1 中主从时钟之间虚线连接时刻,就是两时钟时间一致点)1. 主时钟周期性的发出 sync 报文,并记录下 sync 报文离开主时钟的精确发送时间 t1;5. 主时钟记录下 delay_req 报文到达主时钟的精确到达时间 t4;: 网络延时(报文在网络中传输带来的延时)
2025-12-15 20:40:56
467
原创 EtherCAT 逐帧报文解析:配置SM/FMMU
1、发:回:2、发:回:3、发:回:4、发:回:5、重复操作(遍历从站):6、发:回:7、发:回:8、发:回:9、
2025-12-14 18:23:51
481
原创 EtherCAT 逐帧报文解析:EEPROM 读取与配置阶段
====================EEPROM 读写阶段结束================================主站采用 APRD(定点读)、APWR(定点写)指令替代广播指令,实现对单个从站的精准操作。执行内容:重复步骤 2 - 8 的 APRD/APWR 读写流程。6、APRD 读 0x503 寄存器:验证写入结果。
2025-12-13 19:50:26
266
原创 EtherCAT 逐帧解析状态机切换过程(初始清零阶段)
==================BWR广播写(初始阶段)到此结束============================对应寄存器:地址 0x201 → ECAT 中断屏蔽寄存器(功能:仅启用 DL 状态中断)对应寄存器:地址 0x910 → DC 同步寄存器(功能:清除 DC 同步相关初始偏差)对应寄存器:地址 0x300 → RX ERR 寄存器(功能:清除接收错误计数)对应寄存器:地址 934 → 时钟偏差平均寄存器(功能:优化时钟同步精度)
2025-12-12 19:59:39
544
原创 Microchip MPLAB相关开发环境
Microchip MPLAB Harmony EtherCAT仓库:github.com/Microchip-MPLAB-Harmony/ethercat MPLAB® X IDE | Microchip TechnologyMPLAB® XC Compilers | Microchip Technology
2025-12-11 20:13:37
124
转载 【转载】EtherCAT状态机及配置流程
状态请求、状态响应和错误响应通过 ESC AL 控制寄存器 (reg0x0120)、AL 状态寄存器 (reg0x0130) 和 AL 状态代码寄存器 (reg0x0134) 进行交换。设置了上述信息后,从站检查无误后,主站可以请求进入safe-op状态,如果不能进入safe-op可以读取相关寄存器,判断错误原因。设置了上述信息后,从站检查无误后,主站可以请求进入pre-op状态,如果不能进入pre-op可以读取相关寄存器,判断错误原因。(1)主站设置从站需要映射的pdo数据,配置好FMMU的映射。
2025-12-10 19:07:15
47
原创 Beckhoff EtherCAT 网络拓扑与布线规范
网络拓扑指网络节点(主站、从站、交换机 / 分支器等设备)的物理连接方式,其设计直接影响 EtherCAT 系统的通信稳定性、实时性能、扩展灵活性及故障排查效率。合理的拓扑设计需结合工业现场的设备布局、产能需求、维护便利性等因素,同时遵循 EtherCAT 协议的技术规范,是保障系统长期稳定运行的核心前提。
2025-12-09 20:22:13
941
原创 EtherCAT 主站3
当连接到目标系统并在 IO 树中选中 EtherCAT 设备时,“CoE – 在线” 选项卡将生效。“CoE” 是 “CANopen over EtherCAT”(基于 EtherCAT 的 CANopen 协议)的缩写。该选项卡列出从站设备对象字典(object directory)的内容,并允许用户修改该字典中读写型(RW)对象的内容。
2025-12-08 20:54:36
838
原创 EtherCAT 主站1
任务按周期执行,可配置不同的周期时间并分配优先级。不同任务允许设置相同周期时间,但优先级不可重复。高优先级任务可中断低优先级任务,因此短周期任务应分配较高优先级。低优先级任务将在 CPU 执行时间可用且符合优先级规则时恢复运行。一个 EtherCAT 电报最多包含 15 个 EtherCAT 数据报,并以帧校验序列(FCS)收尾。同步任务(Sync Task)会关联到一个同步单元(Sync Unit),用于实现帧同步。若尚未创建同步任务,帧将由未关联任务的默认同步单元进行同步。
2025-12-06 17:52:54
849
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅