自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 资源 (2)
  • 收藏
  • 关注

原创 Small SA(System Ability)开发详解

本文档基于OpenHarmony的IPC/RPC框架,详细介绍了Samgr Lite系统能力管理框架。主要内容包括:Samgr Lite的核心特性(服务注册、发现、跨进程通信等)和三层架构(Service-Feature-IUnknown);核心API详解,涵盖服务管理、Feature管理及接口获取等功能;服务端-客户端框架结构;开发示例及回调接口实现分析;权限管理与SA启动机制;常用数据结构使用方法;最后提供完整的SA开发模板。文档参考了OpenHarmony的samgr_lite、ipc等核心模块实现,

2026-04-18 16:30:29 345

原创 OpenHarmony 移植 OpenSSH/sshd

摘要 本指南详细介绍了在OpenHarmony(OHOS)系统上移植OpenSSH/sshd的完整流程。使用musl工具链进行交叉编译,适用于RK3506等ARM嵌入式设备。主要内容包括:1)环境准备和目录规划;2)zlib和OpenSSL依赖库的编译配置;3)OpenSSH的特殊编译参数设置(如解决OHOS权限问题);4)二进制文件部署和配置生成;5)常见问题解决方案。整个过程采用静态链接方式,确保在OHOS系统上无动态库依赖运行。特别针对OHOS系统的权限模型进行了适配,提供了完整的调试和部署方案。

2026-04-07 19:59:04 414

原创 RTOS 中断抢占过程分析

从任务 A 运行中触发中断,到任务 B 执行,整个过程的本质,就是硬件兜底 + 软件精准控制 + RTOS 安全调度硬件层:NVIC 负责中断仲裁,CPU 自动完成核心上下文的保存,保证中断的微秒级响应;软件层:ISR 严格遵守极简原则,只做必要的硬件处理和任务唤醒,不越界操作;RTOS 层:通过最低优先级的 PendSV,解耦中断处理和任务切换,保证在绝对安全的时机,完成任务上下文的保存与恢复。

2026-02-26 14:28:32 696

原创 Linux 进程间通信(IPC)之信号

信号本质:内核向进程发送的异步软中断,是最轻量的 IPC 机制,仅传递事件标识,无复杂数据传输能力;核心 API注册函数:优先使用(健壮、可配置),避免signal()(兼容性差);kill()(跨进程)、alarm()(定时器)是最常用的信号发送方式;(屏蔽信号)、(查询未决信号)用于精细控制信号生命周期;典型场景:进程控制、异常处理、超时控制、异步通知是信号最核心的使用场景,尤其适合需要 “异步事件触发” 的场景。

2026-02-11 16:04:25 455

原创 嵌入式 Linux 交叉编译浅谈

本文系统讲解嵌入式Linux编译的核心要点,包括交叉编译工具链的组成与选型(GCC vs Clang)、内核与应用编译的异同(配置方式、工具链调用、链接方式等)、多架构编译实战(ARM32/ARM64/RISC-V)以及常见问题排查。重点剖析了内核无需显式指定gcc的原因、动态与静态链接的选择策略,帮助开发者建立完整的编译认知体系,从理论到实操全面掌握嵌入式Linux编译技能。

2026-02-11 13:38:03 511

原创 MCU单总线通信

STM32单总线通信方案采用开漏输出GPIO和外部上拉电阻实现硬件架构,支持4800bps速率。核心包括:1)总线空闲/忙状态双重侦听机制;2)固定11位帧协议(1起始+8数据+1校验+1停止);3)软件模拟4800bps时序的收发逻辑;4)CSMA/CD冲突检测和指数退避机制。方案强调精准微秒延时、偶校验和低位先行传输,确保在1米总线范围内实现可靠通信,无需专用外设,仅需通用GPIO即可完成。

2026-01-18 11:41:53 617

原创 深入理解 Linux 内核同步机制

