- 博客(28)
- 资源 (2)
- 收藏
- 关注
原创 蓝牙HFP
这其实还是和蓝牙电话应用密切相关的,蓝牙电话收到音频链路创建成功的广播后通过AudioManager.requestAudioFocus()申请到系统的音频焦点后,audio模块会根据申请焦点的stream type判断其级别,高级别的音源可以打断低级别的音源(比如:听音乐时打电话,会先暂停掉音乐)。编码方式有:SBC、AAC、APTX、APTX_HD、LDAC这五种编码方式,最基础的编码方式是SBC,支持蓝牙多媒体播放的设备必须支持该编码方式,编码质量最好的是LDAC。编码方式有:CVSD、mSBC。
2024-06-12 19:29:20 421
原创 linux 下ALSA介绍
1、ALSA概述ALSA表示高级Linux声音体系结构(Advanced Linux Sound Architecture)。它由一系列内核驱动,应用程序编译接口(API)以及支持Linux下声音的实用程序组成。ALSA项目发起的原由是Linux下的声卡驱动(OSS/Free drivers)没有获得积极的维护。而且落后于新的声卡技术。Jaroslav Kysela早先写了一个声卡驱动,并由此开始了ALSA项目,随后,更多的开发者加入到开发队伍中,更多的声卡获得支持,API的结构也获得了重组。
2024-06-12 19:08:04 1010
原创 HWA和BSS区别
基带信号处理是雷达系统中从接收天线获取的射频信号转换为可用信息的关键步骤。芯片中的HWA(Hardware Accelerator)模块功能主要是为了加速雷达信号处理的特定任务。BSS模块通过高效的基带信号处理,确保雷达系统能够从接收到的射频信号中提取出有用的信息,进行目标检测、速度估计和位置跟踪,从而实现雷达系统的主要功能。HWA模块通过硬件加速这些计算密集型任务,可以大幅提高雷达系统的性能和效率,降低功耗,同时提高实时性和检测精度。
2024-06-11 17:09:41 392
原创 C语言0长度数组(可变数组/柔性数组)
Linux内核编程时常用的likely()和unlikely()底层调用的likely_notrace()、unlikely_notrace()就是基于 __builtin_expect(EXP,C)实现的。内建函数__builtin_return_address(LEVEL)返回当前函数或其调用者的返回地址,参数LEVEL指定调用栈的级数,如0表示当前函数的返回地址,1表示当前函数的调用者的返回地址。GNU C把包含在括号中的复合语句看成是一个表达式,称为语句表达式,它可以出现在任何允许表达式的地 方。
2024-06-05 22:11:04 685
原创 AVDTP协议解析
一、概述1、框架AVDTP( A/V Distribution Transport Protocol)定义了A/V stream协商、建链和传输过程,也规定了两个设备传输数据的格式;AVDTP能如下:a、发现设备支持的功能;b、提供建立连接和release链接机制;c、提供具有实时性的数据包和机制,包括最小传输延时机制、包含时钟的数据包机制、Qos包和传输状态机制、带宽优化机制;d、提供修复机制;
2024-06-04 19:49:14 456
原创 蓝牙AVRCP协议解析
还有其他一些功能,如continuation commands,Group navigation,Absolute Volume,Media Player Selection,Now Playing等,这里就不详细看了,我们开发时遇到随时查下spec就可以,了解就好;CT想TG提供NOTIFY指令集,TG需要向已经注册的NOTIFY指令集给CT发送INTERIM响应;看到这里没有糊涂吧,想下前一篇介绍的AVCTP帧格式,AVCTP只定义了头,具体信息部分是由具体协议决定,上面就是AVRCP的协议格式;
2024-06-01 16:26:25 2420
原创 bt的sniff mode
由于POLL packet只能在master-to-slave slot发送,所以N-sniff attempt最大值为(T-sniff / 2)。N-sniff timeout —— 如果Slave在一次POLL packet - NULL packet exchange之后立刻就进入低功耗状态,那么Slave就会错过Master紧接着发送的ACL data,Slave将只能在下一个Anchor Point的时刻才有机会接收Master发送的ACL data了。这就导致了Slave不能及时响应。
2024-06-01 12:10:40 338
原创 指针用法详解
对于普通的指针而言,解引只需要根据类型来取出数据即可,但函数指针是要调用一个函数,其解引不可能是将数据取出,实际上函数指针的解引本质上是执行函数的过程,只是这个执行函数是使用的call指令并不是之前的函数,而是函数指针的值,即函数的地址。,这个操作符对于指针有两个不同的意义,当在申明的时候是申明一个指针,而当在使用p指针时是解引操作,解引操作右边是一个地址,这样解引操作的意思就是该地址内存中的数据。函数指针在Linux内核中用的非常多,而且在设计操作系统的时候也会用到,因此这里将详细讲解函数指针。
2024-05-31 15:08:43 838
原创 ble connection过程
每个 CE 的第一个交互点,我们称之为锚点(anchor point),寻找锚点,是个细致的活路,因为空口交互,均是以 us 为单位,马虎不得。那么怎么样才算是认为断连呢?这个好理解吧,比如这个时间为 5s,那么如果 Slave 断电了,但是 Master 并不知道,还在傻傻的按照每个 Interval 在发送包,但是此刻,Master 就不会接收到来自 Slave 的回应,Master 便怀恨在心,一直计数,直到 TO 到了,Master 便死心了,认为 Slave 已经 Offline,上报连接断开。
2024-05-31 14:43:22 835
原创 BLE空中升级OTA流程
所谓DFU(Device Firmware Update),就是设备固件升级的意思,而OTA(Over The Air)是实现DFU的一种方式而已,准确说,OTA的全称应该是OTA DFU,即通过空中无线方式实现设备固件升级。只不过大家为了方便起见,直接用OTA来指代固件空中升级(有时候大家也将OTA称为FOTA,即Firmware OTA,这种称呼意思更明了一些)。只要是通过无线通信方式实现DFU的,都可以叫OTA,比如2G/3G/4G/WiFi/蓝牙/NFC/Zigbee,他们都支持OTA。
2024-05-31 14:35:57 1308
原创 蓝牙传输速度多快
原文:http://www.informit.com/articles/article.aspx?p=21325译者按:本文主要翻译给需要在L2CAP和RFCOMM上开发应用的同学,了解怎样评估蓝牙速率是否满足需求以及曾样进行优化。原文发表2001,不涉及Bluetooth 3.0+HS。本质上HS的数据传输过程已经和蓝牙无关了,而是通过802.11进行传输,蓝牙只是完成了握手。也许你已经听说过了蓝牙的数据速率范围可以从每秒1兆字节到每秒几千比特。为什么会有如此大的差距呢?
2024-05-29 11:53:37 863
原创 TinyMaix的关键特性
1. 核心代码少于400行(tm_layers.c + tm_model.c + arch_cpu.h),代码段(.text)少于3KB。1. 核心代码少于400行(tm_layers.c + tm_model.c + arch_cpu.h),代码段(.text)少于3KB。3. 支持INT8/FP32/FP16模型,实验性支持FP8模型,支持Keras H5或TFLite模型转换。3. 支持INT8/FP32/FP16模型,实验性支持FP8模型,支持Keras H5或TFLite模型转换。
2024-05-29 11:35:10 177
原创 安全启动设计
安全启动的工作原理是通过验证计算机的启动代码的数字签名来确保其完整性和真实性。在安全启动过程中,计算机的固件会验证这些启动代码的数字签名,以确保它们是由可信的实体签名的。安全启动是包含在统一可扩展固件接口(UEFI)规范中的一项功能,可以在支持UEFI的计算机上使用。总的来说,安全启动是一种通过验证启动代码的数字签名来确保计算机启动过程的安全性的技术。安全启动(Secure Boot)是一种计算机启动过程中的安全机制,旨在防止恶意软件或未经授权的操作系统加载到计算机中。
2024-05-29 11:31:30 249
原创 GATT协议
通常,一个BLE设备充当GATT服务器,而另一个BLE设备(例如智能手机或电脑)充当GATT客户端。GATT服务器将服务和特征公开为其提供的数据,而GATT客户端可以发起连接、发现服务和特征、读取和写入数据,并订阅通知。GATT协议用于构建基于BLE的数据交换应用,例如智能手表、健康和健身设备、传感器、追踪器和其他连接的设备。:GATT服务器是BLE设备上的数据库,它包含一组称为"特征"的数据块,这些特征可以被客户端访问。客户端可以请求连接到服务器、发现服务和特征、读取和写入特征的值,以及订阅特征的通知。
2023-11-07 20:06:21 585
原创 PCM接口介绍
音频PCM(脉冲编码调制)接口是一种用于数字音频传输的常见接口标准。它通过对模拟音频信号进行采样、量化和编码,将其转换为数字音频数据流,然后通过一种接口传输这些数据。PCM接口将模拟音频信号按照一定的时间间隔采样,将每个采样值量化成数字形式。采样频率和位深度是两个关键参数,它们决定了音频的质量和数据量。采样和量化后,PCM数据通过编码转换为二进制形式。通常,音频PCM数据以线性PCM格式编码,其中每个采样值以二进制数值表示。数字音频数据通过音频PCM接口传输。
2023-11-07 10:19:04 2018 1
原创 kernel配置
]Enable AIO support,支持AIO(Asynchronous I/O 异步事件非阻塞I/O),(包含aio.h, aio_read,向内核发出读命令,aio_write向内核写命令,详细见‘AIO介绍‘文档),AIO机制为服务器端高并发应用程序提供了一种性能优化的手段。Enable access to .config through /proc/config.gz,上一项的子项,可以通过/proc/ config.gz访问.config配置,上一个选的话,建议选上。
2023-06-28 21:15:20 442 1
转载 经典蓝牙(BR/EDR)设备连接过程分析
经典蓝牙(BR/EDR)设备连接过程分析 yk150915 2019-01-15 22:07:50 ...
2021-09-02 15:53:53 1609
riscv-spec-v2.1.pdf
2020-07-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人