- 博客(134)
- 收藏
- 关注
原创 【Qt,OpenGL, RHI,Wayland 等概念梳理】
本文摘要主要对比了GLX与EGL的关系及其应用场景,并分析了OpenGL与RHI在图形渲染中的角色差异。 GLX与EGL GLX:专为X11设计的接口,仅支持OpenGL,用于传统桌面环境(依赖CPU软渲染)。 EGL:跨平台接口,支持OpenGL/ES,适用于Wayland、DRM等场景(支持硬件加速)。两者分工明确,EGL更现代且通用。 显示系统验证 通过环境变量($DISPLAY/$WAYLAND_DISPLAY)和工具(glmark2-es2-wayland/xdpyinfo)可检测当前运行的显示系
2026-06-13 12:04:57
363
原创 Linux Device Drivers-第十章 中断处理
这章介绍了中断的原理,中断上半部及下半部机制。教你如何在驱动程序中注册及使用中断,结合实际代码介绍中断处理程序的实现标准。以及如何在文件系统中通过/proc/interrupts和/proc/stat接口监控你注册的中断,快速识别异常中断。提到了两种中断底半部机制。最后介绍了一个打印机写缓冲区用到中断的示例。并结合Linux的发展介绍了书中过时的内容及趋势。
2026-05-28 17:48:38
435
原创 【Linux Device Drivers-第九章 与硬件通讯 I/O端口,I/O内存】
本章讲解设备驱动程序中,操作外设寄存器的方法,介绍了I/O端口的来历,以及过时的部分。当然最广泛的还是I/O内存。最后介绍了现代内核标准I/O操作规范(申请 -> 映射 -> 访问 -> 释放)及相关API接口,必要时增加内存屏障来保证读写顺序符合硬件时序要求。
2026-05-28 17:23:49
458
原创 Linux Device Drivers-第八章 内存分配
从最常用的kmalloc的特性讲起,后讲到如何申请cache告诉缓存,以及在不允许失败的情况下使用的内存池,了解伙伴系统为了实现分配必须连续的大内存,最后讲到 per-CPU 的变量的原理和使用方法。
2026-05-28 16:33:22
415
原创 【Linux 用户态操作 UART】
Linux用户态操作UART串口可通过stty、minicom和screen等工具实现。关键步骤包括:1)使用stty配置串口参数,区分原始模式(raw)和规范模式(sane);2)建议配合Windows端串口工具(如XCOM)进行测试;3)注意RS485通信应使用raw模式以避免数据截断。特别提醒:echo命令默认带换行符,且Linux终端可能自动回显数据,建议优先使用专用串口测试工具。
2026-05-17 20:15:26
449
原创 【Linux PL011驱动支持RS485】
本文介绍了UART硬件流控RTS/CTS的原理及其在RS485通信中的应用。主要内容包括: RTS/CTS流控机制:通过硬件信号控制数据传输,防止缓冲区溢出导致数据丢失 RS485通信的两种实现方法: 方法一:使用独立GPIO控制方向引脚,需应用层代码控制时序 方法二:利用Linux PL011驱动原生支持RS485,通过RTS引脚自动控制方向,简化开发 具体配置方式: 设备树配置:通过DTS节点使能RS485模式 用户态配置:使用ioctl系统调用设置RS485参数 重点分析了方法二的优势:驱动层精确控制
2026-05-16 21:46:03
515
原创 【systemctl 学习总结】
自己的学习总结,从最基础的 status 命令开始,从与systemd基础一路过关斩将,到自己编写 Unit file,甚至到理解了依赖编排和日志排查。掌握 systemctl 不仅仅是学会了一组命令,更是你从“Linux 用户”向“系统管理者”进阶的重要一步。从“能查状态” → “能写服务” → “能设计启动流程”。
2026-05-02 18:38:04
463
原创 Linux Device Drivers-第七章 时间, 延迟及延缓操作
让我门看看内核代码是如何对时间为题进行处理的,并按由简到难的顺序逐步讨论,包括:①如何衡量时间差,②如何获得当前时间,③如何将操作延迟一段时间,④如何调度异步函数到指定的时间之后执行。
2026-04-22 17:50:35
437
原创 基于whiptail开发shell导航工具
本文结合实际工程经验,系统总结 **如何用 whiptail 设计一个“可回退”的交互式界面框架**,以及几个经常踩的坑。
2026-04-17 10:36:03
420
原创 LangChain & LangGraph 学习记录
总结因项目需要学习LangChain已经LangGraph的要点和代码实例。如果后续需要可继续补充,降低回忆成本。
2026-04-13 22:18:22
419
原创 智能研发体系
智能研发体系:AI驱动的软件开发新范式 摘要:软件开发已从传统线性流程转变为AI驱动的智能研发体系。该体系包含五大核心环节:1) 需求分析阶段,AI将模糊意图转化为结构化需求模型;2) 架构设计环节,AI自动生成并验证技术方案;3) 编码实现由多智能体协作完成,开发者转向复杂逻辑攻关;4) 测试质量保障转变为持续自愈机制;5) 运维部署实现智能化决策与自愈。人类角色从执行者转变为审核者,专注于战略决策、复杂问题解决和情感化设计。该体系显著提升了沟通效率、开发质量和系统稳定性,但仍需人类把控业务本质和战略方向
2026-03-25 15:58:25
439
原创 网桥搭建与iperf使用
详解网桥原理自学习机制,总结了如何用ip link相关命令管理网桥。如何使用iperf来测试流量。汇总了自己的思考与注意事项。
2026-03-14 17:58:17
442
原创 用 DeepWiki 帮你看源码
将deepwiki生成的源代码分析文档转换到你自己的静态站点DeepWiki 这类工具的出现,标志着软件开发正从 “读代码” 迈向 “问代码”动手试试吧访问用 DeepWiki 输入链接,问它:“如何让 nanobot 每天早上给我发天气预报?看它如何引导你配置 Heartbeat + 天气技能。你会发现,理解一个 AI 项目,从未如此简单。
2026-03-02 15:19:54
664
原创 操作eMMC,SD等MMC设备
本文介绍了在U-Boot和Linux系统中操作eMMC/SD等MMC设备的方法。U-Boot提供了一系列mmc命令,包括info、read、write、erase等,用于查看设备信息、读写数据、擦除扇区等操作。文章详细说明了各命令的用法和参数含义,并特别提醒不要误操作关键扇区。Linux系统中可通过/sys/kernel/debug/mmc目录查看设备状态信息,包括时钟频率、电压、总线模式等参数。文中还提供了实际示例,帮助开发者正确使用这些命令进行设备管理和维护。
2026-02-27 10:21:22
642
原创 getrlimit/setrlimit 及 实时优先级
getrlimit和setrlimit管的是进程的 "行为上限"。RLIMIT_RTPRIO专门管进程的 “实时优先级”(就是实时进程的优先级)
2026-02-27 10:13:41
625
原创 zephyr段错误调试
这个地址非常小,通常意味着把一个空指针(0)当作对象基址,然后去取其结构体中偏移为 0x64 的成员(例如。,member 在结构体内偏移 0x64),结果目标物理地址就是 0x64,从而触发了 Data Abort。ISS 的低位是 DFSC(故障状态码)。不用死扣具体位含义,配合 FAR(下面)更直观。结合 FAR,可理解为访问了 未映射/非法地址(常见于空指针解引用导致的读/写)。:异常的“综合症”寄存器,细分出异常类型与其它细节。(CPU 正在读/写的内存地址)。(正常的 A64 指令)。
2026-02-26 21:45:00
193
原创 zephyr条件宏 Z_COND_CODE_0 与 IF_ENABLED
介绍zephyr中条件宏COND_CODE_0与IF_ENABLED的使用及其注意事项
2026-02-26 21:42:58
181
原创 zephyr内存管理之slab
本文详细介绍了Zephyr RTOS中的Slab内存管理机制。Slab是一种固定大小内存块分配器,具有分配释放速度快、无内存碎片、实时性好等特点。文章阐述了Slab的工作原理(基于连续内存缓冲区和空闲链表)、两种初始化方式(静态和动态)、基本使用方法(分配/释放API),以及缓存属性与对齐要求等关键特性。最后总结了Slab的优缺点,指出它特别适合实时系统中频繁分配/释放固定大小内存的场景。Slab通过预分配固定大小内存块和链表管理,实现了高效确定性的内存管理。
2026-02-26 21:37:13
466
原创 YAML语法规则
Zephyr和Linux生态中的YAML文件在基础语法上完全一致,都遵循YAML通用规则,如缩进表示层级、键值对格式等。核心差异在于语义和应用场景:Zephyr的YAML主要用于嵌入式开发(如测试用例、硬件配置),字段定义围绕Zephyr工具链;而Linux生态的YAML应用更广泛(如容器编排、CI/CD),内容取决于具体工具(如Docker、Kubernetes)。两者语法相同但字段含义和解析工具完全不同,需分别学习其语义规则。
2026-02-26 21:26:58
528
原创 有限状态机FSM之 Moore 状态机与 Mealy 状态机
FSM状态机核心概念与实现 摘要:有限状态机(FSM)包含状态(State)、事件(Event)、动作(Action)和转换(Transition)四大要素,主要分为Moore和Mealy两类。Moore状态机的输出仅依赖当前状态(Output=f(State)),而Mealy状态机的输出同时依赖状态和输入(Output=f(State,Input))。文章通过C代码示例展示了两种状态机的实现差异。
2026-02-26 21:21:01
280
原创 HTTP协议介绍
HTTP协议是Web浏览器与服务器间通信的基础协议。文章首先介绍了OSI七层网络模型和TCP/IP四层模型的关系,指出HTTP是基于TCP的应用层协议,负责定义数据传输格式,而TCP提供可靠的传输保障。然后详细解析了HTTP/1.1协议,包括请求格式(请求行、请求头、请求体)和响应格式(响应行、响应头、响应体),重点说明了常见方法、状态码和头部字段的作用。并提供了代码实现。
2026-02-26 21:15:46
614
原创 FastAPI 快速入门
本文介绍了FastAPI框架的基础知识及使用方法。FastAPI是一个基于Python的现代异步Web框架,需要配合ASGI服务器(如Uvicorn)使用。文章详细讲解了HTTP协议中GET和POST方法的区别,并通过示例代码演示了如何快速创建FastAPI项目、定义路由接口(GET/POST/PUT/DELETE)以及实现路由分发。还展示了如何通过Request对象接收请求参数,使用Fastman工具进行接口测试。FastAPI具有自动生成交互式文档的特性,适合快速开发高性能API服务。
2026-02-26 21:02:46
729
原创 EtherCAT 驱动控制系统控制协议及方式
EtherCAT驱动控制系统分为 控制端 和 驱动端,控制端一般为EtherCAT master(控制器), 驱动端一般为被控设备,比如EtherCAT slave。下图是EtherCAT总线的基本架构,EtherCAT被多数机器人以及伺服电机厂家作为基本通信总线。EtherCAT Master为控制端,Master通过解析ESI文件来获得要驱动电机的基本参数。ESI文件由从站的供应商提供(比如你买了个汇川伺服电机,就得找他要对应的XML文件)。
2026-01-13 09:12:15
1536
2
原创 IP 混叠
IP混叠与网络配置摘要 IP混叠(IP aliasing)允许在单个网络接口上配置多个IP地址,使设备能同时参与不同网络或提供多个服务。Linux支持通过ip addr add命令添加混叠IP,而U-Boot仅支持单一IP。服务器可通过混叠IP与开发板在同一子网通信,注意会议一下子网划分(CIDR表示法)和ARP协议知识点。
2025-12-11 13:45:10
1062
原创 【git rebase 合并分支】
演示了如何通过git rebase -i命令将debug分支上的4个commit合并为1个patch并附加到feature分支上。具体步骤包括:确定共同祖先作为基准点,在交互式rebase界面使用reword和squash命令合并commit,以及修改最终的提交信息。整个过程都在vim编辑器中完成,并提供了放弃变基的操作方法。
2025-11-28 08:48:25
695
原创 Linux 工具: libgpiod 工具控制 GPIO
libgpiod 是 Linux 标准 GPIO 控制库,提供命令行工具和 C 接口。通过 gpiodetect 识别控制器,gpioinfo 查看引脚状态。使用 gpioset 控制输出电平(如 gpioset gpiochip1 0=1),gpioget 读取输入,gpiomon 实时监测电平变化。需内核启用 CONFIG_GPIO_CDEV 支持中断等高级功能,适用于嵌入式开发和硬件调试。
2025-11-27 08:50:41
373
原创 strtok strchr strcspn 解析字符串优略
本文介绍了C语言中字符串分割的几种方法。首先详细讲解了strtok函数实现方法,指出它会直接修改原字符串内存的副作用。通过代码示例展示了strtok的使用及常见问题(如分隔符字符串缺少终止符的问题)。接着提出了两种保持原字符串完整的分割方法:使用strchr和sscanf组合,以及使用strcspn函数。两种替代方法都通过示例代码展示了其实现原理和优势,避免了strtok破坏原字符串的问题。文章最后还比较了不同方法的特点,为需要保持字符串完整性的场景提供了实用的解决方案。
2025-11-26 10:01:32
835
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