摘要:Linux内核中的竞态问题源于多核并发、内核抢占和中断打断三个诱因,需满足共享资源和并发访问两个条件才会发生。原子操作是最基础的同步机制,包括原子整数操作(atomic_t)和原子位操作,通过不可分割的执行保证数据一致性。以设备引用计数为例,展示了atomic_t在驱动开发中的实际应用,确保资源管理的线程安全。

2026-01-15 21:29:41 731

原创 OpenHarmony SA服务开发详解

本文详细介绍了OpenHarmony系统中System Ability(SA)服务的开发流程与架构设计。主要内容包括: SA服务项目目录结构解析,涵盖services、frameworks/ipc、sa_profile等核心目录及其功能模块 Proxy/Stub模式的工作原理,包括Proxy代理类和Stub存根类的实现机制,以及跨进程通信的数据转换流程 关键配置文件说明,如SA服务配置文件(9512.json)、启动配置(hello.cfg)和权限配置(hello.para.dac) 构建系统配置,展示bu

2026-01-13 10:07:06 846 1

原创 OpenHarmony USB 耳机适配(基于 ALSA 方式)

本文档详细介绍了OpenHarmony系统中基于ALSA方式适配USB耳机的完整方案。系统采用分层架构设计,从应用层到USB音频设备共7层结构。重点分析了代码框架中的关键组件,包括音频服务层、策略服务层和PulseAudio框架的实现。详细阐述了USB耳机处理流程,涵盖设备检测、模块加载、录音会话管理等核心环节,并提供了关键代码示例。该方案通过设备状态监听、模块动态加载和端口管理机制,实现了USB耳机在OpenHarmony系统中的完整适配,为开发者提供了可参考的技术实现路径。

2026-01-07 10:36:32 894

原创 线程同步机制详解:C++ 互斥量

本文深入探讨了C++并发编程中的互斥量机制。在多核CPU环境下,并发编程虽然能提升性能,但会引发数据竞争、死锁等问题。互斥量作为基础同步原语,通过独占访问机制确保线程安全。文章首先通过经典自增案例展示了数据竞争问题,随后详细介绍了C++标准库中的互斥量类型,包括基础互斥量std::mutex及其RAII封装类std::lock_guard和std::unique_lock,并通过可运行代码示例演示了它们的使用方法和适用场景。重点分析了互斥量如何解决数据竞争问题,以及RAII机制如何自动管理锁生命周期避免死锁

2025-12-09 21:28:02 695

原创 ESP32-S3智能小车

本文介绍了一个基于ESP32-S3开发板的智能小车系统设计。该系统采用模块化架构,具备WiFi遥控、多模式运行(手动控制、跟随、循迹、避障)等功能。硬件部分详细解析了核心组件:ESP32-S3-MINI-1主控板、TB6612FNG电机驱动模块、5路红外循迹传感器和HC-SR04超声波传感器的技术规格及连接方式。软件设计采用分层架构,包括硬件抽象层、中间件层和应用层,提供了清晰的代码结构和扩展接口。项目实现了传感器数据融合与多模式智能控制,为嵌入式开发学习提供了完整的技术参考。

2025-11-22 17:55:33 1190

原创 C++ STL 核心:容器与迭代器解析

容器:负责 “存”—— 用统一接口管理不同数据结构,让开发者专注业务逻辑;迭代器:负责 “访”—— 用统一接口遍历不同容器,让算法与数据结构解耦;核心关系:容器提供迭代器,迭代器连接算法,三者共同构成 STL 的三大支柱。掌握容器的特性差异、迭代器的能力层次和失效规则,是写出高效、健壮 C++ 代码的关键。希望本文的解析和示例能帮助你彻底理解这两个核心组件,在实际开发中灵活运用,避开常见陷阱。如果有具体场景的容器选择困惑或迭代器使用问题,欢迎在评论区留言讨论!

2025-11-21 17:50:29 750

