- 博客(107)
- 资源 (4)
- 收藏
- 关注
原创 HLS (High-Level Synthesis)对比PS运行速度
如果你只是做C = A + B,在 PS 端做就好。如果你要做1024 点的 FFT或者3x3 的图像卷积,PL 端通过 HLS 优化后,性能通常会有20 倍以上的质跃。
2026-01-27 09:52:44
320
原创 Qt--元对象系统
元对象系统让 C++ 拥有了**“自省”**的能力。它不再是一堆死掉的二进制,而是一个知道自己长什么样、能干什么的“智能对象”。
2026-01-26 11:09:26
232
原创 Qt--子类窗口消息传递(1)
[在这里插入图片描述](https://i-blog.csdnimg.cn/direct/a0438241c101458dae514f5114683cdf.png。
2026-01-26 11:00:02
284
原创 Qt-界面子类(1)
你更倾向于哪种交互方式?我可以针对那一种教你如何实现子界面给主界面“发消息”(信号与槽)。:像 PPT 换页一样,主界面只有一个位置,点击按钮切换不同的子界面。:子界面是主界面内部的小窗口,可以最小化、重叠、拖动。:子界面像积木一样,一个接一个地排在主界面里。:类似 Photoshop 或大型管理系统。:每点一次按钮,主界面就多出一个子模块。里新建的项目,记得在。
2026-01-26 10:38:18
332
原创 设计模式-备忘录模式(一)
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。就像玩单机游戏时的**“存盘(Save)”和“读盘(Load)”**。发起人(Originator):你的业务模块(如:PID 参数、显示设置)。备忘录(Memento):存盘文件(保存在 RAM 或 Flash 中的结构体)。负责人(Caretaker):管理器(负责决定什么时候存,存到哪)。它通常是一个只包含数据的结构体,对外部是不透明的。float kp;float ki;
2026-01-22 14:38:13
328
原创 设计模式-观察者模式(一)
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。想象你正在开发一个电池管理系统(BMS)。被观察者(Subject):电池电压监测任务。观察者(Observers):LCD显示屏、后台日志系统、蜂鸣器报警、上位机串口。电压监测任务读完数据后,手动调用Log_Save()。电压任务负担太重,它必须知道所有人的存在。如果你想增加一个“蓝牙传输”功能,你得修改电压监测任务的代码。电压监测任务只管“喊”一声:“电压更新了,现在是 3.7V!
2026-01-22 14:22:23
269
原创 设计模式-单一职责原则(一)
一个类(或模块、函数)应该只有一个引起它变化的原因。一个零件只干一件事。如果一个模块承担了太多的功能,那么其中一个功能的需求变化,就可能导致其他功能的代码被意外破坏。当你尝试描述一个模块的功能时,如果你用了**“和”或者“而且”**:“这个模块负责读取温度和显示在屏幕上。” ——这说明职责不单一。你会发现,坚持 SRP 会让你的代码量稍微增加(文件变多了),但每个文件都变得异常清晰。你现在手头的代码中,有没有哪个文件特别长(比如超过 1000 行)?那通常就是违反 SRP 的重灾区。
2026-01-22 10:03:22
507
原创 设计模式-依赖倒置原则(一)
高层模块不应该依赖低层模块,二者都应该依赖其抽象。抽象不应该依赖细节,细节应该依赖抽象。EIT 造型提供了实现手段。开闭原则 (OCP)是目标:增加功能不改旧代码。里氏替换 (LSP)是准则:保证新增加的零件 (T) 能正常工作。依赖倒置 (DIP)是核心:通过引入“插座(接口)”,解开了高层和低层的死结。到目前为止,我们聊了四个原则。你觉得在你的 FreeRTOS 驱动开发中,哪一个原则最难落地?我们可以针对性地聊聊解决方法。
2026-01-22 09:56:32
248
原创 设计模式-里氏替换原则(一)
如果对于每一个类型为 的对象 ,都有类型为 的对象 ,使得以 定义的所有程序 在所有的对象 代替 时,程序 的行为没有变化,那么类型 是类型 的子类型。子类必须能够完全替换掉它的基类,且程序逻辑不会出错。在 C 语言(EIT 造型)中,这就意味着:任何实现了接口I的零件T,都必须严格遵守I的契约。如果Engine预期调用某个函数会成功,那么所有的T都不应该在背后搞破坏(比如导致死机或逻辑混乱)。开闭原则 (OCP):告诉我们要通过增加零件 (T)来扩展功能。
2026-01-22 09:51:33
465
原创 设计模式-开闭原则(一)
这是系统的“契约”,定义后就不再修改。// 报警等级// 报警接口结构体(类似于 C++ 的虚基类)// 报警名称// 报警等级// 触发时的动作(回调函数)// 清除后的动作#endif特性说明解耦任务驱动逻辑与具体硬件动作彻底分离。可测试性你可以轻易编写一个模拟报警的T模块,用于测试引擎逻辑。内存优化所有的T都可以定义为const存储在 Flash 中,节省 RAM。
2026-01-22 09:43:54
192
原创 设计模式——EIT构型(四)
角色负责内容对应 C 代码E (Engine)任务逻辑、等待事件、处理数据vTask循环协议标准、数据结构、通信媒介struct和硬件交互、中断响应、物理转数字ISR和驱动函数。
2026-01-22 09:30:29
183
原创 设计模式——EIT构型(三)
在这个例子中,网关需要支持多种通信方式(如 Wi-Fi、LoRa、NB-IoT)。我们不希望在主任务里写一堆if-else或。
2026-01-22 09:22:49
58
原创 设计模式——EIT构型(一)
EIT 造型的核心思想是**“强龙不压地头蛇”**。E (Engine):由平台或底层框架提供的功能,通常是相对稳定的“大驱动力”。:连接底层和上层的协议或接口。:由开发者实现的具体业务逻辑或扩展点。
2026-01-22 09:08:20
257
原创 文件夹权限
数字7是最高权限组合,计算公式如下:对应的字符表示就是 rwx。所以,777数字位角色权限总和字符表示实际意义第一个7所有者4+2+1=7rwx文件的创建者可以做任何事第二个7所属组4+2+1=7rwx同组用户可以做任何事第三个7其他人4+2+1=7rwx陌生人也可以做任何事。
2026-01-07 13:19:23
729
原创 全志 V3S 交叉编译器配置手册
将编译器解压并移动到 Linux 存放第三方软件的标准目录。本教程适用于 Ubuntu 环境下为全志 V3S 配置。这一步确保你的终端已经“认识”了这个新工具。将编译器的路径永久添加到系统的搜索路径中。
2026-01-07 10:27:26
224
原创 itemis CREATE 状态机语言里的表达式(Expressions)及操作符
这段文档讲的是,也就是在状态机里计算值、做条件判断时可以用的语法和运算符。
2025-12-21 00:04:05
289
原创 状态机语言里 statement(语句)的三类细节
语句类型作用举例assignment改变变量的值x += 1触发事件调用函数/操作💡理解要点Assignment → 修改状态机内部变量Raise → 激活事件,可能导致状态转移Operation → 执行自定义逻辑,可操作外部硬件或做计算如果你愿意,我可以帮你画一张状态机动作语句图,把 assignment、raise、operation 三类语句在状态行为里如何触发可视化出来,更直观理解。你希望我画吗?
2025-12-21 00:02:00
422
原创 Reaction(反应)是怎么被触发的
Reaction 永远不会“自己执行”,它只会在 trigger 到来时被检查。trigger谁触发event外部 / 内部 raise定时器runCycle()状态变化。
2025-12-20 23:43:23
913
原创 probe和 attach
函数意义何时调用谁调用probe()判断驱动是否支持该设备设备扫描阶段VxBus 自动调用attach()初始化设备、注册中断、创建设备节点probe OK 之后VxBus 自动调用你从不手动调用 probe 或 attach。
2025-11-20 18:18:30
44
原创 hwconf → vxbDev → 驱动
下面我把和 *hwconf.c 中 Resources[] 的 { “regBase”, HCF_RES_INT, {(void)BASE} }之间的关系,用。
2025-11-20 17:39:59
27
原创 vxbDev
vxbDev 就是 VxBus 的“设备对象(Device Object)”Linux 里的或Windows 驱动的 DEVICE_OBJECT当 VxBus 识别一个设备(如 PCI、串口、FPGA 等),就会创建一个vxbDev实例,驱动只需要通过这个结构与系统交互。vxbDev 是 VxBus 中描述“一个设备”的核心数据结构,其作用包括:标识设备的信息(名称、编号、父总线)保存硬件资源(BAR 地址、中断信息)存储驱动自己定义的控制块(pDrvCtrl)管理设备访问接口。
2025-11-20 15:41:14
165
原创 设备驱动程序的运行环境和行为规则
设备驱动程序在操作系统中的运行特点:它在调用者任务上下文中执行,阻塞会导致调用任务同步阻塞。驱动程序拥有高权限,可临时切换任务模式并能调用各类系统服务。其触发来源包括应用程序和硬件中断服务程序。操作系统通过I/O管理为驱动程序提供标准化框架,但不干预具体实现细节。这种设计既确保了硬件访问的安全性,又给予厂商充分的实现自由度。
2025-11-19 16:24:44
656
原创 VxWorks 驱动程序开发中的两个非常重要的警告(有益的忠告)
不要从 sysHwInit() 内部调用 intConnect(),或者任何其他的调用 malloc() 的程序,因为内存分配库还没有被初始化,系统将会瘫痪。即使目的是为了调试,也要避免在驱动程序中使用 printf(),而使用 logMsg() 来代替。在驱动程序和 I/O 系统之间可能会有系统的交互作用,这可能会使 printf() 导致系统瘫痪。—— 低级日志输出,可以在中断/驱动安全使用。VxWorks 的硬件初始化有。
2025-11-19 14:57:25
380
原创 AXI_timer相关
寄存器作用控制 & 中断状态(TINT 是写1清除)TLR (0x04)装载值(定时器周期)TCR (0x08)当前计数值。
2025-11-19 09:31:59
926
原创 对象字典在Ethercat的通信帧中是怎么体现的
层级说明在 EtherCAT 帧中体现方式应用层对象字典(OD)定义所有通信变量(Index/SubIndex)CoE 子协议SDO / PDO将对象字典条目转化为数据访问方式Mailbox 层CoE Mailbox 数据包SDO 访问、紧急对象传输过程数据层EtherCAT Data Frame Process Data 区PDO 周期性更新数据。
2025-10-13 20:51:16
923
原创 PROFILE(配置文件/内核构建配置模板)
你问到的这些(配置文件/内核构建配置模板),其实是里预定义的一组“系统特性组合”。它们就像“打包好的配置方案”,可以快速选择一类典型使用场景。
2025-10-04 13:02:27
292
原创 驱动器寻找起始位置
通过合理配置限位开关、零点开关和编码器Z相,可实现高效高精度的回零操作,为运动控制系统建立可靠的绝对坐标基准。驱动器寻找起始位置(回零/寻参)的过程是通过。
2025-08-06 11:32:12
1278
原创 步进电机和步进伺服支持的7种工作模式
CNC机床X轴寻零:快速撞向限位开关 → 减速回退 → 锁定编码器Z相脉冲。机械臂移动到坐标X=1000mm处,运动过程由驱动器本地规划。六轴机器人画圆弧:主站实时计算各关节位置,驱动器严格同步执行。印刷机:主辊编码器实时反馈速度,从动辊按1:1.2速比同步。注塑机顶针动作:主站故障时自动执行"顶出→延时→退回"序列。传送带以300RPM恒速运行,遇阻时驱动器自动补偿扭矩。薄膜卷绕机保持5Nm恒定张力,随卷径增大自动降低转速。
2025-08-06 11:24:58
1154
原创 EtherCat状态机
EtherCAT 状态机(State Machine)是从站设备(Slave)的核心控制逻辑,定义了设备在不同状态下的行为及状态转换规则。状态转换由主站(Master)通过。(0x0010 寄存器)触发,确保设备安全、有序地初始化、配置和运行。掌握 EtherCAT 状态机是构建高可靠性实时系统的基石,正确使用状态转换可确保设备在安全框架下发挥最大性能。IB 启动Bootstrap。可观察状态转换命令(如。SI 停止输入+邮箱。
2025-08-06 11:12:55
1501
原创 EtherCAT 的寻址方法: 顺序寻址(Positional Addressing)、节点寻址(Node Addressing)
通过这两种寻址方式,EtherCAT 可以灵活适应不同应用场景的需求,同时保证实时性和高效性。如果需要更具体的配置示例或协议细节,可以进一步探讨!这两种方法用于在 EtherCAT 网络中唯一标识从站设备(Slave),以便主站(Master)能够准确发送和接收数据。复杂网络拓扑或需要固定地址的设备(如分布式时钟同步设备)。适用于简单的线性拓扑,如伺服驱动器、I/O 模块等。决定,类似于“菊花链”拓扑中的位置编号。(如拨码开关、EEPROM 存储)或。EtherCAT 子报文中的。
2025-08-06 10:53:25
769
/455/src/455.c【Linux开发环境搭建】Ubuntu 22.04安装Eclipse及C工程创建与编译配置:Java JDK依赖与工具链设置详解
2025-07-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