自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 蓝牙OBEX和PBAP协议概述

Name:要下载的电话本名称,是虚拟文件夹的绝对路径,比如你要下载手机中的所有的电话本,那么这个名字就是:telecom/pb.vcf,比如你要下载 SIM 卡中的电话本,这个名字就是:SIM1/telecom/pb.vcf,比如你要下载手机全部的通话记录,那么 name 就是:telecom/cch.vcf ,总之就是虚拟文件夹的绝对路径+.vcf 格式,另外这里要提下,编码方式是 unicode,也就是一个字符占用两个byte.Objects 在这里没有高级的技术含义,而是视你的应用而定。

2025-05-20 15:40:36 633

原创 蓝牙HFP协议概述

支持 in band ring 的 AG 在 incoming call 的时候,会先建立 audio connection(SCO),然后在 RING AT command 之后传过来声音,也就是手机铃声,直到被接听或者挂断,或者其他原因中断incoming call 为止,而 no in band ring 是在 call active 的时候才会建立 SCO,所以此时候 HF 要在 incoming call 的时候自己做一个铃声。不过话又说回来,SLC其实也是发一堆AT命令的过程。

2025-05-17 15:46:37 609

原创 蓝牙AVRCP协议概述

State_flag:分 press 跟 realease 动作,发送press 的时候这个值为 0,realease 的时候这个值为 1。AVCTP 的连接分为两个通道:Control 通道跟 Brwoing 通道,对应的 L2CAP PSM 不同,control。色都可以发起连接,注意一点,AVCTP browing 部分基于 L2CAP 不能用 basic mode,需要用。传输媒体信息通过基于 OBEX。Operation_ID:操作 ID,从0-7f,包括音量加减啦,上下一曲啦,播放暂停啦等等。

2025-05-16 19:51:28 421

原创 蓝牙AVCTP协议概述

Profile Identifier (PID):此部分填写 16bit 的 UUID,比如 AVRCP 的 UUID 0x110e后续的 Message Infomation 就是上层协议的数据。Number of AVCTP Packets:这个是开始封包才有的,标示整个分隔封包的数量,包含这个开始封包,所以此封包的个数肯定是大于 1 的。Audio/Video 的控制信号交换的格式和机制,它是一个总体的协议,具体的控制。AVCTP 是基于 L2CAP 协议的,他有两组 PSM,

2025-05-16 17:47:46 294

原创 蓝牙A2DP协议概述

如果F位设置为1,该字段表示剩余分片的数量,包括当前分片。例如,如果有三个片段,那么计数器的值分别为3、2和1。例如,音乐播放器可默认使用 8 子带 + 16 块配置,而视频通话应用则应选择 4 子带 + 8 块以减少延迟。Sampling Frequency:这部分是采样频率,Source 端强制要求 44.1KHz,48KHz支持一种,Sink 要求 44.1KHz,48Khz 都支持。Loudness 分配 更符合人耳感知特性,适合语音和流行音乐,尤其是需要突出人声的场景。

2025-05-16 16:17:53 371

原创 蓝牙AVDTP协议概述

A/V stream 和 A/V signaling 都在 L2CAP 上传输。Signaling 负责 stream 的发现、配置、建立和传输控制。Protocol (RTP)和 RTP Control Protocol(RTCP)组成。AVDTP 是在 L2CAP 上传输。AVDTP 的传输机制和消息格式是以 RTP 为基础的。议),主要负责 A/V stream 的协商、建立及传输程序,还指定了设备之前传输。AVDTP 有专门的 PSM(0x19)值。A/V stream 的消息格式.

2025-05-12 21:55:00 301

原创 蓝牙SPP协议概述

SPP通过L2CAP的分段重组和QoS机制,结合RFCOMM的串口模拟能力,实现了设备间类似串口的可靠数据传输。其链接建立过程涉及GAP、SDP、L2CAP和RFCOMM的多层交互,数据收发则依赖L2CAP的分段与流控、RFCOMM的帧封装与信号仿真。这一机制在车载通信、工业设备互联等场景中广泛应用,为传统串口设备的无线化提供了无缝解决方案。