原创 DevEco Studio中C/C++ NAPI开发指南

本文详细介绍了在OpenHarmony开发中通过NAPI调用C/C++代码的完整流程。文章从NAPI架构的优势出发,对比分析了HAP应用调用框架层的多种方式,重点阐述了NAPI方案在性能优化、硬件访问等方面的独特性。通过LED控制实例,系统讲解了从项目结构设计到具体实现的完整链路,包括CMake配置、CAPI层实现、NAPI桥接层开发等关键技术环节。同时介绍了hilog日志集成、ETS调用方式以及调试技巧,为开发者提供了一套完整的OpenHarmony NAPI开发解决方案和最佳实践。

2025-11-05 16:45:31 1179

原创 ESP-IDF Hello World 启动流程与构建系统分析

本文档详细介绍了ESP-IDF构建系统的原理与架构。主要内容包括:1)工程结构分析,展示Hello World工程的目录组织和关键CMake配置文件;2)构建系统分层架构,重点说明project.cmake、idf.cmake等核心模块的功能;3)完整的构建流程解析,涵盖CMake配置阶段、组件依赖解析和Kconfig配置生成等关键步骤。文档通过清晰的流程图和模块说明,系统性地阐述了ESP-IDF从源码到固件的构建过程。

2025-11-01 11:41:41 929

原创 Linux性能分析:常用工具与指令

摘要:本文系统介绍了Linux性能分析的常用工具与方法,涵盖系统基础信息查看、进程线程分析、CPU亲和性配置三大维度。通过lscpu、free、vmstat等指令获取CPU、内存、磁盘I/O等硬件资源状态;利用ps、top等工具定位异常进程/线程的资源占用;结合实战示例演示如何分析性能瓶颈(如CPU过载、内存泄漏等)。文中详细解读各指令输出参数,提供典型场景下的排查思路,为运维和开发人员提供了一套完整的Linux性能优化解决方案,助力快速定位并解决系统性能问题。

2025-10-31 11:26:52 1020

原创 Docker使用详解:在ARM64嵌入式环境部署Python应用

Docker在ARM64嵌入式环境中的应用与优化 本文介绍了Docker容器技术在ARM64嵌入式环境中的应用优势和实践方法。主要内容包括:Docker在嵌入式系统中的轻量级优势,ARM64架构的高能效特点;常用Docker命令分类详解;Dockerfile构建优化技巧,特别是针对ARM64架构的多阶段构建策略;以及docker run命令中文件挂载和网络模式等关键参数的使用方法。文章重点强调了在资源受限的嵌入式设备上运行Docker时的注意事项,如镜像精简、资源分配和架构兼容性问题,为开发者在边缘计算场景

2025-10-27 16:58:22 1005

原创 ESP32 Linux 开发环境

本文详细介绍了在Ubuntu 20.04系统上搭建ESP32开发环境的完整流程。主要内容包括:安装必备工具链(Git、Python、CMake等);通过码云镜像加速ESP-IDF及子模块的拉取;使用esp-gitee-tools工具切换仓库地址;配置ESP-IDF工具链和环境变量;最后通过编译HelloWorld工程验证环境搭建成功。该指南针对国内开发者优化了网络访问问题,提供了从系统准备到环境验证的一站式解决方案,帮助开发者快速搭建稳定的ESP32开发环境。

2025-10-25 21:07:09 1468 2

原创 MCU 通用AT指令处理框架

本文提出了一种基于RTOS的通用AT指令处理框架设计,适用于各类嵌入式MCU系统。该框架采用模块化设计,包含AT客户端对象、URC处理机制和数据透传模式。通过类图展示了核心组件(at_client_t、urc_entry_t、at_cmd_state_t)及其交互关系,序列图详细描述了AT指令发送流程和URC处理流程。框架提供完整的AT指令通信能力,包括命令发送、响应处理、超时管理、互斥保护等关键功能,并支持用户自定义URC事件处理和数据接收回调。头文件at_client.h定义了框架的数据结构和接口,为嵌

