- 博客(42)
- 资源 (1)
- 收藏
- 关注
原创 嵌入式进阶关键一步:日志打印,是新手与高手的分水岭
能否打印好日志,是判断嵌入式工程师新手和高手的关键标志之一。这不是瞎说,也不是危言耸听。当然,通过代码判断新手和高手的标志有很多,这只是其中一个。打印日志这个看似很基础的功能,很多嵌入式工程师以为很简单,不就是使用个printf嘛,有什么难的,甚至不放在心上,其实很多嵌入式工程师工作多年依然打印不好日志。这确实是嵌入式领域一个普遍且“痛点”十足的问题。“打印好日志”绝对不是一个微不足道的技能点,也远不止于单单使用printf,它是一项融合了技术深度、工程思维、团队协作和产品意识的综合能力。
2025-11-10 09:39:48
785
原创 UDP联调总丢包?丢包真不一定是网络的锅!
摘要: 本文深入解析UDP数据包的理论最大值(65507字节)与现实中1472字节安全限制的差异,揭示IP分片机制是导致UDP丢包的关键原因。通过对比IPv4/IPv6的头部设计,说明MTU(如以太网1500字节)如何限制实际传输,并分析分片带来的重组失败、性能损耗等问题。提出三大解决方案:应用层控制包大小(推荐≤1472字节)、设置socket选项禁止分片、利用Wireshark快速诊断,并附代码示例。最后总结不同场景下的安全包大小建议,帮助开发者规避UDP传输陷阱。 关键词: UDP丢包、IP分片、MT
2025-11-07 10:47:08
858
原创 Makefile从入门到精通(一) --- 不懂Makefile,你的C/C++功底永远差一截
Makefile从入门到精通(一) --- 不懂Makefile,你的C/C++功底永远差一截
2025-10-30 10:18:34
440
原创 不懂 void *,也敢说是C/C++高手?
摘要 本文深入探讨了C/C++中的void*指针,强调其在内存管理、泛型编程和系统开发中的核心作用。void*作为无类型指针,可指向任意数据类型,但需显式类型转换才能解引用或运算。文章详细解析了void*的特点(无类型性、安全性限制)、典型用途(泛型函数/数据结构、内存操作、跨类型传递)及使用规范(赋值转换、解引用前提、运算限制),并对比了C与C++的差异。通过停车场等类比,帮助读者理解这一“万能容器”的灵活性与潜在风险,适合嵌入式开发者及系统程序员深入学习。 关键词:void*、通用指针、类型转换、内存管
2025-10-18 16:27:33
997
原创 【MQTT】MQTT入门与进阶系列(三)—— 五分钟彻底搞懂QoS 0、1、2的本质与选型
【MQTT】MQTT入门与进阶系列(三)—— 五分钟彻底搞懂QoS 0、1、2的本质与选型
2025-10-15 09:00:00
682
原创 【MQTT】MQTT入门与进阶系列(二)—— MQTT主题与通配符
MQTT主题与通配符使用指南 本文详细介绍了MQTT协议中的主题结构和通配符使用规则。主题采用斜杠分隔的层级结构,支持单层通配符(+)和多层通配符(#),但通配符仅可用于订阅。系统主题以$SYS/开头,用于监控代理状态。文章提供了主题设计的核心建议:保持2-5层清晰结构、使用小写字母和下划线命名、控制主题长度和数量、区分系统与业务主题等。同时强调了避免动态ID、前导斜杠等常见错误。通过合理使用主题和通配符,可以优化MQTT系统的性能和可维护性。
2025-10-08 16:05:41
1048
原创 【音视频】--- 嵌入式开发必知必会:核心多媒体协议指南
嵌入式多媒体协议精要 编解码协议: 视频:H.264(主流)、H.265(高效)、AV1(开源)、MJPEG(简单) 音频:AAC(主流)、G.711(传统电话)、OPUS(低延迟) 传输控制协议: 基础传输:RTP/RTCP(实时传输)、RTSP(流控制) 应用协议:RTMP(直播推流)、WebRTC(网页实时通信) 行业标准:ONVIF(安防设备互通)、SRT(可靠传输) 流媒体方案:HLS(HTTP切片)、SIP(会话控制) 应用特点: 各协议在延迟、可靠性、兼容性方面形成互补,嵌入式开发需根据具体场
2025-09-30 15:48:51
765
原创 【数据结构 | 基础入门篇】--- 数据结构入门:一文讲透数据结构核心概念
【数据结构 | 基础入门篇】--- 数据结构入门:一文讲透数据结构核心概念
2025-09-01 09:00:00
1040
原创 【MQTT】MQTT入门与进阶系列(一)—— MQTT 基础知识介绍和示例
本篇文章主要介绍MQTT入门基础知识,什么是MQTT、MQTT的特点、MQTT客户端、MQTT Broker、发布-订阅模式、主题、QoS,以及通过一个示例,进行订阅和发布消息,让读者对MQTT的工作原理和工作流程有个直观的了解和感受。就像一盘菜,学习如何炒这盘菜之前,咱们先知道这盘菜的原料,尝尝这盘菜的味道。
2024-10-18 14:16:29
3965
原创 【架构设计】各地编程大师奉为圭臬的软件设计原则 —— KISS原则
最近阅读了一本书《UNIX编程艺术》,主要介绍了Unix系统领域中的设计和开发哲学、思想文化体系、原则与经验,由公认的Unix编程大师、开源运动领袖人物之一Eric S.Raymond倾力多年写作而成。在有异常输入的情况下,保证软件健壮性的一个相当重要的策略就是避免在代码中出现特例。如果我们在整个软件开发中很严格遵循这条原则的话,大多数的应用场合都应该使用高一级的语言,如Perl、Tcl、Python、Java等等,这些语言可以将程序员从自行管理内存的负担中解放出来。“大”有两种含义:体积大,复杂程度高。
2024-09-24 17:44:57
978
原创 【Git】git 从入门到实战系列(四)—— 工作区、暂存区以及版本库 .git 详解
上篇文章【Git】git 从入门到实战系列(三)——创建版本库我们总结了如何创建版本库,以及如何提交本地代码。本文我们总结工作区、暂存区以及对版本库 .git 文件夹里的内容进行详细介绍。了解工作区、暂存区和 .git 文件夹里的内容,能更透彻的理解 git 的机制,对该专栏后面的内容可以起到辅助的作用。知其然,更要知其所以然,理解的透彻,才能用的更好。如有疑问或建议,可在评论区交流沟通或添加作者微信沟通交流。作者微信 “_PiaoYaoXiaoWei_”,微信名"骠姚校尉"。
2024-09-05 15:49:27
1007
1
原创 【嵌入式】指针与整数的桥梁、跨平台编程的黄金钥匙:揭开 uintptr_t 和 intptr_t 的神秘面纱
指针与整数的桥梁、跨平台编程的黄金钥匙:揭开 uintptr_t 和 intptr_t 的神秘面纱
2024-08-14 09:11:26
1997
原创 【wifi】-- 嵌入式开发中wifi性能参数Link Quality、Signal level和Noise level
在嵌入式开发中,尤其是物联网的产品,经常用到wifi模块,4G模块等,本文我们针对wifi通信质量的几个参数做一下总结。在使用wifi通信过程中,经常会碰到弱网或丢包等问题,需要通过参数查看wifi性能指标,如下图:上图中Signal level、Link Quality和Noise level这三个参数如何表示wifi通信质量的好坏呢?什么样的情况下表示丢包率较高,通信质量较差,什么样的情况下表示通信质量较好呢?
2024-08-08 09:23:36
2052
原创 【Git】git 从入门到实战系列(三)—— 创建版本库,添加提交文件至版本库
版本库又名仓库(Repository),可以简单理解成一个文件夹,这个文件夹里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。初始化仓库:git init添加文件到Git仓库,分两步:文件添加到仓库:git add ,注意,可反复多次使用,添加多个文件提交文件到仓库:git commit -m “description”查看提交记录:git log。
2024-08-07 10:14:19
1219
原创 【架构设计】软件设计原则中的7种耦合和内聚(详解)
耦合(Coupling)和内聚(Cohesion)是衡量软件模块设计质量的两个非常重要的概念。高内聚、低耦合是我们在软件设计过程中必须遵循的一个重要原则,在整个软件工程中占有很大的比重。而对于内聚和耦合你是否还是仅仅局限于“高内聚,低耦合”的模糊概念吗?如何判断何为高低呢?本篇文章将带你分别深度剖析和总结内聚与耦合的 7 种类型和描述,为在以后的项目软件开发中助你一臂之力!内聚指的是模块的内部关系,是一个模块内部各成分之间相关联程度的度量,即模块内部各元素之间联系的紧密程度。
2024-08-06 14:18:55
1610
原创 【Git】git 从入门到实战系列(二)—— Git 介绍以及安装方法
本系列上一篇文章【Git】git 从入门到实战系列(一)—— Git 的诞生,Linus 如何在 14 天内编写出 Git?我们讲述了 git 诞生的过程。此篇我们对 git 的特点进行总结,以及总结 git 的安装方法。该系列浅显易懂,有理论,有实例,实用性超强,读者可以边学边练,不枯燥,易上手,读完该系列你可以通过 git 轻松地完成你的工作。该系列不会让你成为git专家,但用于工作已绰绰有余。
2024-08-02 09:21:59
1122
原创 【Git】git 从入门到实战系列(一)—— Git 的诞生,Linus 如何在 14 天内编写出 Git?
尽管这人看上去毫不起眼,比如Linus曾在他的自传《乐者为王》(Just for Fun)中自嘲:“我是一个长相丑陋的孩子,凡是见过我小时候照片的人,都会觉得我的相貌酷似河狸。后来,Linus对BitKeeper表示了极大的赞赏,认为BitKeeper改变了他的看法,而Git的灵感也来源于此。”牛B是怎么定义的呢?Git迅速成为最流行的分布式版本控制系统,尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。
2024-07-31 11:30:28
1261
原创 【H.264】H.264详解(二)—— H264视频码流解析示例源码
示例源码是一个H.264码流解析程序。该程序可以从H.264码流中分析得到它的基本单元NALU,分离出NALU,然后再分析NALU的各个字段。关于NALU的相关内容可参考文章【H.264】H.264详解(一)—— 一文看懂H.264协议。
2024-07-24 14:34:26
1362
4
原创 【MP4】mp4文件详解(二)—— mp4文件分析工具
MP4文件分析工具可以帮助你查看和分析MP4视频文件中的各种数据,比如元数据、编码信息、帧结构等。
2024-07-24 14:33:01
3058
原创 【MP4】mp4文件详解(一)—— 一文看懂mp4文件格式
本系列系统总结MP4文件格式,从格式详解、MP4分析工具、MP4开源库解析等几篇文章来进行系统性总结和梳理。如有错漏,敬请指出,欢迎随时交流。MP4官方文档:mp4文件格式又被称为MPEG-4 Part 14,出自MPEG-4标准第14部分。它是一种多媒体格式容器,广泛用于包装视频和音频数据流、海报、字幕等。(顺便一提,目前流行的视频编码格式AVC/H264定义在MPEG-4 Part 10)。MP4是最常见的封装格式之一,因为其跨平台的特性而得到广泛应用。
2024-07-18 09:48:44
16001
3
原创 【Linux】一文看懂Linux静态库和动态库
静态库和动态库在Linux系统编程中各有优劣。静态库简单易管理,但消耗更多的磁盘空间和内存,适用于不频繁更新的库。动态库节省资源,适用于共享库更新频繁的场景,但需要注意库版本兼容性问题。
2024-07-10 10:55:23
2092
原创 【嵌入式 | 数据校验】BCC校验(异或校验)
BCC (Block Check Character)是一种数据校验方法,通常用于检测和校验数据传输中的错误。其核心是将一个数据块里的所有字节按位异或(XOR),从而生成一个检验字符。若这个检验字符与实际计算得到的不符,就表示数据传输中可能发生了错误。因检验字符是将所有字节异或得出,故也称为异或校验。什么是异或运算?异或运算(XOR)是一种基本的逻辑运算,它对二进制位进行操作。其基本规则是如果两个二进制位不同,结果为1。如果两个二进制位相同,结果为0,简单总结:同为0,异为1。AB。
2024-07-10 10:54:28
4998
原创 【H.264】H.264详解(一)—— 一文看懂H.264协议
H.264,是一种视频压缩编码标准 ,同时也是MPEG-4第10部分规范(ISO/IEC 14496-10),MPEG-4 Part 10,⼜叫Advanced Video Codec(高级视频编码),因此H.264常常称为MPEG-4 AVC或直接叫AVC。所以在H.264的参数中可以看到 AVC == H264,而 HECV == H265。H.264已经成为高精度视频录制、压缩和发布的最常用格式之一。常见的写法H264,标准写法应该是H.264。
2024-07-01 09:35:53
9152
17
原创 【嵌入式】嵌入式Linux必读经典书籍(附书籍封面图)
嵌入式linux必读经典书籍。文章目录1、编程语言2、数据结构与算法3、ARM体系与架构4、操作系统5、计算机组成原理6、计算机网络7、Linux应用8、linux驱动9、linux内核
2024-07-01 09:34:23
1218
原创 【Linux】Linux系统错误码errno详解
在嵌入式Linux开发中,使用errno进行错误处理是非常常见和必要的。嵌入式系统通常需要处理各种硬件和软件的交互,错误处理和调试是确保系统稳定性和可靠性的关键部分。errno在嵌入式Linux开发中是一个重要的工具,通过合理使用errno,可以有效地捕获和处理各种错误情况,确保系统的稳定性和可靠性。在Linux系统中,errno是一个全局变量,用于表示最近一次系统调用或库函数调用出错时的错误码。每个错误码对应一个特定的错误类型。了解这些错误码有助于调试和处理错误情况。
2024-06-26 09:39:42
3716
原创 【C语言】函数strerror和perror详解
strerror函数和perror函数是C标准库中的两个函数,用于处理和显示错误信息。它们帮助程序员在程序运行过程中了解并诊断错误原因。
2024-06-26 09:36:36
1073
原创 【C语言 | 嵌入式】大端序和小端序详解
字节序字节序,又称端序,英文Endiannnes。字节序,简单点说,就是字节的存储顺序。数据都是单字节,那么不存在字节的存储顺序,对于多字节的数据,就要考虑字节的存储顺序了。典型的情况是int、double等在内存中的存放方式和网络传输的传输顺序。字节序跟硬件的体系结构有关,和编程语言以及操作系统无关,例如在x86系列的pc上的solaris系统是小端序,sunsparc平台的solaris是大端序。大端序(Big-endian)大端字节序,高字节存于内存低地址,低字节存于内存高地址。小端序
2024-06-18 14:15:14
5116
原创 【音视频】音频相关概念详解
嵌入式音视频开发过程中涉及到的音视频相关概念有很多,本文对音频一些常见的术语和概念进行详细的介绍和总结。1、采样率(Sampling rate)2、位深度(Bit depth)3、比特率(Bit rate)4、声道(Audio channel)5、音频帧6、音频编码7、音频解码
2024-06-07 11:51:37
2953
原创 【网络协议 | HTTP】HTTP总结与全梳理(一) —— HTTP协议超详细教程
嵌入式开发工作中我们常用到一些网络协议,本章我们总结http协议,后续文章我们会陆续总结https等网络协议。在总结http协议之前,我们先熟悉一下什么是超文本。超文本的概念最早由Ted Nelson在1960年代提出,并在1990年代因万维网(World Wide Web)的发展而广为人知。超文本(Hypertext)是一种通过HTML(超文本标记语言)组织和呈现信息的方式。允许读者通过点击或选择文本中的链接来跳转到相关的信息或内容,这种链接通常称为“超链接”(Hyperlinks)。
2024-06-04 14:24:20
4035
原创 【Linux C】目录相关的操作函数 mkdir、rmdir、opendir、readdir、closedir、getcwd、chdir
本文介绍Linux下目录操作相关的一些函数。mkdir、rmdir、opendir、readdir、closedir、getcwd、chdir。我们将从函数原型、头文件、函数作用、参数含义、返回值以及示例代码几个方面进行总结。
2024-05-16 09:04:59
2587
原创 【YUV】YUV图像详解(二)—— YUV图像解析代码示例
一、YUV图像查看工具1、YUV Eye2、7yuv二、代码示例1、分离420p2、分离422p3、分离444p
2024-04-25 09:37:44
2493
原创 【YUV】YUV图像详解(一)—— 一文看懂YUV格式
视频采集芯片输出的码流一般都是 YUV 格式数据流,后续视频处理也是对 YUV 数据流进行编码和解析。所以,了解 YUV 数据流对做视频领域的人而言,至关重要。下面我们对YUV进行一下总结。YUV 编码采用了明亮度和色度表示每个像素的颜色。其中 Y 表示明亮度(Luminance、Luma),也就是灰阶值。U、V 表示色度(Chrominance 或 Chroma),描述的是色调和饱和度。YCbCr 其实是 YUV 经过缩放和偏移的翻版。
2024-04-17 09:54:55
6140
1
原创 【CMake】CMake从入门到实战系列(二)——实例入手,讲解CMake的基本流程
在 linux 平台下使用 CMake 的基本流程如下:1、编写 CMake 配置文件 CMakeLists.txt。2、执行命令 cmake PATH。其中,PATH 是 CMakeLists.txt所在的目录。3、使用 make 命令进行编译。针对上面的流程,初步接触CMake的读者可能还是不太清楚明了,那么接下来,我们通过实例开始总结CMake的基本流程。
2024-03-25 18:59:10
2572
知识领域: 智能车竞赛/嵌入式系统 技术关键词: 飞思卡尔单片机、电机控制、传感器应用 内容关键词: 车模搭建、路径识别算法、调试技巧 用途: 指导智能车设计与竞赛备赛
2025-08-18
知识领域: 嵌入式系统开发 技术关键词: STM32单片机、ARM Cortex-M、C语言 内容关键词: 外设驱动(GPIO/USART等)、开发环境(MDK/Keil)、项目实战 用途: 快速掌握
2025-08-18
《Essential C++》中文版PDF + 源代码是一套高效、精炼、实践性强的C++核心学习资源 它特别适合希望快速掌握C++精髓并通过配套代码动手实践的学习者,是C++入门和核心概念学习的经典之
2025-08-18
MATLAB编程基础:从入门语法到数据可视化实战指南
2025-08-13
CMake从入门到实战系列(四)-CMake链接静态库和动态库
2024-04-01
H.264详解(二)- H264视频码流解析示例源码
2024-07-23
CMake从入门到实战系列(二)-实例入手,讲解CMake的基本流程
2024-03-26
ISO-IEC-14496-14-2003 & ISO-IEC-14496-14-2020
2024-07-17
CMakeCMake从入门到实战系列(十五)- CMake中添加编译选项的几种方法的完整源码
2024-06-04
CMake从入门到实战系列(十二)-CMake中如何执行shell命令(1)
2024-05-06
CMake从入门到实战系列(八)-CMake中的算数运算符,比较运算符和逻辑运算符
2024-04-10
CMake从入门到实战系列(六)-CMake自定义编译选项
2024-04-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