2025-05-11 14:13:22 555

原创 蓝牙RFCOMM协议概述

RFCOMM 协议提供了对 L2CAP 协议上的串行端口的模拟。该协议基于 ETSI 标准 GSM 07.10。RFCOMM 采用与 TS07.10 相同的字节序列方式。所有二进制数字都按照从低位到高位的顺序,从左至右读。两个使用RFCOMM通信的蓝牙设备可以打开多个仿真串行端口。RFCOMM支持多达60个开放仿真端口;但是,设备中可以使用的端口数量是特定于实现的。

2025-05-11 11:16:29 794

原创 蓝牙GAP协议概述

BR/EDR/LE实现应具有单一的蓝牙设备名称,无论用于执行名称发现过程的物理通道如何,该名称都应相同。对于LE物理通道,该名称可以从第12.1节定义的设备名称特征中读取。GAP规定,经典蓝牙中有initiator和acceptor两种角色,LE中有Broadcaster,Observer,Peripheral,Central四种角色。个人理解,GAP里基本上是说明了某个设备该有什么样的配置,以及它所需要的一些属性,地址,名字,pin码,等等。这些属性,是其他服务或者协议会用到的。

2025-05-10 15:48:45 243

原创 蓝牙SDP协议概述

整个 SDP 是基于 C/S 架构,如下图:总结起来,整个服务器应该包含如下结构(0 条或者多条记录):服务类定义了这个服务记录中包含的属性;包括属性的id以及属性值的用法和格式每个服务类都有个UUID。

2025-05-10 12:06:36 788

原创 蓝牙L2CAP协议概述

屏蔽底层差异:统一传统蓝牙和低功耗蓝牙的传输接口,让上层协议(如GATT、RFCOMM)无需关心物理层细节。灵活适配需求:通过多信道、MTU协商、QoS控制,满足从音频流(高吞吐量)到传感器数据(低功耗)的多样化场景。可靠性与效率平衡:面向连接信道保证数据可靠传输,无连接信道支持轻量化广播,结合底层链路特性优化传输效率。理解L2CAP的设计逻辑,是掌握蓝牙协议栈架构(尤其是BLE数据传输机制)的关键,也是开发蓝牙应用(如智能设备通信、音频传输协议)的核心知识基础。

2025-05-07 20:42:39 1037

原创 ubuntu24.04使用open-vm-tools无法在主机和虚拟机之间拖拽文件夹

搜索发现是Ubuntu(22.04,20.04等)默认启用了新版的窗口系统Wayland而非原来的X11,VMware Tools似乎未支持这个特性。删掉WaylandEnable=false这一行最开始的#号。重启虚拟机,发现可以复制粘贴文字,但是文件和文件夹仍然不行。最近安装了vmware用ubuntu24.04作为虚拟机。然后发现无法在主机和虚拟机之间复制粘贴。接下来禁用Wayland。

2025-01-02 14:49:55 1545 4

原创 在预编译阶段打印宏(变量值)方法

可以打印MY_MACRO=42。

2024-06-25 11:46:33 566

原创 基于stm32f429运行zephyr以及mcuboot

由于项目需要,对zephyr和mcuboot进行了初步学习,并基于stm32f429(用的是正点原子的阿波罗开发板)进行了一些实操,对这个过程进行一下记录。

2024-06-07 09:48:54 3072 1

原创 《嵌入式C语言自我修养:从芯片、编译器到操作系统》读书笔记

在CPU内部,Cache和寄存器的电路比内存DRAM复杂了很多,会占用很大的芯片面积,如果大量使用,芯片发热量会急剧上升,所以在CPU内部寄存器一般也就几十个,靠近CPU的一级Cache也就几十千字节。在CPU内部也是如此,CPU内部的数字电路是靠时钟驱动来工作的,既然每条指令的执行时钟周期数不变,即执行每条指令都需要3个时钟周期,但是我们可以通过缩短一个时钟周期的时间来提升效率,即减少每条指令所耗费的时间。流水线是靠指令的并行来提升性能的,第一条指令还没有执行完,下面的第二条指令就开始取指、译码了。

