自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 资源 (3)
  • 收藏
  • 关注

原创 蓝牙核心协议栈知识总结

最近终于静下心来总结一下蓝牙相关的知识了。从事蓝牙开发以来,从刚开始学习就为自己设置了将蓝牙核心协议和profile分开来的限制。在后面的开发中,这个限制越来越成为前进的障碍,现在是将它打破的时候了。 追根溯源,蓝牙就是一种无线传输介质。为了通过这种传输介质实现互联互通,又订立了Core Spec和各个profile。由于是一个整体,所以学习和开发中,就应该首先从整体出发去学习和思...

2020-10-10 10:04:46 289

原创 Ble Adv不能正常打包的分析

最近这一阶段有开发Ble 协议的相关内容,发现code好写,但是难调。第一个问题就很残酷,由于IP是国外的,已经过了支持的时间,没有办法,很多东西都只能自己做。但是问题还是主要存在于Ble Controller,因为从整个流程分析,已经将Adv的packet送到了Controller,还设置了Ble 的paramter和data,以及enable。而从实际的测试结果看,测试app就...

2020-10-10 10:04:08 343

原创 latm header与 ADTS header之间的转换

从目前手机的资料来看,大部分都是讲ADTS转换为LATM,却很少有资料将LATM的header转换为ADTS的header,虽然他们的原理是相同的,但是实际操作还是有些不一样 现在基于FFmpeg来做一套转码的程序如下:static int read_stream_mux_config(LATMContext *latmContext, GetBitContext *s){...

2020-10-10 10:03:54 598

原创 BT Controller EDR2/EDR3的调试总结

由于SPI连接了Baseband的硬件部分和RF,所以Baseband通过SPI来直接控制RF的收发。 RF在这个过程需要准确完成调制解调,并将发送数据发送给通信对等实体或者将接收的数据反馈给Baseband。关于调制解调,Baseband能做的就是通过SPI(或者其它手段,也许没有总线,就看厂家有没有自己同时设计baseband和rf的能力,这的确不是一件容易的事情)去控制RF...

2020-10-10 10:02:08 1103

原创 BT 射频天线电路设计对信号的影响

目前遇到的问题是在BT Controller发现有较高的重传率,重传率包含各种各样的err,包括crc、hec、sync、mic等error。但是将问题反馈给射频设计的单位,给出的反馈意见是由于射频电路设计与他们原版设计有出入,高频信号可能会受到干扰,进而导致重传率的上升。最新的修改与射频设计单位保持一致,新过来的开发板子经过验证,重传率有了较大的提升。...

2019-11-11 11:13:47 667

原创 BT TWS 听音乐无声问题

最近在调试TWS A2DP功能,发现在听音乐的时候只有一直耳机能听到声音,而另外一支耳机不能听到声音。分析了一下代码,发现有CRC Error和HEC error,遂加log获取更急详细的信息,并无收获。后来查找data stream的通路,发现加密方式对其有影响,便dump出寄存器看加密方式,确实两只耳机不一样,修改完成,问题就没有了...

2019-10-16 12:00:52 462

原创 BT TWS方案开发感悟

最近一直在开发TWS方案,要从无到有,绕过很多专利壁垒是一件不太容易的事情。 幸好在于原理不是那么复杂,经过一番钻研与探索,基本上成功开发出来了TWS。其中的感悟是,一些事情并不复杂,但是要是加上压力与很短的时间,事情就会变复杂起来,一切问题都会感到头大。今后,需要做到波澜不惊,以免影响到正常的开发流程 另外是,所有的事情都是由基本知识组成,分析事物需要使用这些知识,所...

2019-09-29 19:57:04 1462

原创 Bluetooth HFP 打电话无声分析

最近遇到一个打电话没有声音的问题,分析的过程如下,先看Ellisys log去初步查看SCO的link有没有建立,如果有建立。可以将SCO data提取出来分析,如果是由声音,那说明RX和TX的data是没有问题。 接下来需要去Check Audio的DMA有没有收到Controller 发过来的SCO data,如果没有收到,要看看DMA有没有配置正确。如果配置正确,还没有da...

2019-09-11 15:57:59 940 1

原创 Bluetooth Controller 断线分析(四)

Bluetooth Controller的断线真是有很多因素,相比于有线的总线传输,它总会遇到各种各样的问题,比如在干扰情况下导致的异常断线。 今天要说的就是由于强干扰导致的断线问题,比方在一个较强信号的传输会导致RX Quality太高。也就是说会最终导致信号不能正常解调。比方说在干扰情况下,解调器会lock住这个干扰信号,导致最终系统挂掉。在将来的SPI sig...

2019-09-03 11:09:52 272

原创 Bluetooth Controller 断线分析(三)

蓝牙的link异常断线真是特别多,以前不太理解Controller的同仁,知道自己跳入这个火坑之后才明白,同一类型的问题可以有各种不同的异常导致,它不同于BT Host,协议栈的问题只需要去认真分析log,就能够去做一个patch或者去做一个交互性的workround。而Controller确不一样,它分为软件部分和硬件部分,硬件部分又通过总线和RF 打交道,所以引起断线的问题可以...

2019-09-03 10:50:13 509

原创 BLE Controller ADV fail分析

最近要调通BLE相关的内容,今天将应用程序加上去之后,发现adv的packet打不出去。由于只能通过添加log来定位,所以分析的范围就扩大到Host,Controller两块,在ADV的通路上添加一些关键log,发现APP在调用GATT,ATT等相关协议栈都没有出现问题。后来去Controller定位,也在Controller对应的通路上添加一些关键log,发现也有正确设置数据。 ...

2019-08-20 17:23:55 269

原创 Bluetooth Controller 断线分析(二)

最近分析Controller断线问题,情景是在播放音乐过程中,播放一会就会发生Connection timeout的情况,这一般都会被认为是Controller的问题,所以第一时间去看Ellisys log,发现在从某个时序开始,Sink device就不会在发送ACK给 source device,最后会异常触发断线。 目前只能通过Ellisys,也只能分析一个大...

2019-08-19 10:50:22 336

原创 Bluetooth Controller断线分析(一)

一款通信设备的质量不是取决于上层的ap有多么的出色,而是在于底层的射频设备工作是否够稳定,毕竟这玩意门槛比较高。当然调试起来也就异常的耗时。 第一眼看到Connection timeout的时候,简单的认为是phy的时序参数设置的不合理,忽视了逻辑方面的问题,结果就经常调试射频参数,还是解决不了问题,最后在Controller里面修改了一个时序的逻辑后,问题就得以解...

2019-08-13 18:00:16 290

原创 Bluetooth A2DP卡音调试(一)

前面记录了在bluetooth RF参数配置不当导致重传过高问题,从而导致音频流断断续续。当RF参数调整到合适的时候,从Ellisys log看到重传已经有非常大的改善,重传率也可以控制在正常水准。但是音乐还是有卡顿,这个时候去看BT Host收到的data 流,发现其实也很正常,每隔固定的间歇传输相同大小的packet。关注的重点是时候转移到Audio part,由于最近在调试A...

2019-07-31 11:11:13 859

原创 Bluetooth A2DP 卡音调试

在播放a2dp过程中,出现卡音特别严重的现象,从Ellisys Log发现,重传率过高导致packet传输不顺畅 packet传输不顺畅是因为设备ack not response,从CMW500的测试仪器结果来看,频率是有一些偏差的。所以就去分析是不是射频的频偏严重导致的问题,其实这是一个刚开始的判断,在来来回回的拉锯战中,发现RF如果频偏严重导致重传达到50%的话...

2019-07-25 20:45:07 685

原创 BLE快速开发入门之Controller

最近一段时间在调试BR/EDR Controller和对应的射频,真正的感受到,不对基础知识理解,很难将蓝牙做好,在这里先抹一把眼泪。各种频偏、各种射频敏感性的矫正,已经将之前那颗傲娇的心碾压的粉粹。好了,现在开始BLE Controller的学习吧。 相比起BR/EDR的Controller,BLE确实是另外一套通信机制。 区别一:BD Adres...

2019-07-09 11:59:26 1124

原创 Bluetooth Controller BB Phsical Channel相关基础知识整理

最近需要做一些BT Controller相关的新功能开发,于是将Controller的Phsical Channel的知识点重新复习一遍,为了检讨已经忘却或者现在或者将来的忘却,做个忘却的纪念。 Phsical Channel 是为了描述Baseband层的连接而抽象的概念,那什么才可以叫做Phsical Channel 的连接呢?首先有三个基本要素,调频序列、pa...

2019-05-13 10:50:40 485

原创 关于Bluetooth Controller新功能开发的一些记录和感悟

最近在调试BT controller开发的新功能,由于承载新功能的IP是买的国外的,所以在Controller层面的代码开发完成之后,需要在FPGA上去验证该功能是否齐全。 第一步,首先要计算将新功能添加进来之后,编译完成之后的bin文件比之前的bin文件大多少,然后需要去bootloader里面的分区中修改对应的分区的大小,要能够容纳当前的bin文件,将新的boo...

2019-05-07 16:02:38 541

原创 BLE 快速开发入门

如上图所述,要实现一个BLE应用,首先需要一个支持BLE射频的芯片,然后还需要提供一个与此芯片配套的BLE协议栈,最后在协议栈上开发自己的应用。可以看出BLE协议栈是连接芯片和应用的桥梁,是实现整个BLE应用的关键。那BLE协议栈具体包含哪些功能呢?简单来说,BLE协议栈主要用来对你的应用数据进行层层封包,以生成一个满足BLE协议的空中数据包,也就是说,把应用数据包裹在一系列的帧头(head...

2019-04-17 19:46:46 2376

转载 蓝牙的sniff mode

https://blog.csdn.net/z497544849/article/details/84143224在解析蓝牙的sniff mode之前,我们先来回顾一下蓝牙有哪些连接状态。一、 蓝牙的连接状态转换图如下: http://blog.chinaunix.net/attachment/201605/6/21411227_1462520395149C.pngCon...

2019-03-12 15:02:51 4355 1

转载 Linux slab 分配器剖析

https://www.ibm.com/developerworks/cn/linux/l-linux-slab-allocator/动态内存管理内存管理的目标是提供一种方法,为实现各种目的而在各个用户之间实现内存共享。内存管理方法应该实现以下两个功能:最小化管理内存所需的时间 最大化用于一般应用的可用内存(最小化管理开销)内存管理实际上是一种关于权衡的零和游戏。您可以开发一种使用...

2019-02-28 17:33:55 121

转载 linux 内存管理

文章系转载摘 要:本章首先以应用程序开发者的角度审视Linux的进程内存管理,在此基础上逐步深入到内核中讨论系统物理内存管理和内核内存的使用方法。力求从外到 内、水到渠成地引导网友分析Linux的内存管理与使用。在本章最后,我们给出一个内存映射的实例,帮助网友们理解内核内存管理与用户内存管理之间的关 系,希望大家最终能驾驭Linux内存管理。前言内存管理一向是所有操作系统书籍不惜笔墨重...

2019-01-21 11:34:39 84

原创 对嵌入式系统使用消息队列的一些认识

    由于项目需要,在嵌入式操作系统的中间件设计中,采用了消息队列来作为各个模块之间的通信方式,同时允许用户层的不同用户来访问中间件的各个模块。    现在列出下面三个问题来加深对消息队列的理解,以便后续的架构优化:问题1:为什么要使用消息队列?问题2:消息队列的优缺点?问题3:如何增强消息队列使用的稳定性?问题1:为什么会使用消息队列?     由于业务划分有用户层,中间层...

2018-12-20 12:06:56 2879

原创 蓝牙HCI学习总结

主要内容:(1)什么是HCI(2)为什么有HCI(3)HCI怎么用什么是HCI HCI是介于BT Host和BT Controller之间的一层通信接口,完成Host 和Controller之间的command、event、data之间的交换。为什么有HCI 由于BT Host和Controller运行于上下层,为了完成他们之间的信息交换,需要规定Host访问...

2018-12-14 11:33:41 1294

转载 Linux链接脚本详解

转载自:https://www.cnblogs.com/li-hao/p/4107964.html一、 概论每一个链接过程都由链接脚本(linker script, 一般以lds作为文件的后缀名)控制. 链接脚本主要用于规定如何把输入文件内的section放入输出文件内, 并控制输出文件内各部分在程序地址空间内的布局. 但你也可以用连接命令做一些其他事情.连接器有个默认的内置连接脚本,...

2018-11-12 11:38:02 300

原创 声明,定义,extern,static,const关键字的一些理解

变量声明和变量定义    变量定义:用于为变量分配存储空间,还可为变量指定初始值。程序中,变量有且仅有一个定义。    变量声明:用于向程序表明变量的类型和名字。    定义包含声明:当定义变量时我们声明了它的类型和名字,同时分配了它的内存声明函数和函数定义    对于函数来说,无论我们在.h中或者.c中都会发现有如下的格式:void func();这是函数声明,编译器会默认在...

2018-11-10 13:56:31 183

转载 学习如何写Makefile

文章出处:http://blog.csdn.net/haoel/article/details/2886转载方便自己随时学习,随时查询,感谢原创大神的辛苦付出和无私奉献1. makefile很重要什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile...

2018-10-10 11:14:56 144

原创 BT MESH学习系列一

最近开始学习BT MESH系列协议与传统的BR/EDR和BLE相比,MESH core stack还是采用BLE,但是协议层却是大变样,具体架构如下:BLE Core Spec将不会做为主要介绍,主要介绍Mesh自身所定义的各个layer,由于翻译水平有限,直接摘录原文(1)Model layer: defines models that are used to standardiz...

2018-10-10 10:58:48 3475

原创 蓝牙协议AVRCP的学习

最近又重新读了一遍蓝牙AVRCP的协议,相比于之前的学习。这次有如下几点需要总结:(1)对等实体的AVRCPP交互过程中,get capability这个功能非常重要,因为Notify cmd基本上通过该cmd获取到对方支持的event,根据对方支持的event来register(2)另外,在coding过程中,timer的使用也非常灵活,需要根据不同的场景去设置不同的timer(3)根...

2018-09-21 12:00:47 4346

转载 Linux内核的整体架构简介

1. 前言本文是“Linux内核分析”系列文章的第一篇,会以内核的核心功能为出发点,描述Linux内核的整体架构,以及架构之下主要的软件子系统。之后,会介绍Linux内核源文件的目录结构,并和各个软件子系统对应。注:本文和其它的“Linux内核分析”文章都基于如下约定:  a) 内核版本为Linux 3.10.29(该版本是一个long term的版本,会被Linux社区持续维护至少2年...

2018-08-29 11:20:28 109

原创 XXX 未定义的引用的分析

         最近在项目过程中,移植的时候编译器提示“XXX 未定义的引用”,一般是链接没有找到对应XXX的具体实现所报出来的问题。出现这个问题的原因,刚开始是以为没有将的相应的函数实现,但是从对应的文件中能够找到XXX的实现       接下来,百度搜索了几篇文章,发现说有可能是链接过程中,生成的.o文件顺序不对导致的,但是我编译的文件不是属于静态编译的,因此和链接的顺序没有关系。   ...

2018-08-08 16:49:30 5666

原创 SBC 算法简介与PLC的优化简介

1. SBC算法简介SBC是sub band code的缩写,也可称为子带编码 在A2DP协议中,SBC算法是默认支持的 蓝牙SBC算法是一种以中等比特率传递高质量音频数据的低计算复杂度的音频编码算法2. 算法基本框图SBC系统使用一个余弦调制的滤波器组,用来解析和同步。滤波器组可设定成4或8个子带 子带信号的量化采用比特分配器和自适应脉冲编码器组调制 可用的比特位数和编码器的块...

2018-08-06 15:49:46 3599

转载 AAC文件格式解析

OUTLINE:         * AAC概述         * AAC规格简述         * AAC特点             * AAC音频文件解析            ——ADIF&ADTS格式            ——ADIF&ADTS头信息            ——ADIF&ADTS数据信息            ——AAC文件处理流程...

2018-08-06 09:57:31 11015

转载 git subtree有效管理公共第三方lib

https://www.cnblogs.com/kidsitcn/p/4541890.html 如果你的项目中有很多第三方的lib,你希望使用它,并且也希望可能对该lib做修改并且贡献到原始的项目中去,或者你的项目希望模块化,分为几个 repo单独维护,那么git subtree就是一个选择。git subtree管理的子项目在父项目中作为一个完整的代码copy存在,并不包含历史信息。综合考...

2018-07-20 14:40:01 218

原创 AAC Transport format学习

 原文出处:http://www.mpeg-audio.org/docs/w14751_(mpeg_AAC_TransportFormats).pdf       目前audio的压缩标准主要有MPEG2和MPEG4等其他几种,AAC是MPEG标准中的一种压缩编码格式,MPEG2的传输格式和存储格式主要包括ADTS和ADIF,ADTS主要用来对AAC压缩过编码进行传输格式封包,而A...

2018-07-04 16:27:07 190

转载 GIT 常用命令

本篇博客是转发的别人的,原文地址:http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html 下面是我整理的常用 Git 命令清单。几个专用名词的译名如下。 Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库一、新建代码库...

2018-07-03 20:06:57 80

基于ARM-linux-gcc

这是制作linux的交叉编译器的步骤的第二步,这个资料是glibc,是制作最关键一步的基础

2011-07-07

基于ARM-linux-gcc交叉编译器的制作

本资料是制作交叉编译器的一些基本材料,有助于刚入门的人只做自己的交叉编译器

2011-07-07

空空如也

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

TA关注的人

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