自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 USB通信协议详解

USB通信协议详解

2023-11-21 11:36:39 2168

原创 USB检测与连接过程

USB知识点

2023-08-25 19:46:43 3801 2

原创 蓝牙A2DP和HFP编解码

蓝牙A2DP和HFP编解码

2022-07-24 23:10:08 10173

原创 BLE传输速率以及抓包工具

BLE传输速率以及抓包工具

2022-06-08 19:41:09 4956 2

原创 MCU内存分配与管理

C语言内存分配一、内存分配​1、内存分配的类型:在C/C++中内存分为5个区,分别为栈区、堆区、数据段(初始化数据区/静态数据区、未初始化数据区;或者是只读数据段Ro-data即常量数据,已经初始化读写数据段(RW-data),未初始化数据段即BBS(ZI-data))、代码区。静态内存分配:编译时分配。包括:全局、静态全局、静态局部三种变量。动态内存分配:运行时分配。包括:栈(stack): 局部变量。堆(heap): c语言中用到的变量被动态的分配在内存中。(malloc或.

2021-05-14 17:25:19 5096 1

原创 HID接口配置以及hid报表描述符示例

USAGE(1, 0x13), /* Usage (Vendor defined) 解绑配置:0:默认,未设置,1:解绑,2:绑定*/USAGE(1, 0x02), /* Usage (Vendor defined) MUTE状态,0:非静音状态,1:静音*/USAGE(1, 0x01), /* Usage (Vendor defined) 连接状态,0:断开,1:连接*/USAGE(1, 0x03), /* Usage (Vendor defined) 丢包率(0~100)*/*不会去卸载USB驱动。

2025-03-07 16:39:00 679

原创 网络编程知识点随笔

1、在嵌入式系统中,一个TCP客户端不能共用同一个端口号来建立两个不同的连接。TCP连接是由四元组(源IP地址、源端口号、目标IP地址、目标端口号)来唯一标识的。如果调用相关接口进行连接,会返回地址已被使用的错误。

2024-12-10 09:35:14 96

原创 经典蓝牙(BT/EDR)蓝牙配对与连接

当ACL 链路连接建立后,主设备会发起channel的连接请求,即L2CAP的连接,建立L2CAP的连接之后,主设备采用SDP去查询从设备的免提服务,从中得到rfcomm的通道号,然后主设备会发起rfcomm的连接请求建立rfcomm的连接。然后就建立了应用的连接。但是,对于低功耗蓝牙技术,低功耗的特性是需要特别考虑的,而且在实际的应用当中,不需要在每次connInterval都产生连接事件,因此引入了参数Lantancy,可以有效的减少连接事件的产生,connSlaveLatency= Latency。

2024-12-06 17:03:23 1593

原创 MQTT知识点随笔

如果同一个客户端使用不同的Client ID建立多个连接,broker会将它们视为不同的客户端。如果使用相同的Client ID,根据MQTT规范,broker应该关闭旧的连接以避免冲突。2.)状态管理:MQTT协议支持会话状态管理,包括消息的持久化和服务质量(QoS)保证。多个连接可能会导致状态管理变得复杂。4.)连接管理:多个连接可能会导致连接管理变得复杂,尤其是在需要维护连接的可靠性和一致性时。1. )资源消耗:每个连接都需要消耗客户端和broker的资源,包括内存和网络带宽。

2024-11-20 09:00:08 350

原创 TCP三次握手和四次挥手

第四次挥手后,客户端不会马上关闭。会再等待两个最大的报文段存活周期,防止服务端没有收到,服务端会重发,客户端会再次发送确认报文。

2024-10-31 09:02:47 214

原创 FreeRTOS队列分析

中断中做队列插入操作,如果队列上锁了,发送队列计数加1,如果没有上锁,不用对队列计数操作,把等待接收队列的任务放到就绪链表。//发送队列上锁,初始化为0,主要是针对退出临界区后,当前的队列发送未执行完,中断中发送队列,队列处理的同步。//队列解锁,根据pxQueue->cTxLock判断中断是否有发送队列,如果有,把等待接收队列消息的任务,插入到就绪列表。1、插入到队列中,数据拷贝时,都会进入临界区,关闭中断,不需要上锁,关闭中断后,不会发生任务调度,只有系统管理不到的中断优先级有可能执行程序;

2024-10-29 20:01:25 766

原创 C语言知识点

知识碎片,持续更新。

2024-06-27 22:43:26 118

原创 FreeRTOS内存管理之heap_4.c源码解析

FreeRTOS内存管理

2024-06-23 16:32:38 1030

原创 嵌入式知识点