2025-07-27 09:54:19 1832

原创 Linux 进程间通信:共享内存详解

共享内存是最高效的进程间通信方式,允许多个进程访问同一物理内存区域,避免了内核数据复制开销。其核心原理是创建共享内存区域并映射到多个进程地址空间,适用于高性能、大数据量、频繁通信的场景,如数据库、科学计算等。文章详细介绍了System V和POSIX两种共享内存API接口,包括创建、附加、分离和控制等关键函数。同时提供了System V共享内存的读写示例和POSIX共享内存的写入示例,展示了实际应用中的基本流程和注意事项。

2025-07-24 20:44:26 1071

原创 Remote Framebuffer Protocol (RFB) 详解

RFC 6143规范的远程帧缓冲协议(RFB)是一种轻量级跨平台远程图形访问协议,核心特点包括:解耦图形系统、客户端主导模型和支持高效增量传输。协议流程包含TCP连接建立、版本协商、安全握手和初始化消息交换。RFB通过像素格式定义、多种编码方式(如Raw/CopyRect/ZRLE)和事件传输机制(键盘/鼠标/剪贴板)实现高效远程图形交互。该协议采用请求-响应模式,支持动态分辨率调整和选择性区域更新,广泛用于VNC等远程桌面系统。

2025-07-23 21:11:36 1332

原创 OpenHarmony构建脚本build.sh解析

OpenHarmony构建系统核心脚本build.sh解析其架构与实现。该脚本作为统一构建入口,采用分层设计管理环境、工具链、依赖及构建流程。关键机制包括:基于.gn文件定位源码根目录,预置隔离的Python/Node.js环境,通过ohpm管理组件依赖,自动构建必要SDK。构建系统分传统(entry.py)和现代(hb)两套实现,支持结果反馈与扩展处理。脚本确保环境一致性,优化国内下载体验,并通过严格版本检查维持开发环境统一性。

2025-06-25 21:23:20 1371

原创 动态库静态加载与动态加载

动态库在软件开发中扮演着重要角色,其加载方式主要分为静态加载和动态加载。静态加载在编译时链接库,程序启动时自动加载依赖库,适合依赖关系稳定的场景,具有代码简单、启动快的优点,但无法在运行时更换库版本。动态加载则通过系统API在运行时显式加载和卸载库,适合需要灵活扩展的系统,如插件系统,但代码复杂度较高,需手动管理库的生命周期。开发者应根据项目需求选择合适的加载方式,以平衡代码复杂度和系统性能。

2025-05-15 17:58:12 859

原创 Makefile中的CFLAGS与LDFLAGS

本文深入探讨了C/C++项目开发中Makefile的核心工具CFLAGS和LDFLAGS的作用、常见用法及高级技巧。CFLAGS用于控制编译器的行为,包括代码优化、调试支持、警告管理和路径设置等;LDFLAGS则用于控制链接器的行为,如库路径设置、库链接和内存布局等。文章详细介绍了这些变量的常用选项和高级用法,如架构特定优化、安全加固、静态分析集成等,并提供了典型项目配置、多配置管理和第三方库集成的实践案例。此外,文章还涵盖了跨平台处理、调试与分析、常见错误与解决方法,以及最佳实践总结。通过合理配置CFLA

2025-05-12 21:45:28 1859

原创 海明码原理介绍

一、基本概念海明码(Hamming Code)是由理查德・海明(Richard Hamming)提出的一种纠错码,能够检测并纠正数据传输中出现的单比特错误。其核心思想是通过在原始数据位中插入额外的校验位,将数据位分成多个组,每个校验位负责校验特定的比特位组合,从而定位错误位置并纠正。二、核心原理。

2025-05-11 10:25:51 2858 1

原创 CMake 入门实践