2024-05-30 18:02:04 1360

原创 linux下的进程间通信

semctl()系统调用:semctl();原型:int semctl(int semid,int semnum,int cmd,union semunarg);返回值:如果成功,则为一个正数。如果失败,则为-1:errno=EACCESS(权限不够)EFAULT(arg指向的地址无效)EIDRM(信号量集已经删除)EINVAL(信号量集不存在,或者semid无效)EPERM(EUID没有cmd的权利)ERANGE(信号量值超出范围)

2024-03-16 17:45:00 1194

原创 Linux下面线程的操作、多线程的同步和互斥

​——本文一个例子展开,介绍Linux下面线程的操作、多线程的同步和互斥。前言线程?为什么有了进程还需要线程呢,他们有什么区别?使用线程有什么优势呢?还有多线程编程的一些细节问题,如线程之间怎样同步、互斥,这些东西将在本文中介绍。我在某QQ群里见到这样一道面试题:是否熟悉POSIX多线程编程技术?如熟悉,编写程序完成如下功能:1)有一int型全局变量g_Flag初始值为0;2)在主线称中起动线程1,打印“this is thread1”,并将g_Flag设置为1。

2024-03-16 17:39:37 656 1

原创 struct file结构(系统打开文件表) 和 进程struct files_struct(用户打开文件表) [转]

通常,数组的第一个元素(索引为0)是进程的标准输入文件,数组的第二个元素(索引为1)是进程的标准输出文件,数组的第三个元素(索引为2)是进程的标准错误文件(参见图8.3)。该函数将文件对象的地址作为参数,并递减文件对象引用计数器f_count的值,另外,如果这个域变为NULL,该函数就调用文件操作的“释放”方法(如果已定义),释放相应的目录项对象,并递减对应索引节点对象的i_writeaccess域的值(如果该文件是写打开),最后,将该文件对象从“正在使用”链表移到“未使用”链表。

2024-03-16 17:32:29 1462

原创 友善之臂comtest.c串口编译程序详解 希望对大家有帮助

测试串口2 需要借助另一台带有串口的PC,连接好 COM2 和另一台PC的串口,并设置该PC的超级终端为波特率115200 ,序,它使用标准的系统调用,和硬件无关。一般Linux 系统系统启动后,串口 0,1,2对应的设。说明:armcomtest 是友善之臂为了方便测试而开发的linux 下的简易实用串口终端程。这时如果输入字符会在另一台PC的超级终端出现,反之亦然。备名分别为/dev/ttySAC0,1,2,3。无流控制,其他默认。

2024-03-16 17:29:17 445

原创 C语言宏定义,内置宏,__FILE__,__LINE__,## 用法

}while(0) 把它包裹起来,成为一个独立的语法单元,从而不会与上下文发生混淆。}while(0)这种无用的循环并进行优化,所以使用这种方法也不会导致程序的性能降低。加这层宏的用意是把所有宏的参数在这层里全部展开, 那么在转换宏里的那一个宏(_STR)就能得到正确的宏参数.如果编译不是标准的,则可能仅支持以上宏名中的几个,或根本不支持。2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植。2),存在一个独立的block,可以用来进行变量定义,进行比较复杂的实现。

2024-03-16 17:01:23 1545

原创 zephyr学习笔记

zephyr主要支持BLE,对BR/EDR仅提供有限的支持core5.3中BLE功能几乎全部支持,包括LE audio和mesh;BR/EDR仅支持部分,GPA,L2CAP,RFCOMM,SDP,(不过看到zephyr代码里也有HF,A2DP,AVDTP等)zephyr可以仅被配置为controller或者host,也可以配置为既有controller也有hostzephyr仅做host时,支持跟多个controller同时通信。

