自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

“Struggle”的博客

随心所欲,不逾矩

  • 博客(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

原创 deb 文件打包

deb包打包拆包步骤及相关学习资源,dpkg等常用命令

2026-05-25 16:45:19 48

原创 【u-boot 提交 Patch 标准流程】

U-Boot community Patch 提交流程总结

2026-05-18 17:08:50 405

原创 【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

原创 Linux Device Drivers-第六章 高级字符驱动操作

书籍阅读总结

2026-04-22 17:46:42 428

原创 基于whiptail开发shell导航工具

本文结合实际工程经验,系统总结 **如何用 whiptail 设计一个“可回退”的交互式界面框架**,以及几个经常踩的坑。

2026-04-17 10:36:03 420

原创 【mermaid 语法快速入门】

mermaid 绘图语法及示例总结,含最常用的流程图,状态图绘图语法技巧。

2026-04-15 09:34:46 491

原创 安装 Ollama

Ollama - LLM本地部署开源平台, 介绍Linux与Windows上安装Ollama的过程记录。

2026-04-14 09:45:19 448

原创 LangChain & LangGraph 学习记录

总结因项目需要学习LangChain已经LangGraph的要点和代码实例。如果后续需要可继续补充,降低回忆成本。

2026-04-13 22:18:22 419

原创 Python学习记录

记录项目需要学习Python的知识点总结,包括从环境配置到语法到包的使用等等,减小回忆成本。

2026-04-13 21:42:13 441

原创 Docker入门

因为项目需要,跟着教程系统学习了Docker的使用,增加了自己的理解和总结。需要的时候可以回顾,补充内容。

2026-04-13 21:27:31 443

原创 智能研发体系

智能研发体系: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

原创 Bitbucket 添加 ssh 密钥

很简单,首先设置用户名及邮箱,然后生成公钥及私钥,然后将公钥提交到bitbucket,就结束啦。

2026-03-02 09:57:46 355

原创 操作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

原创 strtoul函数

将字符串转换为无符号长整型整数值

2026-02-26 21:31:13 61

原创 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

原创 Git 实用操作指南

个人Git使用总结

2026-02-26 21:06:51 362

原创 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-IGH DC 时钟(未完待续)

IGH DC 时钟介绍

2026-02-26 20:56:13 644

原创 EtherCAT 报文结构 寻址方式

分析介绍了EtherCAT的报文结构,以及不通的寻址方式对应的address 32bit的不通解析方法。

2026-01-14 08:48:12 578

原创 EtherCAT 驱动控制系统控制协议及方式

EtherCAT驱动控制系统分为 控制端 和 驱动端,控制端一般为EtherCAT master(控制器), 驱动端一般为被控设备,比如EtherCAT slave。下图是EtherCAT总线的基本架构,EtherCAT被多数机器人以及伺服电机厂家作为基本通信总线。EtherCAT Master为控制端,Master通过解析ESI文件来获得要驱动电机的基本参数。ESI文件由从站的供应商提供(比如你买了个汇川伺服电机,就得找他要对应的XML文件)。

2026-01-13 09:12:15 1536 2

原创 Zephyr 的 Counter alarm

区别在于里的flags和ticks的含义。

2025-12-11 17:05:33 309

原创 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关注的人

提示
确定要删除当前文章?
取消 删除