1、IIC的SCL SDA是开漏模式,标准模式波特率小于100K,快速模式波特率小于400K,快速模式的占空比,有1/2(高电平是1,低电平是2)和9/16。- 如果两个主设备同时尝试驱动数据线,其中一个设备将驱动为低电平,而另一个设备则会被开漏模式的开漏输出所隔离,从而避免了电流冲突。- 在某些情况下,使用开漏模式可以简化电路设计,因为不需要为每个I2C设备添加单独的上拉电阻。总的来说,开漏模式提供了一种灵活且可靠的方式,以支持I2C总线上的多设备通信和复杂的系统设计需求。知识点记录,持续更新!

2024-06-19 08:40:19 326

原创 FTP协议标准命令

然而,大多数 FTP 控制帧是简单的 ASCII 文本,可以分为 FTP 命令或 FTP 消息。FTP 消息是对 FTP 命令的响应,它由带有解释文本的应答代码构成。FTP 使用 TCP 生成一个虚拟连接用于控制信息,然后再生成一个单独的 TCP 连接用于数据传输。数据类型(A=ASCII,E=EBCDIC,I=binary)如果是文件名列出文件信息,如果是目录则列出文件列表。传输模式(S=流模式,B=块模式,C=压缩模式)数据结构(F=文件,R=记录,P=页面)从服务器上找回(复制)文件。

2024-06-16 21:04:59 832

原创 FreeRTOS知识点随笔

RTOS相关知识点

2024-06-16 13:31:09 235

原创 USB知识点随笔

hid和uac等调用发送接口,都是先放到DMA,等主机的IN事物过来,就从DMA拿数据发出去。hid的中断间隔可配置,中断不需要等数据发送完成。3、hid传输,接收不一定按照枚举,端点初始化和报表描述符配置的中断来,发送一般都是按照中断来。不同的上位机,行为可能不一样。所以回调接口的处理要注意,可以使用同一个接口,或者两个接口都要同步处理。SPK_FEATURE_UNIT_ID:一般是声音等控制,但是这个音量和hid控制音量是没有关系的。SPK_SELECTOR_UNIT_ID:输入源选择。

2024-06-07 15:53:19 474

原创 经典蓝牙BT/低功耗蓝牙BLE知识点随笔

经典蓝牙BT/低功耗蓝牙BLE知识

2024-06-07 15:42:21 2061

原创 蓝牙分析仪使用详解

蓝牙分析仪使用详解

2024-06-05 19:39:47 1118

原创 深入浅出低功耗蓝牙(BLE)协议栈

BLE协议栈为什么要分层?怎么理解BLE“连接”?如果BLE协议只有ATT层没有GATT层会发生什么?

2024-06-05 19:31:27 1046 1

原创 低功耗蓝牙中ATT/GATT/Profile/Service/Characteristic详解

蓝牙协议栈架构

2024-06-05 19:29:53 1820

原创 SSL/TLS加密

SSL握手的场景很多,比如最常见的HTTPS,访问https://www.baidu.com 时,在进行HTTPS的应用数据传递之前,需要建立SSL的连接!1、服务端的公钥和私钥是一对,客户端会生成随机数,作为解密,公钥加密。由于访问的是https://www.baidu.com/,所以需要传输Subject是baidu.com的公钥证书,以供客户端认证服务端的身份。2、服务端的数字证书是权威的CA认证,可防止被恶意拦截,数字证书通过MD5验证,通过才可以进行数据交互。

2023-12-26 19:48:41 1012 1

原创 Bus hound使用

选择对应的endpoint发送数据,下图是hid发送命令窗口,发送命令要选择out,然后配置长度以及发送的数据。点击RUN和STOP,开始和停止数据抓取。根据设置的抓取字节数,数据量达到设置的字节数,就会停止抓取。连续相同的数据,后缀会计数,不会重复显示。这里勾选设备,选择要抓取数据的设备。双击设备名,可打开命令发送窗口。例如,双击USB Input Device,会弹出HID的命令发送窗口。可配置数据抓取的最大字节数,达到最大字节数,会停止数据抓取。如果没有破解,可配置最大值为512字节。

2023-06-28 18:36:08 3012 1

原创 nandflash和norflash的区别

nor flash 的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。应用nand flash 的困难在于flash 的管理和需要的特殊接口。在NOR器件上运行代码不需要任何的软件支持,在NAND器件上进行同样操作时,通常需要驱动程序,也就是内存技术驱动程序(MTD),NAND和NOR器件在进行写入和擦除操作时都需要MTD。当讨论软件支持的时候,应该区别基本的读/写/擦操作和高一级的用于磁盘仿真和闪存管理算法的软件,包括性能优化。

2023-06-01 18:56:31 1268

