- 博客(170)
- 收藏
- 关注
转载 【转载】RTOS中队列、环形队列、优先级队列的实现及使用
队列(queue)是一种只能在一端插入元素、在另一端删除元素的数据结构,遵循「先入先出」(FIFO)的规则。队列中有两个基本概念:队头指针(可变):永远指向此队列的第一个数据元素;队尾指针(可变):永远指向此队列的最后一个数据元素;队列中的数据存储方式有两种:① 基于静态连续内存(数组)存储,如图:❝后续都使用基于静态内存存储的队列讲解。❞「入队(enqueue)」「出队(dequeue)」① 普通队列是一种只能在一端入队,在一端出队的数据结构,规则:FIFO。
2025-12-23 20:57:38
1
原创 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
266
原创 实用:嵌入式执行时间测量常用方法
以 Cortex-M 系列内核为例,通过使能 DWT(Data Watchpoint and Trace)模块的 CYCCNT 计数器,记录代码执行前后的计数值,计算差值后除以 CPU 频率,即可得到执行时间。配置定时器的预分频系数和自动重装载值,使其以已知频率(如 1MHz,即 1tick=1us)递增,测量前后读取计数器值,计算差值即为时间。CPU 周期计数器是内核自带的调试模块,每一个 CPU 周期自增 1,具有精度最高(纳秒级)、侵入性最小的优势,是函数级测量的首选方案。
2025-12-19 19:48:44
680
原创 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
827
1
原创 ARM 架构 DSB 与 ISB 基础
ISB 就像一个 “刷新按钮”,会清空 CPU 里已经提前准备好的指令(指令流水线),让后续指令重新从内存读取。这样能确保执行的是最新的指令,而不是旧的 “缓存指令”。DSB 和 ISB 就是用来 “纠正” 这些优化的工具:当我们需要严格的执行顺序或数据同步时,用它们强制 CPU 按我们的要求来。比如通过系统调用进入内核,ISB 能确保后续指令按内核权限执行,避免权限错误。比如:先确保数据写完并同步到内存,再执行下一步读操作。所有和数据相关的操作(读数据、写数据)都完成后,才允许屏障。
2025-12-16 20:55:40
375
原创 IEE1588(PTP)笔记
(由于 sync 报文不可能携带精确的报文离开时间,所以我们在之后的 Follow_up 报文中,将 sync 报文精确的发送时间戳 t1 封装起来,发给从时钟): 时钟间偏差(主从时钟之间存在时间偏差,偏离值就是 offset,图1 中主从时钟之间虚线连接时刻,就是两时钟时间一致点)1. 主时钟周期性的发出 sync 报文,并记录下 sync 报文离开主时钟的精确发送时间 t1;5. 主时钟记录下 delay_req 报文到达主时钟的精确到达时间 t4;: 网络延时(报文在网络中传输带来的延时)
2025-12-15 20:40:56
452
原创 EtherCAT 逐帧报文解析:配置SM/FMMU
1、发:回:2、发:回:3、发:回:4、发:回:5、重复操作(遍历从站):6、发:回:7、发:回:8、发:回:9、
2025-12-14 18:23:51
449
原创 EtherCAT 逐帧报文解析:EEPROM 读取与配置阶段
====================EEPROM 读写阶段结束================================主站采用 APRD(定点读)、APWR(定点写)指令替代广播指令,实现对单个从站的精准操作。执行内容:重复步骤 2 - 8 的 APRD/APWR 读写流程。6、APRD 读 0x503 寄存器:验证写入结果。
2025-12-13 19:50:26
249
原创 EtherCAT 逐帧解析状态机切换过程(初始清零阶段)
==================BWR广播写(初始阶段)到此结束============================对应寄存器:地址 0x201 → ECAT 中断屏蔽寄存器(功能:仅启用 DL 状态中断)对应寄存器:地址 0x910 → DC 同步寄存器(功能:清除 DC 同步相关初始偏差)对应寄存器:地址 0x300 → RX ERR 寄存器(功能:清除接收错误计数)对应寄存器:地址 934 → 时钟偏差平均寄存器(功能:优化时钟同步精度)
2025-12-12 19:59:39
527
原创 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
118
转载 【转载】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
23
原创 Beckhoff EtherCAT 网络拓扑与布线规范
网络拓扑指网络节点(主站、从站、交换机 / 分支器等设备)的物理连接方式,其设计直接影响 EtherCAT 系统的通信稳定性、实时性能、扩展灵活性及故障排查效率。合理的拓扑设计需结合工业现场的设备布局、产能需求、维护便利性等因素,同时遵循 EtherCAT 协议的技术规范,是保障系统长期稳定运行的核心前提。
2025-12-09 20:22:13
899
原创 EtherCAT 主站3
当连接到目标系统并在 IO 树中选中 EtherCAT 设备时,“CoE – 在线” 选项卡将生效。“CoE” 是 “CANopen over EtherCAT”(基于 EtherCAT 的 CANopen 协议)的缩写。该选项卡列出从站设备对象字典(object directory)的内容,并允许用户修改该字典中读写型(RW)对象的内容。
2025-12-08 20:54:36
802
原创 EtherCAT 主站1
任务按周期执行,可配置不同的周期时间并分配优先级。不同任务允许设置相同周期时间,但优先级不可重复。高优先级任务可中断低优先级任务,因此短周期任务应分配较高优先级。低优先级任务将在 CPU 执行时间可用且符合优先级规则时恢复运行。一个 EtherCAT 电报最多包含 15 个 EtherCAT 数据报,并以帧校验序列(FCS)收尾。同步任务(Sync Task)会关联到一个同步单元(Sync Unit),用于实现帧同步。若尚未创建同步任务,帧将由未关联任务的默认同步单元进行同步。
2025-12-06 17:52:54
810
原创 Ethercat报文解析参考
LWR、LRD都采用逻辑寻址,因此从站只需要按照约定(配置)好的,将内存中特定的数据写入报文数据中特定的位置即可。因此发送数据帧ADP=0意味着只有第一个从站会把自己的0x910寄存器数值写入报文,报文中的数据就是第一个从站的系统时间,后面的从站就只是默默地把该数据读入自己的0x910寄存器中。如图所示为发送和接收的ARMW报文。采用位置寻址,当从站接收到ADP为0时,将地址为ADO的寄存器内容写入报文数据,如果从站接收到ADP不为0时,则将报文数据写入地址为ADO的寄存器,操作完成后对ADP加1。
2025-12-04 22:14:14
1124
转载 J-Link无法连接芯片的常见解决办法
可能无法与芯片正确连接,而导致在IDE中调试失败,出现例如“Failed to get CPU status after 4 retries”的报错信息,无法获取芯片的状态,可能是由于J-Link未与芯片成功连接导致的。在验证J-Link与芯片连接时,建议先使用芯片公司的官方评估板,或者其他可靠的硬件设备来进行验证,以避免可能由错误的硬件设计带来的问题。除了确认芯片能够支持该调试接口外,还应进一步检查目标板的调试接口的硬件设计,确保芯片的调试引脚有成功连接到调试接口。若无法看到上述信息,则可以打开电脑的。
2025-12-03 21:15:38
52
原创 MCUXpresso开启汇编调试
方法如下:在Debug页面使能Instructing Stepping Mod。然后正常的单步调试/整行调试即会切换到汇编模式下的单步/整行。很有必要知道的一个功能:切换常规C调试和汇编调试。
2025-12-01 22:37:18
157
转载 arm的cache原理
过CACHE进行的。在读写请求到达存储器前会被CACHE捕获,cache存储器将该请求分成三部分标签,组索引和数据索引域,cache通过组索引域确定可能包含地 址和数据cache的行,cache存储器检查匹配的CACHE 行的状态标签,如果是V表示(cache hit)命中,否则cache失效(cache miss)在cache失效时从主存吧cache行考到CACHE存储器。它是这样工作的:数据一般只写到Cache,这样有可能出现Cache中的数据得到更新而主存中的数据不变(数据陈旧)的情况。
2025-11-30 22:50:10
28
原创 Cache Tag 和 物理地址
的,也就是当有一个虚拟地址送进来,MMU在开始进行地址翻译的时候,Virtual Index就可以去L1 cache中查询了,MMU查询和L1 cache的index查询是同时进行的。为了搜索一个cache,来自 CPU 的地址经hash处理生成一个索引(index),这个index指向cache中的一个或者多个位置,比如。缓存行的大小是由实现定义的(implementation defined),但由于互连(interconnect)的原因,所有核心(Cores)应该具有相同的缓存行大小。
2025-11-29 19:11:11
1035
原创 Cache在flash擦写中的作用
Flash 驱动中,擦写操作会修改 Flash 物理内容,而 Cache 的 “缓存特性” 会导致。,因此需要通过指令显式干预 Cache。
2025-11-28 20:34:47
339
原创 Ethercat应用实例
该项测试主要在二维伺服平台上完成,连接PC机、运动控制器和二维伺服平台,如图所示,通过数控系统控制二维伺服运动平台的X轴和Y轴电机做圆弧插补,利用上方横梁固定的笔杆记录二维平台上白纸相对运动下的轨迹。在上一节的一系列实验后,控制系统的各项功能都顺利通过测试,接下来把开发好的控制系统制作成便于使用的操作台和控制柜接入到LX230B型30T的数控转塔冲床上,取代原有的控制系统,操作台和控制柜如图所示。经测试,软件上的相关按钮都工作正常,五个轴的接口、I/O接口工作正常,产生的脉冲精度误差为0。
2025-11-27 20:17:13
715
原创 EtherCAT 从站实现
For process data, SM running in 3-buffer-mode(3缓存模式) need three times the length (3倍长度) of actual process data for physical memory(物理内存) . The following table shows a schema(体系结构,模式) of how to allocate(分配) the length for the 4 SM.
2025-11-27 00:39:42
861
原创 EtherCAT 从站设计
给从站的过程数据接口是32位的I/O接口。报文通过从站控制器时,从站读取出相关命令并进行对应处理,数据处理通过硬件完成,延间约为100-_500ns,通信性能独立于MCU的响应时间。EoE协议也可以实施。EtherCAT从站设备同时实现应用控制和数据通信两部分功能,其组成如图所示,由四部分组成:从站控制微处理器、EtherCAT从站控制器ESC芯片、物理层器件和其他应用层器件。从站的SyncManagers 和 FMMU 是由主站在初始化阶段自动配置的,该配置基于每个从站的XML文件和整个网络的设置。
2025-11-25 00:13:55
973
原创 EtherCAT主站设计
主站功能几乎不会给主机CPU带来任何负担,轻松处理这些任务的同时,还可以处理应用程序,因此EtherCAT无需使用昂贵的专用有源插接卡,只需使用无源的NIC卡或主板集成的以太网MAC设备即可。EtherCAT主站很容易实现,尤其适用于中小规模的控制系统和有明确规定的应用场合。可以看到,EtherCAT主站完全在主机CPU中采用软件方式实现,相比之下,传统的慢速现场总线系统通过有源插接卡方可实现主站的方式则要占用更多的资源,甚至服务于DPRAM的有源卡本身也将占用可观的主机资源。
2025-11-24 20:12:54
897
原创 EtherCAT设备配置
尽管CoE协议提供了详尽的描述,但AoE则更适合路由与并行服务的应用:通过网关设备访问子网络,如EtherCAT至CANopen® 或EtherCAT至IO-Link™ 网关设备。在此,关注焦点还是EtherCAT与现有协议的兼容性(IDN的存取值、属性、名称、单位等),以及与数据长度限制相关的扩展性。设备行规描述了设备的应用参数和功能特性,如设备类别相关的机器状态等。用户非常熟悉这些行规以及相关的参数和工具,因此,EtherCAT无需为这些设备类别重新开发设备行规,而是为现有的设备行规提供了简单的接口。
2025-11-23 23:28:34
745
1
原创 EtherCAT设备寻址方式
在上图中,如果需要总线上第8个设备响应报文,则主站需要将报文的地址设为0xFFF9,当报文经过第1个从站时,地址为0xFFF9,不等于0,第1个从站不会响应报文,报文地址加1,变为0xFFFA。当报文经过第2个从站时,地址为0XFFFA,不等于0,第2个从站不会响应该报文,报文地址加1,变为0xFFFB。这种寻址方式的优点是,在主站想对每个从站进行访问的时候,只需要对逻辑空间中的地址进行操作,而无须关心该地址对应的从站物理地址,减轻了主站的负担。节点寻址方式的优点是,每个从站的地址与其在总线中的位置无关。
2025-11-22 18:36:29
768
原创 ECAT-应用层
应用层AL(Application Layer) 为用户与网络之间提供接口,应用层在EtherCAT 通信协议层次结构中是与用户联系最紧密最直接的一层,它可以直接与用户进行交互,实现面对具体的应用程序和控制任务等功能, EtherCAT 应用层为各种服务协议与应用程序之间定义了接口, 使其能够满足应用层所要求的各种协议共同工作的需求。// 只能和init进行状态间转换,没有过程数据通信,通过应用层的邮箱进行通信,根据需要的情况对邮箱进行配置,只能使用FoE协议。是可选的,但是在固件必须要更新时推荐选择。
2025-11-20 21:37:09
746
原创 文件操作对照表
读写模式决定了打开文件后可执行的操作(读 / 写 / 追加)以及文件不存在时的行为(创建 / 报错),是open()函数的第一个关键参数。whence:起始位置(0 = 开头,1 = 当前,2 = 末尾)。读取 / 写入文本文件(.txt、.md、.csv 等)。size:可选,指定读取字节数;写入内容到文件,文本模式传字符串,二进制传 bytes。写入列表 / 迭代器中的多行内容,不自动加换行。最常用的读取模式,若需修改文件需切换其他模式。可读取也可写入,但写入会覆盖指针位置内容。
2025-11-19 21:09:54
911
转载 EtherCAT DC同步配置实例
其中,0x0900-0x0903存放端口0的接收时间,0x0904-0x0907存放端口1的接收时间,0x0908-0x090B存放端口2的接收时间,0x090C-0x090F存放端口3的接收时间。(5)主站发送FPWR(配置地址写)类型帧,向从站寄存器0x0980地址写入数据00,配置循环单元控制器,向寄存器0x0981地址写入数据00,配置激活寄存器,关闭Sync0信号的生成。(3)主站多次发送FPRD(配置地址读)类型帧,读取各个从站0x0910-0x0917地址数据,获取从站本地时钟的时间。
2025-11-18 21:53:56
82
原创 字节对齐与 sizeof 的“坑”
字节对齐是硬件性能与内存利用率的平衡结果,而sizeof的 “坑” 本质是对 “编译器对齐规则” 的理解不足。基本类型有 “自然对齐值”,结构体有 “整体对齐” 和 “偏移对齐” 规则;sizeof计算的是 “内存占用大小”(含填充字节),而非 “成员实际大小之和”;编译器选项、成员顺序、数据类型(数组 / 指针 / 联合体)都会影响sizeof结果。掌握这些底层逻辑,不仅能避开开发中的隐蔽 Bug,更能在内存优化、跨平台开发中做出合理设计。
2025-11-17 22:04:05
795
原创 2026 年软考中级嵌入式系统设计师
软考中级嵌入式报名通常在考试前 2-3 个月开始,2026 年软考中级嵌入式系统设计师只有上半年 1 次考试机会,报名时间预计在 3 月中旬至 4 月中旬。中国计算机技术职业资格网(
2025-11-16 20:57:43
223
原创 DMA 与 AHB 总线
AHB 全称为高级高性能总线(Advanced High-performance Bus),是 ARM 公司 AMBA(Advanced Microcontroller Bus Architecture)总线体系中的核心组成部分,专门用于连接 SoC 内部对传输速率和带宽要求较高的功能模块。采用单时钟边沿操作,支持 32 位至 128 位可配置总线宽度,保障高传输速率。支持单次传输、突发传输和分裂事务传输,其中突发传输仅需一次地址配置即可完成连续数据块传输,大幅提升传输效率。
2025-11-15 19:13:22
555
原创 常用编码知识(BCD / 字符编码)
BCD 码(Binary Coded Decimal)专为解决 “十进制数字二进制编码” 而生,用 4 位二进制数表示 1 位十进制数(0~9),避免二进制与十进制转换的精度损失,是工业仪表、数据采集场景的常用编码。4 位二进制数对应权值 2、4、2、1,0~4 用 0000~0100,5~9 用 1011~1111。原始数据 1 的个数:4(偶数)→ P=1 → 完整编码1011011(7 位)原始数据 1 的个数:4(偶数)→ P=0 → 完整编码1011010(7 位)
2025-11-14 21:07:45
832
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