2024-03-01 19:37:18 2064

原创 基于stm32f429运行zephyr以及mcuboot

《Linux设备驱动开发详解》读书笔记本书主要介绍linux设备驱动开发的方法,共有21章:linux设备驱动概述及开发环境搭建驱动设计的硬件基础linux内核及内核编程linux内核模块linux文件系统与设备文件字符设备驱动linux设备驱动中的并发控制linux设备驱动中的阻塞与非阻塞I/Olinux设备驱动中的异步通知与异步I/O中断与时钟内存与I/O访问linux设备驱动的软件架构思想linux块设备驱动linux网络设备驱动I2c核心、总线与设备驱动USB主机

2024-01-24 12:19:29 1944 1

原创 linux设备驱动开发学习笔记

模块源代码中用module_init宏声明了一个函数(在我们这个例子里是chrdev_init函数),作用就是指定chrdev_init这个函数和insmod命令绑定起来,也就是说当我们insmod module_test.ko时,insmod命令内部实际执行的操作就是帮我们调用chrdev_init函数。应用编程中包含的头文件是应用层的头文件,是应用程序的编译器带来的(譬如gcc的头文件路径在 /usr/include下,这些东西是和操作系统无关的)。1是内核源码树的目录,你必须根据自己的编译环境。

2024-01-24 12:18:43 422

原创 蓝牙协议栈学习笔记

