我的技术
wzfj12345
热爱技术.
展开
-
Bluetooth:关于计算2-EV3的实际传输时间
假设这个eSCO 包的信息如下:2-EV3,payload是60Byte,那么这个包实际传输时间是多少呢我们知道EDR 的封包格式:Access code + HEADER + GUARD + SYNC + PAYLOAD + TAILERaccess code是72bit ,HEADER 是 54bit,这两部分是按照basic rate进行传输的,即1Mb...原创 2020-03-12 15:23:18 · 673 阅读 · 0 评论 -
Bluetooth:为什么packet header length是54bit
因为packet header是由如下组成:LT_ADDR(3bit) + TYPE(4bit) + FLOW(1bit) + ARQN(1bit) + SEQN(1bit) + HEC(8bit) = 18bit;这18bit 在经过 1/3 FEC后变成 54bit;原创 2020-03-11 21:30:11 · 337 阅读 · 0 评论 -
Bluetooth:access code的重要性
有三种AC,分别是DAC、IAC、CAC。DAC : device access code,被用在page 、page scan 、page response等过程,是从paged device 地址的LAP继承而来。IAC : inqiuiry access code,被用在inquiry过程,是从64个IACs(GIAC是0x9E8B33)继承而来。CAC : channel...原创 2020-03-11 18:19:17 · 1789 阅读 · 0 评论 -
我对M4A文件格式的理解
m4a 格式文件中的内容是有很多的box 组成的,box 格式如下:box length(4B 大端格式) + box type(4B)+ box content(box length - 8)例如如下是ftyp这个box 的数据内容,可以看到该box 长度是0x20字节。从m4a文件中找到moov box是重点,因为找到了这个box ,需要从box 找出来每个采样帧的位置及...原创 2020-03-11 11:32:43 · 4381 阅读 · 0 评论 -
苹果蓝牙日志如何获取
参考链接:https://wenku.baidu.com/view/58b10e7b27284b73f242509b.html从中取出来对自己比较有用的部分。SDIO通信接口中有一根clock线,该clock上输出的频率是可配置的。对于读命令,首先HOST会向DEVICE发送命令,紧接着DEVICE会返回一个握手信号,此时,当HOST收到回应的握手信号后,device会将数据放在4...原创 2019-11-09 10:37:42 · 4878 阅读 · 1 评论 -
USB:一直不知其所以然的USB
后续更新;原创 2019-11-08 18:45:02 · 122 阅读 · 0 评论 -
BT-用一个测试用例来理解蓝牙BQB PTS认证测试的过程
关于准备PTS dongle和PTS PC 工具,这里不做介绍。这里以TC_MOD_NDIS_BV_01_C测试用例来介绍。这个测试项内容:确认待测设备当处在不可见模式时,不会响应PTS dougle的搜索操作,即认为测试PASS。可以通过GAP log看到一些详细的测试过程,该log是在点击测试项的Run(debug logs)就会自动产生出来。除了该log,可以通过blueto...原创 2019-11-05 18:23:00 · 3435 阅读 · 0 评论 -
Arduino:只为她写这一篇吧
Arduino为不太懂硬件但又想玩一玩编程的人,带来了很大的便利性。在我看来,对于小孩子,想从小培养编程经验的,也可以让孩子玩一玩。Arduino提供了很多的开发板,可以体验很多的产品玩法,同时也提供了一套线上和线下的IDE环境。对于开发者,修改code、编译、下载等工作都集成在IDE中。整个code也非常的简单,例如我以一个闪灯的例程来介绍代码的工作流程。有两个接口,需要开发...原创 2019-10-29 14:34:54 · 125 阅读 · 0 评论 -
该怎么理解BLE ATT protocol是Sequential Protocol
ATT PDU有六种:command: client->server, not need server to response;request:client->server,need server to response;response:server->client, that is response the request from client;notification:s...原创 2018-07-05 17:59:36 · 445 阅读 · 0 评论 -
如何根据死机时的栈空间数据分析推导调用栈的情况
通过死机时刻的寄存器查看是最容易入手的;R13是当前栈顶;R14是LinkLR;于是就知道程序是在运行0x8055C6A的这条指令出现了问题;这条指令是将R3的值给到PC就出错了。从前面可以看到R3是0xAA8AAAB,将这个值给到PC,考虑到是thumb指令,于是给的就是0xAA8AAAA,这确实和当前死掉的时候PC的值一样;结果查看0xAA8AAAAA处都不是指令,都是全零的东西,怪不得会造成...原创 2018-07-05 15:17:16 · 1216 阅读 · 3 评论 -
传统蓝牙GAP CONNECT
主动连接:被动连接:原创 2018-06-25 20:07:06 · 457 阅读 · 0 评论 -
Trace32在分析死机dump问题时的技巧
通过dump出来死机时候的 log ,结合elf文件,进行分析,处理成trace32可以接受的cmm文件。-----》本篇文章不介绍如何转成cmm文件的过程。-----》在cmm的基础上如何分析出更多的死机原因,以便找到解决方案;通常直接的方式及时通过死机时候的call stack来分析,如下图;有时我们需要查看一些全局变量在死机之前的内容,可以通过view-》symbol-》browse,然后找...原创 2018-06-24 12:02:00 · 13920 阅读 · 2 评论 -
如何管理一段内存的分配和释放---3
以freertos中heap_4.c中对内存的管理举例说明。如下是初始状态,即对该内存块管理的初始状态;xStart.next指向的空间放的是BlockLink_t的管理结构体,那么该管理结构体的size是要包括该管理结构体大小的。 如下图即可看出在申请了一块出去之后的状况;橙色next表示都是还未分配的地方;浅绿色表示分配出去的地方;通过该图片右下角的例子看到next=0,size=0x800...原创 2018-06-24 11:19:24 · 376 阅读 · 1 评论 -
如何管理一段内存的分配和释放---2
===========================================================================下面的这种管理内容的方式,是将一段空间(总共60Byte)划分成2中类型,1和2每段大小相同假设为20Byte;3和4每段相同假设为10Byte;管理者有个链表,该链表指向1的起始地址;1~4很相似,以2为例。A---》要能够指向下一个地址空间;B-...原创 2018-06-22 18:09:51 · 202 阅读 · 0 评论 -
如何管理一段内存的分配和释放
============================================================================管理一段内存buf的分配和释放,一般是会要牺牲一些其他的内存空间manager来作为管理这段buf;下面通过下图来详细描述对这段内存的管理操作。这幅图是中间过程中对该空间的使用情况,假设此时该空间被分成了5部分,1~4这几个部分都是已经正在被使用了...原创 2018-06-22 17:47:08 · 694 阅读 · 0 评论