BLE 协议之 ATT [toc] 在前面的章节中,我们自低向上,分析了 BLE 协议栈中的 Physical Layer、Link Layer、L2CAP: Physical Layer 负责提供一系列的 Physical Channel ; 基于这些 Physical Channel,Link Layer 可在两个设备之间建立用于点对点通信的 Logical Channel ; L2CAP 则将这个 Logic 2024-11-05 通信协议 > BLE #通信协议 #BLE
Git 查错记录 [toc] 本文记录本人了最近在 Git 开发遇到的一些问题 一、ssh: connect to host github.com port 22: Connection refused123456$ git pull originssh: connect to host github.com port 22: Connection refusedfatal: Could not read f 2024-11-03 工具 > Git #工具 #Git
【STM32】通过 DWT 实现毫秒级延时 [toc] 零、前言在 FreeRTOS 中,SysTick 被用于作为调度器的一部分进行任务调度,那么如果我需要使用软件模拟通信,例如软件 I2C,需要使用 delay,就无法使用 SysTick 实现的 delay。 因此,这里提供一种基于 DWT 实现的 delay。 一、DWT在实现我们的代码之前,如果你没有了解过 DWT,那就先来看一下: 这里只介绍待会儿会用到的延时相关的内容 2024-11-02 嵌入式 > STM32 #嵌入式 #STM32
BLE 协议之 L2CAP [toc] 一、简介经过 Link Layer 的抽象之后,两个 BLE 设备之间可存在两条逻辑上的数据通道: 一条是无连接的广播通道,天高任鸟飞 另一条是基于连接的数据通道,是一个点对点(Master to Slave)的逻辑通道。 广播通道暂且不提,这个数据通道(后面简称逻辑通道,Logical Channel),要怎么使用,还需要一番思索,例如: Logical Channel 只 2024-11-01 通信协议 > BLE #通信协议 #BLE
BLE 协议之传输层 [toc] 在 BLE 协议中,传输层位于 Host 和 Controller 之间,提供一种无需知道数据内容便可以传输数据的能力。其主要是通过硬件传输介质(如:UART、SDIO、USB 等),传输上层数据。 上图即是 UART 传输层的功能框图。 一、HCI 简介 Core5.4 P1728 该图展示了两个设备之间的数据传输路径。Host 通过 HCI Driver 和 Control 2024-10-25 通信协议 > BLE #通信协议 #BLE
STM32 调试之栈回溯和 CmBacktrace 的使用 [toc] 一、栈回溯1、寄存器知识在 Cortex-M 上弄清楚栈的布局,就必须理解 Cortex-M 上的压栈入栈的机制和原理。下面从该体系架构上说说 Cortex-M 上比较重要的细节。 按照 ARM Cortex-M 的设计,一共有 32 个寄存器。 13 个通用寄存器,r0-r12 2 个不同模式下使用的 SP PSP(SP_process) MSP(SP_main) 1 个链 2024-10-24 嵌入式 > STM32 #嵌入式 #STM32 #调试
动态链接过程分析 [toc] 上文 静态链接过程分析 讲解了静态链接的过程,尤其强调了重定位的过程。本文将继续介绍动态链接的过程。 一、前言静态链接得到的可执行程序,被操作系统加载之后就可以直接执行。 因为在链接的时候,链接器已经把所有目标文件中的代码、数据等 Section,都组装到可执行文件中了。并且把代码中所有使用的外部符号(变量、函数),都进行了重定位(即:把变量、函数的地址,都填写到代码段中需要重定位的 2024-10-23 Linux #Linux #动态链接
静态链接过程分析 @toc 本文测试环境为 ubuntu20.04 + gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.2) 一、开始首先,编写两个简单的文件用于待会儿的分析: 123456789101112131415161718192021// swap.cint shared = 1;void swap(int *a, int *b){ in 2024-10-22 Linux #Linux #静态链接
ESP32-IDF 非易失存储 NVS @toc 零、前言NVS(Non-volatile storage,非易失存储),意思是掉电后能依然能持久化保存数据。在我们应用 NVS 时,一般用于存储一些配置数据、状态数据等,一般不会用来存储存放大量的数据量。 在嵌入式系统中,NVS 主要是在 Flash 进行==键值对==的存储。举个例子,假设我们要把东西存到 Flash 中,按照底层的操作习惯,我 2024-10-21 嵌入式 > ESP32 #嵌入式 #ESP32
ESP32-IDF 分区表 [toc] 一、基本介绍使用时要添加头文件 #include "esp_partition.h"。 1、配置结构体1.1 esp_partition_t1234567891011typedef struct { esp_flash_t* flash_chip; /*!< SPI flash chip on which the par 2024-10-20 嵌入式 > ESP32 #嵌入式 #ESP32