本文介绍了CMake的基础知识及其在实际项目中的应用。首先,CMake是一个跨平台的构建系统生成器,通过CMakeLists.txt文件描述项目结构。文章从最小CMake项目入手,展示了如何编写CMakeLists.txt文件并执行构建流程。接着,探讨了多文件项目的管理,包括项目结构、源码示例和CMake配置。随后,详细讲解了库文件的管理,包括项目结构、核心配置和接口设计。文章还介绍了构建类型与编译优化的配置,以及实用的高级技巧,如变量与缓存机制、条件控制语句和自动查找依赖。最后,讨论了跨平台构建的实战技巧

2025-05-10 20:01:02 575

原创 产品开发过程模型

瀑布模型是最经典的线性开发模型,由Winston Royce于1970年提出。其流程严格分阶段推进,每个阶段完成后才能进入下一阶段,典型流程为:​​需求分析 → 系统设计 → 开发实现 → 测试验证 → 部署维护​​。增量模型将产品划分为多个“增量模块”,分批次开发并交付。每个增量都是一个可运行的子产品,逐步叠加功能。流程示例如下:​​需求拆分 → 增量1开发(设计→编码→测试)→ 增量1交付 → 增量2开发 → ……​​原型模型通过快速构建“简化版产品”(原型)验证需求,并根据反馈迭代优化。

2025-04-11 19:55:17 1320

原创 结构化分析方法 数据流图详解

方向:数据流动方向名称:数据内容描述数据项:具体数据元素集合编号:层次化标识符名称:动词短语描述输入 / 输出:明确数据流。

2025-03-29 17:43:09 1502

原创 Cache 映射方式详解

映射方式冲突率硬件复杂度查找速度典型应用直接映射高低快早期缓存全相联映射低高慢小容量缓存(如 TLB)组相联映射中中中现代 CPU 缓存(L1/L2/L3)主存块 ────┬─── 直接映射:1:1 固定映射│├─── 全相联映射:1:N 任意映射│└─── 组相联映射:分组后每组 N:1 全相联(例:2 路组相联)

2025-03-26 21:36:21 1149

原创 shell脚本运行方式 bash 和./区别

在 Linux 或 macOS 这类基于 Unix 的系统里,使用./运行脚本和使用bash。

2025-03-25 21:21:44 956

原创 四、设备树下的 platform 平台设备驱动

​ Platform 驱动模型是 Linux 内核为了更好地管理设备和驱动而引入的一种机制。它将设备和驱动进行分离,通过平台总线(platform bus)来匹配设备和驱动。在这个模型中,设备和驱动都向平台总线注册自己,总线负责根据设备和驱动的匹配规则,将它们绑定在一起。功能:向平台总线注册一个平台设备。原型参数pdev是一个指向结构体的指针,该结构体包含了设备的名称、ID、资源等信息。返回值:成功返回 0,失败返回负的错误码。功能:从平台总线注销一个平台设备。原型参数pdev。

2025-03-02 11:17:15 1700

原创 C++ 快速学习教程

C++ 快速学习教程。

2025-02-25 17:45:09 3490

原创 DeepSeek API 实现对话操作

DeepSeek 作为一款表现卓越的大语言模型,为开发者提供了 API 接口,使得开发者能够将其集成到各类应用程序中,实现诸如对话系统、文本生成等功能。本文将详细介绍如何在 Ubuntu 20.04 系统的默认 Python 3.8 环境下,完成开发环境的搭建,并调用 DeepSeek API 实现一个简单的对话操作。构建请求数据:根据 DeepSeek API 的要求,将对话信息以特定的 JSON 格式组织起来。设置请求头:在请求头中添加必要的信息,如内容类型和授权信息,以确保请求能够被正确处理。

2025-02-22 12:01:35 1705

原创 三、linux字符驱动详解

