BLE 协议之物理层 @toc 一、概述 物理层(Physical Layer)是 BLE 协议栈最·底层,它规定了 BLE 通信的基础射频参数,包括信号频率、调制方案等。 BLE 工作频率是 2.4GHz,它使用 GFSK 频率调制,并使用跳频机制来解决频道拥挤问题。 BLE 5 的物理层有三种实现方案,分别是: 1M Sym/s 的无编码物理层 2M Sym/s 的无编码物理层 1M Sy 2024-09-17 通信协议 > BLE #通信协议 #BLE
结构体内存对齐 [toc] 一、什么是结构体内存对齐进入讲解前,先看一段 C 代码: 1234567891011struct Node1 { int a; char b; char c;} node1[1024];struct Node2 { char b; int a; char c;} node2[1024]; 思考一下 nod 2024-09-16 嵌入式 #嵌入式 #内存对齐
MQTT 协议概述 @toc 一、概述MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于 TCP/IP 协议上,由 IBM 在 1999 年发布,并于 2013 年发布为开放标准。MQTT 协议专注于在低带宽、不稳定或高延迟的网络环境中,可靠地传输小型数据 2024-09-12 通信协议 #通信协议 #MQTT
Linux 下 C/C++ 程序编译的过程 [toc] 本文将介绍如何将 C/C++ 语言编写的程序转换成为处理器能够执行的二进制代码的过程,包括四个步骤:预处理(Preprocessing)编译(Compilation)汇编(Assembly)链接(Linking)。 在此之前,首先来看一下 GCC 工具链。 一、GCC 工具链GCC 是 GUN Compiler Collection 的简称,是 Linux 系统上常用的编 2024-09-08 Linux #Linux #编译
FreeRTOS 队列 Queue 源码解析 [toc] 在 FreeRTOS 快速入门(四)之队列 一文中,我简单地叙述了 FreeRTOS 中队列的工作机制和基本使用。这一节我将依据 FreeRTOS V10.4.3 的源码深入地去探究队列是如何实现的。学好队列对我们后续学习信号量等知识的时候有很大的帮助。 一、队列1、队列结构体队列结构体定义在目录 queue.c 下: 12345678910111213141516171819202 2024-09-06 嵌入式 > FreeRTOS #嵌入式 #FreeRTOS
ELF 文件格式 @toc 一、概述ELF(Executable and Linkable Format)是一种常用的可执行文件和可链接库格式。它是一种通用的二进制文件格式,用于在 Unix 和类 Unix 系统上进行可执行文件和库的存储和传输。 二、种类ELF文件主要有四种类型 可执行文件(Executable File):包含可执行的机器代码,可以直接在操作系统中运行。 可重定位文件(Relocatable 2024-09-05 Linux #Linux #ELF
单片机内存区域划分 @toc 一、C 语言内存分区C 语言在内存中一共分为如下几个区域,分别是: 下面分别介绍各个区域。 1、栈区栈区介绍: 栈区由编译器自动分配释放,由操作系统自动管理,无须手动管理。 栈区由编译器自动分配释放,由操作系统自动管理,无须手动管理。 栈区上的内容只在函数范围内存在,当函数运行结束,这些内容也会自动被销毁。 栈区按内存地址由高到低方向生长,其最大大小由==编译& 2024-09-01 嵌入式 > STM32 #嵌入式 #STM32
FreeRTOS 列表 List 源码解析 @toc 链表是 FreeRTOS 的核心数据结构,有关任务调度、延时、阻塞、事件等操作都是通过对链表进行操作进而实现的。本节将详细分析源码文件 list.c,list.h 的内容,为后续的任务队列等的实现奠定基础。 一、链表及链表项的定义FreeRTOS 使用的链表结构是环形的双向链表,而关于链表节点的数据结构都在 list.h 中定义。 1、链表节点数据结构 xList_ITEM首先来看链表 2024-08-29 嵌入式 > FreeRTOS #嵌入式 #FreeRTOS
蓝牙BLE协议讲解 [toc] 一、概述蓝牙技术起源于爱立信在 1994 年提出的方案,旨在解决移动电话和其他配件之间进行低功耗、低成本的无线通信连接的方法。 1、发展历史 第一代蓝牙主要是指 90 年代的 V1.0~V1.2 版本,是关于短距离通信的早期探索,此时还存在许多问题,应用不是特别广泛 第二代蓝牙主要是 00 年中 V2.0~V2.1 版本,新增了 EDR(Enhanced Data Rate)技术提高 2024-08-27 通信协议 > BLE #通信协议 #BLE
Linux 下 gdb 的使用 [toc] 一、概述GDB(GNU调试器)是一个功能强大的开源调试工具,可用于调试多种编程语言,包括 C、C ++、Fortran 等。它可以在运行过程中检查程序状态,设置断点以停止程序执行并观察变量值、内存状态等,并提供一系列命令和功能来辅助调试过程。 GDB 的主要功能包括以下几个方面: 设置断点:GDB 允许你在程序的某一行代码上设置断点,当程序执行到这一行时会暂停并等待调试命令。 单步 2024-08-26 Linux > 性能优化/调试 #Linux #Linux 命令 #性能优化/调试