H4 是 UART 传输中最简的一个 Transport,只是在HCI raw data 的前面加一个 type 就行,如下 HCI 一共有五种 HCI data:1)HCI COMMAND:由蓝牙协议栈发送给芯片的命令(HOST->CONTROLLER)2)HCI EVENT:由蓝牙芯片上报给蓝牙协议栈的事件(HOST

2023-12-12 16:23:31 4408 7

原创 BLE协议栈入门学习

它定义了空中传输的几种类型的数据包和一个相关的空中接口协议,它使用一个状态机来运行,根据状态的不同,链路层可能以许多完全不同的方式运作,由许多类型的事件驱动。定义了许多影响链路状态或者链路使用参数的控制程序。也定义了无线信道的选择和分类。链路层既支持有连接和无连接通信,也支持确定性和(稍微)随机的事件时机,它支持点对点通信,也支持一对多通信。

2023-11-20 14:29:04 651

原创 MVP架构学习笔记

下面介绍什么是MVP架构:M(模型):负责处理数据和业务逻辑的组件。模型独立于视图和表示器,处理数据的获取、存储、验证和操作等任务。V(视图):应用程序的用户界面,负责显示数据和接收用户输入。视图通常是被动监听的,通过表示器接收数据并将用户操作传递给表示器进行处理。P(表示器):模型和视图之间的中间层,负责协调和处理交互的组件。表示器接收用户输入,通过模型获取数据,并将数据传递给视图进行显示。它还可以响应视图的事件,调用相应的模型方法来更新数据。

2023-10-20 11:38:28 192

原创 移植RTOS的大体思路

最首先当然是去官网看看是不是已经支持目标芯片啦,没有的话,就需要自己手动移植了。

2023-09-25 22:39:32 315

原创 lol狼人打野初级思路

上河道蟹(观察局势,中上线权,换血情况,敌方打野位置)抓人成功则打龙,失败则刷石头人或者红buff。F6(买不起提亚马特则不刷)下河道蟹(如果没被敌方刷掉)成功则打先锋,失败可尝试入侵。回家(买提亚马特1200)狼人刷野(速三抓人)

2023-09-09 10:34:54 183

原创 Git 调试-blame/bisect

接下来就是行号和文件内容。假设你刚刚在线上环境部署了你的代码,接着收到一些 bug 反馈, 但这些 bug 在你之前的开发环境里没有出现过,这让你百思不得其解。你重新查看了你的代码,发现这个问题是可以被重现的,但是你不知道哪里出了问题。通常来说,你会认为复制代码过来的那个提交是最原始的提交,因为那是你第一次在这个文件中修改了这几行。但 Git 会告诉你,你第一次写这几行代码的那个提交才是原始提交,即使这是在另外一个文件里写的。现在你在另一个提交上了,这个提交是刚刚那个测试通过的提交和有问题的提交的中点。

2023-07-18 21:19:58 132

原创 嵌入式学习笔记

学习朱友鹏嵌入式视频课的笔记以及课件记录

2023-02-08 11:30:26 887

原创 excel 删除多余回车

excel 删除多余回车

2022-09-28 15:40:55 2044 3

原创 Python学习笔记

要创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator可以通过next()函数获得generator的下一个返回值:next(g)0next(g)1使用for循环,因为generator也是可迭代对象:…01定义generator的另一种方法。如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator1/ \1 1/ \ / \1 2 1。

2022-09-06 11:23:13 1308

原创 软件经理心得

个人对软件经理工作的一些思考与总结

2022-09-06 10:14:24 984

原创 linux应用编程学习

查man手册man 1 xx查linux shell命令,man 2 xxx查API, man 3 xxx查库函数文件平时是存在块设备中的文件系统中的,我们把这种文件叫静态文件。当我们去open打开一个文件时,linux内核做的操作包括:内核在进程中建立了一个打开文件的数据结构,记录下我们打开的这个文件;内核在内存中申请一段内存,并且将静态文件的内容从块设备中读取到内存中特定地址管理存放(叫动态文件)。打开文件后,以后对这个文件的读写操作,都是针对内存中这一份动态文件的,而并不是针对静态文件的。当我们对动态

2022-09-06 09:58:22 486

原创 NFC技术标准简单说明

nfc技术相关标准简单说明

2022-09-05 11:10:58 4904

原创 Ubuntu虚拟机反复在登录界面循环问题

在登录界面,按ctrl+alt+f1,进入命令行,运行apt-get clean,释放部分空间,即可正常登录。登录Ubuntu的时候发现登录界面不对劲,之前从来没有看到过。而且无法登录,反复在登录界面循环。百度,说原因有两个:1.环境变量修改有问题;2.显卡驱动有问题;后发现是磁盘空间不足,虚拟机只分配了20G。均尝试数次修改,未果。...

2022-08-30 17:33:59 2827

原创 SSL/TLS协议理解

SSL/TLS相关的一些概念记录和理解

2022-07-11 21:45:00 255

原创 《高质量程序设计指南》读书笔记

实际上这是一本讲C++的书,被书名骗了

2022-07-11 21:40:49 470

转载 https协议相关说明

转载自:https://mp.weixin.qq.com/s/UiGEzXoCn3F66NRz_T9crA原创:涛哥coding涛6月9日作者对https 解释的入目三分啊(全文太长,太懒不想看,-_-b 那就直接拉到底部看总结 )前面的文章中,提到了,https是在TCP协议与http之间加了一个控制安全传输的SSL协议,也就是说,直接运行在TCP之上的HTTP是普通的HTTP,运行在SSL/TLS上的HTTP则是HTTPS。这几个协议在计算机网络的OSI七层模型中的位置如下表所示:...

2022-01-25 20:21:04 139

转载 NB-IoT协议及其PSM(转载)

物联网技术发展趋势是LPWAN,其中尤其以NB-IoT和eMTC最为代表。NB-IoT和eMTC各有优劣,使用场景互有不同。低功耗可以说是物联网技术的核心,本着关注低功耗的方向,适当了解NB IoT在整个LTE中的位置,NB-IoT的协议,重点关注NB-IoT低功耗部分。1.NB-IoT背景NB-IoT属于LPWAN技术的一种,是一种为物联网而设计的窄带无线技术。NB-IoT是由3GPP规范的,类似的技术还包括eMTC。NB-IoT技术规格在3GPP的R13被冻结。NB-IoT主要关注in.

2022-01-19 16:15:00 3540

空空如也

空空如也

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

TA关注的人

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