- 博客(201)
- 资源 (4)
- 收藏
- 关注
原创 VMware 虚拟机中 Ubuntu 20.04 网络连接异常排查修复全记录
本文详细记录了VMware虚拟机中Ubuntu2004下网络连接异常问题的排查、修复过程。
2026-09-03 06:40:42
3305
原创 基于 ESP-IDF 5.2 + LVGL 8.4 + MVL 0.1.0 实现带UI的 wifi 扫描
LVGL 8.x 不是线程安全的,多任务直接调用 lv_*() 易致 HardFault 与画面撕裂。本文以一个真机跑通的 WiFi 扫描 Demo 为例,讲解如何基于 ESP-IDF 5.2 + LVGL 8.4 + MVL 0.1.0 落地「单写者原则」:后台任务经消息队列 与事件总线投递状态,LVGL 主任务统一消费并刷新界面;接线关系以 YAML 为唯一 事实源,骨架代码由 mvl-gen 生成且手写代码不丢。读完可复现一个 UI 不阻塞、 线程不踩线的完整工程。
2026-09-02 08:59:22
8656
原创 (八)LVGL 8.3.11 移植与应用实战:图片解码 —— 格式、缓存与性能
图片解码(格式、缓存与性能) lv_img 统一走 lv_img_decoder 接口(info/open/read_line/close),按行解码避免整图驻留 RAM。
2026-09-01 07:12:22
5119
原创 (七)LVGL 8.3.11 移植:字库系统 —— 原理、转换与动态加载
字库系统(原理、转换与动态加载) 字体本质是字模位图 + glyph_dsc 描述表(bpp 灰度、kerning、Unicode 映射),内置 Montserrat 不含汉字。核心矛盾是 Flash 占用:GB2312 全集 24px/bpp4 约 2MB 超出 F429 的 1MB Flash。对策三条:裁剪字符集,用在线转换器或 lv_conv;bin 放 SD 卡经 lv_font_load() 加载;或启用 FreeType。
2026-09-01 07:10:06
4546
原创 (六)LVGL 8.3.11 移植:性能优化、抗锯齿与内存管理
性能优化、抗锯齿与内存 先用 LV_USE_PERF_MONITOR/LV_USE_MEM_MONITOR 量化瓶颈再优化。DMA2D 加速可降 CPU 30%~60%(F429 无 D-Cache;F7/H7 需在 flush 前清 Cache)。抗锯齿:LV_ANTIALIAS 默认开、字体 bpp=4,慎用阴影与大圆角,图片避免运行时缩放。内存管理推荐 LV_MEM_ADR 把 TLSF 堆搬到 SDRAM(避开帧缓冲并对齐),关注碎片率(<30%)甚于已用量,配合控件复用、隐藏代替删除。
2026-09-01 07:06:49
4863
原创 (五)LVGL 8.3.11 移植:FreeRTOS 操作系统适配
FreeRTOS 操作系统适配 LVGL 非线程安全,推荐"全局互斥锁"路线:用 xSemaphoreCreateMutex 创建 GUI 互锁(自带优先级继承,不能用二值信号量),任何 lv_* 调用(含 lv_timer_handler())都必须持锁。时基用 HAL_SYSTICK_Callback 喂 lv_tick_inc(1) 或 LV_TICK_CUSTOM 配 xTaskGetTickCount();利用 lv_timer_handler() 返回值动态延时并钳位 5~20ms。
2026-09-01 07:01:32
6116
原创 (四)LVGL 8.3.11 移植:文件系统适配 —— FatFS 与 SD 卡
文件系统适配(FatFS 与 SD 卡) 利用 lv_fs_drv_t 抽象层把 open/close/read/seek 等回调桥接到 f_open/f_read/f_lseek 等 FatFS API,盘符(如 "S:/")仅用于路由。关键细节:FIL 句柄须用 lv_mem_alloc 动态分配以支持并发;seek 需自行换算 CUR/END 偏移;多任务下必须开启 FF_FS_REENTRANT 并实现互斥锁。建议 SD 卡用 SDIO 4bit 模式。
2026-09-01 06:57:44
4550
原创 (三)LVGL 8.3.11 移植:触摸输入移植 —— GT9147 与 lv_indev
触摸输入移植(GT9147 与 lv_indev) 输入抽象为 lv_indev_drv_t(POINTER/KEYPAD/ENCODER/BUTTON),只需实现 read 回调,LVGL 按 30ms 周期调用。
2026-09-01 06:54:00
3846
原创 (二)LVGL 8.3.11 移植:显示子系统移植 —— LTDC + DMA2D
显示子系统移植(LTDC 与 DMA2D) 核心思路:LVGL 渲染脏区域,LTDC 免 CPU 扫描 SDRAM 帧缓冲,DMA2D 负责搬运与混合。给出 RGB 屏时参数(像素时钟 25~33MHz、RGB565)与 LTDC 层配置,对比三种缓冲模式:单缓冲阻塞拷贝、双局部缓冲(中断中调 lv_disp_flush_ready())、以及推荐的全屏双缓冲 + full_refresh + HAL_LTDC_SetAddress 地址翻转——借影子寄存器在 VSYNC 生效,结构性杜绝撕裂且零拷贝。
2026-09-01 06:49:28
4231
原创 (一)LVGL 8.3.11 移植:总览
STM32F429 移植 LVGL8.3.11系列总览篇,面向 STM32F429IGT6 + 800×480 RGB 屏 + SDRAM + SD 卡 + FreeRTOS 平台。
2026-09-01 06:41:19
2817
原创 [行业话谈] 图片拼接&OCR识别-扫读笔的底层技术
本文简单分析了扫读笔(词典笔)的两大核心技术:图片拼接与 OCR 文字识别。内容涵盖:从早期扫描翻译笔、汉王 e 典笔到有道、讯飞词典笔的发展脉络;笔头窄视窗连拍与多帧拼接的原理、配准融合算法及工程要点;OCR 从传统切字分类到 CRNN+CTC 深度学习范式的全链路;以及关键指标、与点读笔 OID 的路线对比和产业格局。
2026-08-30 10:43:15
5527
原创 PCB 设计中的「五五原则」简析
以硬件工程师视角,系统分析经典经验法则——时钟频率 ≥ 5 MHz 或上升沿 ≤ 5 ns 即须采用多层板设计。文档从四个维度展开:原理(边沿决定带宽 f_knee=0.5/tr、传输线判据 l_crit=tr·v/6≈12 cm、高频回流路径与两个"5"的自洽性);应用(判域决策流程与高速板、低速快沿板、开关电源、EMC 整改四类案例);工具(阻抗计算、SI/EMC 仿真、示波器与近场探头实测);实践(推荐叠层、端接策略、12 项检查清单与常见误区)。
2026-08-30 10:24:43
2966
原创 PCB 设计中的 3W原则 简析
以硬件工程师的视角,分析 PCB 设计中的 3W 原则——两条信号线边缘间距不小于 3 倍线宽,以抑制线间串扰。文档从四个维度展开:原理层面剖析容性/感性耦合机制,阐明约 70% 电磁场集中于走线下方 3W 区域、3W 正是串扰抑制与布线密度的工程拐点;细节层面澄清"边缘距而非中心距"等六大要点;应用层面给出低速/高速/时钟/RF 的分级间距策略;工具层面覆盖 Altium、Allegro、KiCad 规则设置与仿真验证;实践层面提供落地流程、DDR3 实战案例与审查清单。
2026-08-29 11:15:20
3637
原创 PCB 设计中的 20H原则 简析
以硬件工程师视角,分析PCB 设计中的 20H 原则:电源平面边缘应相对地平面内缩 20 倍介质厚度(20H),以约束平行板结构的边缘场辐射,可抑制约 70% 边缘辐射、改善 EMI。全文从四维度展开:原理(贴片天线模型与量化依据)、应用(场景判断与 4/6 层叠层落地)、工具(EDA 内缩操作与 SIwave 仿真验证)、实践(六步流程、检查清单、6 层板完整设计示例)。
2026-08-29 10:48:15
3995
3
原创 [行业话谈] OID —— 点读笔的底层技术
聊一聊 OID(光学辨识码/区域码)技术,即点读笔"点哪里、读哪里"的底层原理。内容涵盖:点读技术从LeapPad到中国点读机市场的发展历程;"虚拟网格+墨点偏移"的编码、隐形印刷、识别解码与区域映射全链路;OID1至OID3及新一代SoC读取头的迭代脉络;专利三层格局、关键技术指标与对比。
2026-08-27 23:17:36
6364
原创 Linux Framebuffer 设备驱动机制简析
面向嵌入式 Linux fbdev 的结构化简析:从整体架构到内核实现细节,从应用编程到驱动编写,覆盖设备树(Device Tree)时代到 Linux 6.x 的关键演进节点。
2026-08-27 20:07:48
6106
原创 Linux INPUT 子系统简析(应用与驱动双视角)
INPUT 子系统是 Linux 对键鼠、触摸屏、手柄等"人机输入设备"的统一抽象框架,采用"设备驱动层 — Input 核心层 — 事件处理层"三层架构。驱动侧只需分配并注册 `struct input_dev`、调用 `input_report_*()` 上报事件;应用侧统一通过 `/dev/input/eventX` 读取 `struct input_event` 并使用 ioctl 查询/控制设备。本文从应用与驱动双视角,先整体讲解架构与事件模型,再深入数据结构、核心 API、设备树结合等。
2026-08-20 08:09:09
6626
原创 常见嵌入式操作系统中的软件定时器机制
系统梳理常见嵌入式操作系统中的软件定时器机制。从时间管理数据结构、回调执行上下文、触发模式、时钟驱动方式四个维度,归纳有序/增量链表、时间轮、红黑树、跳表、守护任务投递、tickless 等通用实现机制,对定时计数绕回(tick wraparound)这一共性隐患做专门分析;逐一详解 Linux、FreeRTOS、μC/OS-II、μC/OS-III、RT-Thread、Zephyr、ThreadX、NuttX、LiteOS、AliOS Things(Rhino)共 10 种操作系统。
2026-08-11 07:47:36
7927
原创 sx_opus2wav 开源项目分析
sx_opus2wav 是一个基于 opuslib/libopus 的轻量级 Opus ↔ WAV 双向转换工具,提供 CLI 与 tkinter GUI 双形态。其核心差异化在于面向嵌入式设备导出的非标 Opus 数据(简单分帧流、纯裸流),而非仅支持标准 OGG 容器。项目围绕 ogg / framed / raw 三格式模型组织,具备 PLC 丢包隐藏、自实现 RFC 7845 OGG 封装、8 用例 md5 基线回归测试等亮点,协议理解扎实、工程质量在线。
2026-08-11 00:11:30
14478
原创 Linux MISC(杂项设备)驱动框架 简析
系统解析 Linux MISC(杂项设备)驱动框架。先从应用与驱动两个视角给出整体架构;后深入核心机制;逐字段剖析 `struct miscdevice`,并给主要 API 的原型、示例与注意事项;讲解 misc 与 **platform 设备驱动框架**及**设备树**的结合方式;覆盖从设备树时代(3.x)到 6.x LTS 的版本演进关键节点;提供“设备树 + platform 驱动 + misc 设备”的完整驱动与应用示例。
2026-08-05 08:01:38
9648
原创 常见嵌入式操作系统中的内存管理机制
本文系统化梳理嵌入式操作系统中的内存管理机制。先从整体上归纳四大类常见机制——静态内存分配、动态内存堆、固定块内存池、虚拟内存与保护,并分析碎片、实时确定性、对齐、统计诊断等跨切关注点。后逐一详解 Linux、FreeRTOS、μC/OS-II、μC/OS-III、RT-Thread、Zephyr、ThreadX、NuttX、LiteOS、AliOS Things 十个主流系统的内存管理接口与实现要点,最后给出跨系统接口对比表、硬件支撑分析与选型建议,供嵌入式开发者选型与设计参考。
2026-08-04 07:06:06
8132
原创 Linux Platform 设备驱动框架 简析
本文从应用层与驱动层双视角,系统梳理 Linux Platform 设备驱动框架的完整架构、核心机制、版本演进及关键 API。覆盖从 2.6 框架诞生到 6.x 内核的关键里程碑,包含设备树(Device Tree)集成、匹配机制、资源管理、生命周期管理等核心内容,并附完整代码示例与最佳实践。
2026-08-04 06:55:54
7416
原创 Linux 异步通知机制(fasync / SIGIO)简析
本文从应用层与驱动层双视角,系统讲解 Linux 异步通知机制(Signal-Driven I/O)的原理、API 用法与实现细节。内容覆盖从 Device Tree 引入(2.6.x/3.x)到 6.x 内核的关键演进节点,包含完整的应用示例、驱动示例、架构图示及版本差异对照,适用于嵌入式驱动开发与系统编程参考。
2026-08-03 07:54:37
8033
原创 Linux 阻塞与非阻塞 IO 机制简析
本文从应用层、驱动层、内核层三个维度,系统梳理 Linux 阻塞/非阻塞 IO 的设计哲学、实现机制与版本演进。覆盖从 Kernel 3.x(设备树时代)到 6.x(io_uring 时代)的关键版本节点,深入解析五种 IO 模型的本质差异、内核等待队列与调度器的协作关系,以及 io_uring 带来的统一异步革命。全文附完整 API 参考、可编译示例代码与生产注意事项。
2026-08-03 07:47:41
8307
原创 Linux 中的 gpio 子系统
系统讲解 Linux GPIO 子系统(gpiolib):先给出整体架构(提供者/消费者两条主线、与 pinctrl 的关系、内核态与用户态两类接口),再按 2.6.x → 6.x 梳理关键版本演进节点,随后深入解析核心数据结构、控制器驱动与消费者驱动 API、设备树绑定、GPIO 中断(chained/hierarchical irqchip)、用户空间字符设备接口与 libgpiod 工具链,最后给出调试手段、常见误区与最佳实践。全文以 6.x 内核现状为准,兼顾历史版本差异说明。
2026-08-02 11:50:11
9088
原创 Linux 中断上半部与下半部机制简析
本文先整体说明Linux 中断为什么要分两半,给出中断处理全景;再逐一分析上半部(request_irq、返回值与 IRQF 标志、genirq 框架、设备树时代的 irq_domain 中断映射)与下半部的四大机制(softirq、tasklet、工作队列、中断线程化);随后梳理从 2.4 到 6.12 的关键版本演进节点(genirq、threaded IRQ、cmwq、irq_domain、WQ_BH、PREEMPT_RT 主线化);最后给出机制对比表、选型决策树与调试观测手段。
2026-07-31 07:36:00
10023
一个真机跑通的 基于 ESP-IDF 5.2 + LVGL 8.4 + MVL 0.1.0 的 WiFi 扫描 Demo
2026-09-02
ESP32S3 + IDF5.2.2 + LVGL + ST7789 + xpt2046 驱动LCD 屏幕 Demo
2024-12-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