在上一节完成NFS开发环境的搭建后,本节将探讨Linux字符设备驱动的开发。字符设备驱动作为Linux内核的重要组成部分,主要负责管理与字符设备(如串口、键盘等)的交互,并为用户空间程序提供统一的读写操作接口。

2025-02-19 20:19:08 1160

原创 Linux Shell 学习教程

Shell 是用户与操作系统内核之间的接口,它接收用户输入的命令,将其翻译为内核可以理解的指令,然后将内核的处理结果返回给用户。简单来说,Shell 就像是一个翻译官,帮助用户和计算机进行沟通。在 Shell 脚本中,可以使用变量来存储数据。变量名通常由字母、数字和下划线组成,并且不能以数字开头。/bin/bash在上述示例中,定义了一个变量name,并将其值设置为"John"。然后使用符号引用该变量,并将其值输出到标准输出。在 Shell 脚本中,可以定义函数来封装一段可重复使用的代码。

2025-02-19 14:37:28 1208

原创 二、QEMU NFS 环境搭建

​ 在上一章节中,我们已经成功完成了内核和 busybox 环境的配置。为了进一步提高开发效率,我们可以使用 NFS(Network File System)来挂载根目录。NFS 允许我们将本地文件系统通过网络共享给虚拟机使用,这样在开发过程中,我们对本地文件系统所做的修改可以实时反映到虚拟机中,无需频繁地重新构建和烧录根文件系统,从而显著提高开发效率。

2025-02-18 11:53:49 1285 2

原创 一、QEMU 搭建arm linux开发环境

Qemu 作为一款强大的开源虚拟化软件,为我们提供了一个便捷且经济实惠的方式来模拟各种硬件环境,从而在上面安装和学习 Linux 系统。本文将详细介绍如何使用 Qemu 搭建 Linux 学习环境,

2025-02-15 11:58:31 2544

原创 GD32 GCC 环境 移植FreeRTOS

GD32 系列微控制器是兆易创新推出的高性能、低成本的 ARM Cortex 内核微控制器,具有丰富的外设和出色的性能。为了方便开发,推荐使用 Visual Studio Code 作为代码编辑器,并安装相关的扩展,如 Cortex-Debug、C/C++ 等。在 FreeRTOS 中,需要对一些中断处理函数进行修改,以确保 FreeRTOS 能够正常工作。文件夹中,根据使用的编译器和硬件平台,只保留需要的文件。文件是 FreeRTOS 的配置文件,用于配置 FreeRTOS 的各种参数。

2025-02-14 16:46:43 1616

原创 GD32 ADC 工作模式及应用详解

GD32 ADC 是一个逐次逼近型 ADC,具有高分辨率(通常为 12 位)、多通道(多个模拟输入通道)等特点。它支持多种工作模式,能够灵活地适应不同的应用需求。在使用 GD32 ADC 之前,需要进行一系列的初始化配置,包括时钟配置、GPIO 初始化、模式设置、触发方式设置等。GD32 ADC 提供了丰富的工作模式,能够满足不同应用场景的需求。开发者在使用时,需要根据具体的应用需求选择合适的工作模式或模式组合。

2025-02-13 17:42:12 2083

原创 一种MCU设备框架设计与实现

统一的接口定义设备注册管理机制可扩展的设备操作面向对象的设计思想通过这样的框架,可以大大提高驱动程序的可维护性和可复用性,使得MCU的设备管理更加规范和统一。

2025-02-11 16:08:00 1079

原创 2025嵌入式高频面试题解析

到了年初,是求职者最活跃的时间。本文梳理了嵌入式高频面试题,帮助求职者更好地准备面试,同时也为技术爱好者提供深入学习嵌入式知识的参考。

2025-02-09 09:57:38 2665

LCD菜单设计框架

LCD菜单系统的设计,多级菜单,利用链表的方式实现

2015-11-11

STM32开发板

stm32开发板,pcb文件与原子mini32引脚兼容

2015-05-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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