原创 缓冲区ringbuffer

缓冲区ringbuffer

2022-08-24 11:37:04 833

原创 结构体字节对齐

结构体字节对齐 在用sizeof运算符求算某结构体所占空间时,并不是简单地将结构体中所有元素各自占的空间相加,这里涉及到内存字节对齐的问题。从理论上讲,对于任何变量的访问都可以从任何地址开始访问,但是事实上不是如此,实际上访问特定类型的变量只能在特定的地址访问,这就需要各个变量在空间上按一定的规则排列,而不是简单地顺序排列,这就是内存对齐。 内存对齐的原因: 1)某些平台只能在特定的地址处访问特定类型的数据; 2)提高存取数据的速度。比如有的平台每......

2022-07-16 15:32:29 1286

原创 BLE笔记

BLE笔记

2022-06-10 19:52:31 532

原创 Flash烧录

硕飞Flash编程器上位机软件FlyPRO V4.46】链接:https://pan.baidu.com/s/1aRxJ5n2FEDB00lut1vXJZA 提取码:jdp0【硕飞Flash编程器上位机软件使用手册】链接:https://pan.baidu.com/s/1O712RNGtj2APnl1KeogUCQ 提取码:no901、将烧录器【硕飞 SP8-B】的 Micro USB接口连接到电脑,如图所示,电源指示灯(PWR)红色点亮表示供电正常,状态指示灯(STA)绿色表示...

2021-07-08 16:39:18 3490

原创 NOP指令

NOP:表示延时一个周期指令ARM:两种表示方法__ASM("MOV R0,R0"); __NOP();C51:#include<intrins.h>中声明_nop_();

2021-07-05 15:23:45 1961

原创 “堆”,“栈“,“队列“的区别

什么是“堆”,"栈","堆栈","队列",它们的区别如果你学过数据结构,就一定会遇到“堆”,"栈","堆栈","队列",而最关键的是这些到底是什么意思?最关键的是即使你去面试,这些都还会问到,所以如果你不懂对你是损失很大的。堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。要点:堆:顺序随意 栈:后进先出(Last-In/First-Out)堆 堆:什么是堆?又该怎么理解呢?①堆通常是一个可以被看做一棵树的数组对象。...

2021-05-21 18:02:12 68

原创 可重入函数和不可重入函数

可重入函数和不可重入函数在实时系统的设计中,经常会出现多个任务调用同一个函数的情况。如果有一个函数不幸被设计成为这样:那么不同任务调用这个函数时可能修改其他任务调用这个函数的数据,从而导致不可预料的后果。这样的函数是不安全的函数,也叫不可重入函数。相反,肯定有一个安全的函数,这个安全的函数又叫可重入函数。那么什么是可重入函数呢?所谓可重入是指一个可以被多个任务调用的过程,任务在调用时不必担心数据是否会出错。一...

2021-05-17 16:42:49 333

原创 不定长数组

不定长数组数组定义时会分配内存,如果想定义不定长数组,C语言不支持不定长数组,不能用array[],虽然编译能够通过,但是可能造成内存问题。但是我们可以通过动态数组实现一个不定长度的数组。...

2021-05-13 15:17:06 861

原创 不同数据类型在不同系统下占用字节数

不同数据类型在不同系统下占用字节数

2021-05-13 10:10:53 98

原创 C语言结构体字节对齐详解

C语言结构体占用内存总结struct Test{ int a; char b; int c;} test;理论上,结构体中的各个成员在内存中应该是连续储存的,就像数组里面的元素一样。事实上,也确实是这个样子的,不过和我们想象的有点不一样。按照我们最初的想法,变量test所占的内存为 4 + 1 + 4 = 9。但是我们写一个小代码验证一下发现和我们想的不一样。它的内存为12。因为 int类型是4个字节,所以是不是各个成员的内存都是按照最大的那个设置呢?毕......

2021-05-13 10:07:03 743 1

原创 优先级反转

优先级反转的描述:假设任务1,任务2,任务3;他们的优先级顺序分别为1 > 2 > 3。有一个稀缺资源S,S由一个信号量控制为互斥访问。任务3正在执行,并申请到了资源S;任务1抢占了任务3的执行,任务3挂起,任务1执行;任务1申请资源S,发现被占用,所以挂起,任务3恢复执行;任务2抢占了任务3的执行,任务3挂起,任务2执行;任务2执行完毕,任务3恢复;任务3释放资源S,任务1抢占资源S,任务1执行,任务3挂起;任务1执行完毕,任务3执行。以上可以看出,任务2虽然比任务1优先

2021-05-13 09:54:29 95

空空如也

空空如也

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

TA关注的人

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