- 博客(45)
- 资源 (1)
- 收藏
- 关注
原创 【MQTT】MQTT入门与进阶系列(一)—— MQTT 基础知识介绍和示例
本篇文章主要介绍MQTT入门基础知识,什么是MQTT、MQTT的特点、MQTT客户端、MQTT Broker、发布-订阅模式、主题、QoS,以及通过一个示例,进行订阅和发布消息,让读者对MQTT的工作原理和工作流程有个直观的了解和感受。就像一盘菜,学习如何炒这盘菜之前,咱们先知道这盘菜的原料,尝尝这盘菜的味道。
2024-10-18 14:16:29
3125
原创 【架构设计】各地编程大师奉为圭臬的软件设计原则 —— KISS原则
最近阅读了一本书《UNIX编程艺术》,主要介绍了Unix系统领域中的设计和开发哲学、思想文化体系、原则与经验,由公认的Unix编程大师、开源运动领袖人物之一Eric S.Raymond倾力多年写作而成。在有异常输入的情况下,保证软件健壮性的一个相当重要的策略就是避免在代码中出现特例。如果我们在整个软件开发中很严格遵循这条原则的话,大多数的应用场合都应该使用高一级的语言,如Perl、Tcl、Python、Java等等,这些语言可以将程序员从自行管理内存的负担中解放出来。“大”有两种含义:体积大,复杂程度高。
2024-09-24 17:44:57
818
原创 【Git】git 从入门到实战系列(四)—— 工作区、暂存区以及版本库 .git 详解
上篇文章【Git】git 从入门到实战系列(三)——创建版本库我们总结了如何创建版本库,以及如何提交本地代码。本文我们总结工作区、暂存区以及对版本库 .git 文件夹里的内容进行详细介绍。了解工作区、暂存区和 .git 文件夹里的内容,能更透彻的理解 git 的机制,对该专栏后面的内容可以起到辅助的作用。知其然,更要知其所以然,理解的透彻,才能用的更好。如有疑问或建议,可在评论区交流沟通或添加作者微信沟通交流。作者微信 “_PiaoYaoXiaoWei_”,微信名"骠姚校尉"。
2024-09-05 15:49:27
814
1
原创 【嵌入式】指针与整数的桥梁、跨平台编程的黄金钥匙:揭开 uintptr_t 和 intptr_t 的神秘面纱
指针与整数的桥梁、跨平台编程的黄金钥匙:揭开 uintptr_t 和 intptr_t 的神秘面纱
2024-08-14 09:11:26
1343
原创 【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
1348
原创 【Git】git 从入门到实战系列(三)—— 创建版本库,添加提交文件至版本库
版本库又名仓库(Repository),可以简单理解成一个文件夹,这个文件夹里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。初始化仓库:git init添加文件到Git仓库,分两步:文件添加到仓库:git add ,注意,可反复多次使用,添加多个文件提交文件到仓库:git commit -m “description”查看提交记录:git log。
2024-08-07 10:14:19
1046
原创 【架构设计】软件设计原则中的7种耦合和内聚(详解)
耦合(Coupling)和内聚(Cohesion)是衡量软件模块设计质量的两个非常重要的概念。高内聚、低耦合是我们在软件设计过程中必须遵循的一个重要原则,在整个软件工程中占有很大的比重。而对于内聚和耦合你是否还是仅仅局限于“高内聚,低耦合”的模糊概念吗?如何判断何为高低呢?本篇文章将带你分别深度剖析和总结内聚与耦合的 7 种类型和描述,为在以后的项目软件开发中助你一臂之力!内聚指的是模块的内部关系,是一个模块内部各成分之间相关联程度的度量,即模块内部各元素之间联系的紧密程度。
2024-08-06 14:18:55
1359
原创 【Git】git 从入门到实战系列(二)—— Git 介绍以及安装方法
本系列上一篇文章【Git】git 从入门到实战系列(一)—— Git 的诞生,Linus 如何在 14 天内编写出 Git?我们讲述了 git 诞生的过程。此篇我们对 git 的特点进行总结,以及总结 git 的安装方法。该系列浅显易懂,有理论,有实例,实用性超强,读者可以边学边练,不枯燥,易上手,读完该系列你可以通过 git 轻松地完成你的工作。该系列不会让你成为git专家,但用于工作已绰绰有余。
2024-08-02 09:21:59
1046
原创 【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
1122
原创 【CMake】CMake从入门到实战系列(十八)—— CMake中的include指令,提高项目的模块化和可重用性
CMake官网中对于include指令的介绍,如下:翻译:从文件或模块加载并运行CMake代码。CMake中的include 指令用于将其他CMake文件或模块包含到当前文件中,并且在当前作用域有效。这条指令会读取所包含文件中的代码,并立即执行这些命令,就好像它们直接写在 include 命令所在的位置一样。
2024-07-31 11:29:13
1648
原创 【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
1070
1
原创 【MP4】mp4文件详解(二)—— mp4文件分析工具
MP4文件分析工具可以帮助你查看和分析MP4视频文件中的各种数据,比如元数据、编码信息、帧结构等。
2024-07-24 14:33:01
1658
原创 【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
11281
原创 【Linux】一文看懂Linux静态库和动态库
静态库和动态库在Linux系统编程中各有优劣。静态库简单易管理,但消耗更多的磁盘空间和内存,适用于不频繁更新的库。动态库节省资源,适用于共享库更新频繁的场景,但需要注意库版本兼容性问题。
2024-07-10 10:55:23
1779
原创 【嵌入式 | 数据校验】BCC校验(异或校验)
BCC (Block Check Character)是一种数据校验方法,通常用于检测和校验数据传输中的错误。其核心是将一个数据块里的所有字节按位异或(XOR),从而生成一个检验字符。若这个检验字符与实际计算得到的不符,就表示数据传输中可能发生了错误。因检验字符是将所有字节异或得出,故也称为异或校验。什么是异或运算?异或运算(XOR)是一种基本的逻辑运算,它对二进制位进行操作。其基本规则是如果两个二进制位不同,结果为1。如果两个二进制位相同,结果为0,简单总结:同为0,异为1。AB。
2024-07-10 10:54:28
3363
原创 【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
5984
17
原创 【嵌入式】嵌入式Linux必读经典书籍(附书籍封面图)
嵌入式linux必读经典书籍。文章目录1、编程语言2、数据结构与算法3、ARM体系与架构4、操作系统5、计算机组成原理6、计算机网络7、Linux应用8、linux驱动9、linux内核
2024-07-01 09:34:23
779
原创 【Linux】Linux系统错误码errno详解
在嵌入式Linux开发中,使用errno进行错误处理是非常常见和必要的。嵌入式系统通常需要处理各种硬件和软件的交互,错误处理和调试是确保系统稳定性和可靠性的关键部分。errno在嵌入式Linux开发中是一个重要的工具,通过合理使用errno,可以有效地捕获和处理各种错误情况,确保系统的稳定性和可靠性。在Linux系统中,errno是一个全局变量,用于表示最近一次系统调用或库函数调用出错时的错误码。每个错误码对应一个特定的错误类型。了解这些错误码有助于调试和处理错误情况。
2024-06-26 09:39:42
2741
原创 【C语言】函数strerror和perror详解
strerror函数和perror函数是C标准库中的两个函数,用于处理和显示错误信息。它们帮助程序员在程序运行过程中了解并诊断错误原因。
2024-06-26 09:36:36
823
原创 【CMake】CMake从入门到实战系列(十七)—— CMake添加环境检查
在使用CMake构建C/C++项目时,添加环境检查可以确保构建环境满足项目的需求,例如检查编译器版本、依赖库的存在、头文件和函数的存在等。CMake提供了一些内置的模块和命令来进行这些检查。以下是详细步骤和示例,说明如何在CMake中添加环境检查。可以编写自定义的CMake脚本进行更复杂的检查。# 自定义检查endif()
2024-06-21 14:34:58
689
原创 【C语言 | 嵌入式】大端序和小端序详解
字节序字节序,又称端序,英文Endiannnes。字节序,简单点说,就是字节的存储顺序。数据都是单字节,那么不存在字节的存储顺序,对于多字节的数据,就要考虑字节的存储顺序了。典型的情况是int、double等在内存中的存放方式和网络传输的传输顺序。字节序跟硬件的体系结构有关,和编程语言以及操作系统无关,例如在x86系列的pc上的solaris系统是小端序,sunsparc平台的solaris是大端序。大端序(Big-endian)大端字节序,高字节存于内存低地址,低字节存于内存高地址。小端序
2024-06-18 14:15:14
3281
原创 【CMake】CMake从入门到实战系列(十六)—— CMake中设置交叉编译
CMake是一个强大的跨平台的编译工具,实际嵌入式开发过程中,经常需要使用到交叉编译。在Ubuntu环境中,CMake如果不设置交叉编译,默认情况下,会使用Ubuntu系统(运行 cmake 命令的操作系统)的编译器来编译我们的工程,那么得到的可执行文件或库文件只能在 Ubuntu 系统运行。如果我们需要使得编译得到的可执行文件或库文件能够在ARM 平台上运行,则需要配置交叉编译,这时就要将系统默认编译器切换到相对应的平台的编译器。
2024-06-13 11:51:17
2265
原创 【流媒体】音频相关概念详解
嵌入式音视频开发过程中涉及到的音视频相关概念有很多,本文对音频一些常见的术语和概念进行详细的介绍和总结。1、采样率(Sampling rate)2、位深度(Bit depth)3、比特率(Bit rate)4、声道(Audio channel)5、音频帧6、音频编码7、音频解码
2024-06-07 11:51:37
2247
原创 【CMake】CMake从入门到实战系列(十五)—— CMake中添加编译选项的几种方法
在嵌入式工作开发调试过程中,我们常会遇到需要添加编译选项的情况。添加适当的编译选项能够帮助我们更好地控制程序行为,优化代码,确保稳定性和性能。常见的编译选项有-s、-g、-O3、-fPIC、-Wall、-Werror、-Wextra等。在CMake中为项目增加编译选项有多种方法,下面我们来详细介绍几种常见的方法。add_compile_options、target_compile_options、CMAKE_C_FLAGS 或 CMAKE_CXX_FLAGS
2024-06-05 10:40:14
3181
原创 【网络协议 | HTTP】HTTP总结与全梳理(一) —— HTTP协议超详细教程
嵌入式开发工作中我们常用到一些网络协议,本章我们总结http协议,后续文章我们会陆续总结https等网络协议。在总结http协议之前,我们先熟悉一下什么是超文本。超文本的概念最早由Ted Nelson在1960年代提出,并在1990年代因万维网(World Wide Web)的发展而广为人知。超文本(Hypertext)是一种通过HTML(超文本标记语言)组织和呈现信息的方式。允许读者通过点击或选择文本中的链接来跳转到相关的信息或内容,这种链接通常称为“超链接”(Hyperlinks)。
2024-06-04 14:24:20
2229
原创 【CMake】CMake从入门到实战系列(十四)——CMake中增加预处理器定义的几种方法
CMake中的预处理定义类似C语言中的预处理或宏定义。CMake中预处理器定义的应用场景,可以用于控制编译过程中的条件编译,或者为源代码中的条件语句提供条件判断,或者作为变量供源代码使用。CMake中增加预处理器定义的方法有三种:add_definitions、add_compile_definitions、target_compile_definitions。
2024-05-31 09:49:53
1396
原创 【Linux C】目录相关的操作函数 mkdir、rmdir、opendir、readdir、closedir、getcwd、chdir
本文介绍Linux下目录操作相关的一些函数。mkdir、rmdir、opendir、readdir、closedir、getcwd、chdir。我们将从函数原型、头文件、函数作用、参数含义、返回值以及示例代码几个方面进行总结。
2024-05-16 09:04:59
2134
原创 【CMake】CMake从入门到实战系列(十三)——CMake中如何执行shell命令(2)add_custom_target 和 add_custom_command
在CMake中执行shell命令主要涉及三个指令:execute_process、add_custom_command、add_custom_target。这三个命令参数都比较多,但其实我们并不需要全部了解,甚至一般情况下只需要用到其中的两三个。上一篇文章我们对execute_process进行了总结,此篇文章我们对add_custom_command和add_custom_target进行总结。
2024-05-10 11:20:09
2991
原创 【CMake】CMake从入门到实战系列(十二)——CMake中如何执行shell命令(1)
在CMake中执行shell命令主要涉及三个指令:execute_process、add_custom_command、add_custom_target。我们将分别对每个指令做一下总结,并用示例代码加深理解。
2024-05-07 10:55:12
1872
原创 【CMake】CMake从入门到实战系列(十一)——CMake支持gdb调试
CMake和GDB的结合确实能使C或C++的开发工作变得轻松,它们可以共同实现跨平台的项目构建和源代码级别的调试。下面详细阐述一下如何使用CMake配置项目以便使用GDB进行调试,以及提供一个C语言的demo。
2024-04-29 09:48:36
1861
原创 【YUV】YUV图像详解(二)—— YUV图像解析代码示例
一、YUV图像查看工具1、YUV Eye2、7yuv二、代码示例1、分离420p2、分离422p3、分离444p
2024-04-25 09:37:44
1924
原创 【CMake】CMake从入门到实战系列(十)——CMake中的条件语句和循环语句
CMake从入门到实战系列(十)——CMake中的条件语句和循环语句
2024-04-23 12:14:20
1637
原创 【YUV】YUV图像详解(一)—— 一文看懂YUV格式
视频采集芯片输出的码流一般都是 YUV 格式数据流,后续视频处理也是对 YUV 数据流进行编码和解析。所以,了解 YUV 数据流对做视频领域的人而言,至关重要。下面我们对YUV进行一下总结。YUV 编码采用了明亮度和色度表示每个像素的颜色。其中 Y 表示明亮度(Luminance、Luma),也就是灰阶值。U、V 表示色度(Chrominance 或 Chroma),描述的是色调和饱和度。YCbCr 其实是 YUV 经过缩放和偏移的翻版。
2024-04-17 09:54:55
4031
原创 【CMake】CMake从入门到实战系列(九)——CMake中的字符串处理指令string
一、字符串处理指令string基本语法参数含义二、字符串运算符字符串比较字符串连接字符串替换字符串长度字符串截取字符串转换大小写字符串正则表达式匹配和替换字符串查找子字符串字符串中查找正则表达式匹配的内容字符串附加三 、示例
2024-04-12 14:24:04
2418
原创 【CMake】CMake从入门到实战系列(八)——CMake中的算数运算符,比较运算符和逻辑运算符
CMake从入门到实战系列(八)——CMake中的算数运算符,比较运算符和逻辑运算符CMake 是一个跨平台的自动化构建系统,它主要用于管理软件构建的过程,并且具有一整套自己特定的脚本语言。CMake 脚本中包含了一些基本的运算符,可以用于变量的运算、比较和逻辑判断等
2024-04-10 14:38:20
1276
原创 【CMake】CMake从入门到实战系列(七)——CMake指令option、add_definitions、target_sources
上一篇文章《CMake从入门到实战系列(六)——CMake自定义编译选项》中的demo用到了三个CMake指令,在之前的文章《CMake从入门到实战系列(三)——CMake常用指令》没有提到,此篇文章,我们对这三个指令option、add_definitions、target_sources进行一下总结,后期我们还会对CMake其他指令进行总结,比如条件语句、循环语句等等。总之,option 指令是 CMake 中非常有用的功能,允许用户方便地启用或禁用项目中的各种特性,从而对构建过程进行灵活的控制。
2024-04-09 09:36:54
3203
原创 【CMake】CMake从入门到实战系列(六)——CMake自定义编译选项
CMake 允许为项目增加编译选项,从而可以根据用户的环境和需求选择最合适的编译方案,即用户定义自定义编译选项,这样用户可以在编译时选择是否开启某项特性。下面实例入手总结CMake的自定义编译选项:考虑一个简单的C语言项目,我们想让用户决定是否启用一个名为FEATURE_X的自定义特性。如果启用,我们将编译带有特殊行为的代码;如果不启用,我们将编译默认行为的代码。
2024-04-08 16:22:20
1382
3
原创 【CMake】CMake从入门到实战系列(五)——CMake常见的四种构建类型
CMake从入门到实战系列(五)——常见的四种构建类型一、构建类型介绍1、Debug2、Release3、RelWithDebInfo(Release with Debug Info)4、MinSizeRel(Minimum Size Release)二、实例
2024-04-02 18:45:07
2018
1
原创 【CMake】CMake从入门到实战系列(四)——CMake链接静态库和动态库
【CMake】CMake从入门到实战系列(四)——CMake链接静态库和动态库
2024-04-01 18:45:55
3175
H.264详解(二)- H264视频码流解析示例源码
2024-07-23
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
CMake从入门到实战系列(四)-CMake链接静态库和动态库
2024-04-01
CMake从入门到实战系列(二)-实例入手,讲解CMake的基本流程
2024-03-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人