- 博客(30)
- 收藏
- 关注
原创 ALSA Tinymix不支持传负数
音效Bass的范围是-15dB到15dB,假如想要设置为-8dBtinymix Bass -8会报如下错误,原因是tinymix的实现中会把“-”识别为短操作符,“--”识别为长操作符,因此需要利用正数进行映射。浅谈linux的命令行解析参数之getopt_long函数https://blog.csdn.net/qq_33850438/article/details/80172275...
2020-12-03 18:00:36 235
原创 LINUX amixer工具及kcontrol使用
网上对amixer工具的使用较多,但使用kcontrol coding的例子有限,目前比较好的一篇文章如下:http://blog.chinaunix.net/uid-27875-id-5783294.htmlamixer指令:显示:amixer -c 0 controls读:amixer -c 0 cget iface=MIXER,name='ADC2LSource PIN Select'写:amixer -c 0 cset iface=MIXER,name='ADC2LSourc..
2020-08-23 09:58:24 752
原创 Android自动修改系统时间的sh脚本
每秒变更一次,循环1万次。#!/bin/bashmonth=1day=1hour=12minute=10century=20year=20#run 5 round, sleep 1 second between roundsround=10000sleep_sencond=1toString(){ if [ $1 -lt 10 ]; then outstring="0$1" else outstring=$1 f.
2020-08-13 11:13:19 963
原创 【ALSA SoC】添加声卡节点后声卡加载失败
ALSA SOC驱动的snd_soc_dai_link数组中新增一路stream,所有参数配置正确,但声卡始终注册失败。关键Log:<3>[ 1.010918](2)soc-audio soc-audio: ASoC: failed to register soundcard -16ERROR NO:-EBUSY (-16)关键原因:声卡设备较多,但没有打开CONFIG_SND_DYNAMIC_MINORS这个宏。分析过程:1.定位Log位置:...
2020-07-22 20:51:22 685 1
原创 ALSA - snd_pcm_status_get_delay
snd_pcm_status_get_delay 表示appl_ptr与当前hw_ptr的距离,正常情况是一个小于buf_size的正数;(相当于buf_size - avail)如果是负数,表示播放数据不足;如果大于buf_size表示overrun,buf_size已经写满。https://www.alsa-project.org/alsa-doc/alsa-lib/group_...
2020-03-12 21:21:37 836
转载 关于编译报错“dereferencing pointer to incomplete type...
今天同事问了我一个问题,他make的时候报错,“第201行:dereferencing pointer to incomplete type”,我随即查阅了很多资料,也没看出个所以然。最后问题得到了解决,也懂得了原理,遂记录一下。他的问题具体是这样。 1 2 3 4 5 6 #include <netinet/ip_...
2019-11-25 15:47:14 480
转载 [Linux]DEVICE_ATTR的使用 - echo实现读写寄存器的一种方法
1.介绍使用DEVICE_ATTR,可以实现驱动在sys目录自动创建文件,我们只需要实现show和store函数即可.然后在应用层就能通过cat和echo命令来对sys创建出来的文件进行读写驱动设备,实现交互.2.DEVICE_ATTR()宏定义DEVICE_ATTR()定义位于include/linux/device.h中,定义如下所示:#define DEVICE_ATT...
2019-11-18 16:50:52 1038
转载 介绍常用的4线SPI接口
原文地址:http://m.elecfans.com/article/803338.html文章来自网络,如有侵权请联系删除。摘要:SPI是一种同步、全双工、主从式接口。来自主机或从机的数据在时钟上升沿或下降沿同步。主机和从机可以同时传输数据。SPI接口可以是3线式或4线式。本文重点介绍常用的4线SPI接口。接口图1. 含主机和从机的SPI配置。4线SPI器件有四个信号...
2019-10-25 09:28:59 2128
原创 get_user/put_user与copy_from_user/copy_to_user
get_user/put_user与copy_from_user/copy_to_user都是用于用户空间与内核空间的数据交换,区别在于:1.get_user/put_user用于简单类型的拷贝,例如int、long;copy_from_user/copy_to_user用于拷贝大量数据,类似于memcpy;2.put_user与copy_to_user用于从内核空间向用户空间拷贝数据,g...
2019-09-09 19:58:19 1567
原创 ConcurrentModificationException原因和解决方法
ArrayList抛出ConcurrentModificationExecption的源码如下,以AndroidM为例:http://androidxref.com/6.0.0_r1/xref/libcore/luni/src/main/java/java/util/ArrayList.java最常见原因:ArrayList在被遍历时,该ArrayList被修改,导致ArrayList.j...
2019-07-11 17:51:50 431
原创 GC日志的关键字
D/dalvikvm: <GC_Reason> <Amount_freed>, <Heap_stats>, <External_memory_stats>, <Pause_time><回收原因><回收内存总数><可用内存百分比><外部内存状态><回收占用时间>...
2019-07-02 10:27:14 254
转载 虚拟内存与物理内存的关系
操作系统有虚拟内存与物理内存的概念。在很久以前,还没有虚拟内存概念的时候,程序寻址用的都是物理地址。程序能寻址的范围是有限的,这取决于CPU的地址线条数。比如在32位平台下,寻址的范围是2^32也就是4G。并且这是固定的,如果没有虚拟内存,且每次开启一个进程都给4G的物理内存,就可能会出现很多问题:因为我的物理内存时有限的,当有多个进程要执行的时候,都要给4G内存,很显然你内存小一点,这很快就...
2019-05-25 18:45:35 2361
原创 Linux中open/eventfd出现Too many open files的解决方法
最近在做Android P蓝牙协议栈的适配,由于原生的android系统在关闭蓝牙时,协议栈所在的进程会退出,所以协议栈中的资源释放做的很不完善,项目开发完成后做开关蓝牙的压力测试,100多次就会crash,原因是semaphore_new失败。而semaphore_new失败的原因是Too many open files导致eventfd(...)返回INVALID_FD。event...
2019-05-15 22:38:54 1266
原创 [Bluetooth] 下载电话本时OBEX反馈Not_Acceptable的问题分析
最近在调试蓝牙PBAP协议时遇到了一个问题,新写的代码“无法从Android手机下载电话本”,但是iPhone无此问题。无法下载的原因如下图所示,在pull vCard-list时,手机反馈”Not Acceptable”,而且试验了多部主流Android手机都存在此问题。对比了iPhone和Android手机的HCI Log,关键信息(除Connection ID)完全一致,对比了其...
2019-04-30 19:34:51 442
原创 蓝牙安全 —— SSP与PIN Code
5.1 SECURITY ARCHITECTUREPairing:创建一个或多个共享密钥的过程; Bonding:存储密钥的动作,目的是形成受信任的设备-密钥对; Device authentication:核实两个设备具有相同的keys;(例如伪造相同Address?) Encrytion:消息加密; Message integrity:防止消息伪造; 5.2 BR/EDR S...
2019-02-18 20:00:39 9247
原创 AMP相关内容整理
AMP始于蓝牙3.0+HS(high speed),为了实现High Speed而添加的,使用802.11链接,通常是在WIFI空闲时,经双方蓝牙协商,使用WIFI的物理层。 3.0 + HS版本蓝牙核心规格3.0 + HS版本是蓝牙技术联盟2009年4月21日推出的。蓝牙3.0+HS的传输速率理论上可高达24 Mbit/s,尽管这并非是通过蓝牙链接本身。相反,蓝牙链接是用于协商和建立...
2019-01-16 11:13:38 398
转载 蓝牙协议分析(1)_基本概念
1. 前言自1994年由爱立信推出至今,蓝牙技术已经走过了20个岁月。从最初的Bluetooth V1.0,到Bluetooth V4.0(最新的为V4.1,2013年底发布),经历了近9个版本的修订后,发展为当前的状况。说实话,如今的蓝牙4.1,简直是一个大杂烩:BR/EDR沿用旧的蓝牙规范;LE抄袭802.15.4;AMP直接使用802.11。而这一切的目的,就是以兼容性和易用性为基础...
2019-01-16 11:06:52 308
原创 BLE的自动连接
已BLE HID为例,Android原生代码bta_hh_le_add_dev_bg_conn按照Spec描述,在加载配对记录后,对已配的BLE HID Device设备执行了Auto connection流程,代码内,会触发中心设备向BLE HID Device设备自动发起连接的情况包括如下三种:配对成功之后; 车机蓝牙(中心设备)启动,加载配对记录之后; 原因是connection t...
2018-12-26 10:27:05 4558 3
原创 通过ADB动态调整Android代码Log级别
Android系统提供了这些原生API用于打印Log,包括Log.v(), Log.d(), Log.i(), Log.w(), Log.e(),而这些方法实现“Log输出的级别控制功能”依赖的API是android.util.Log. isLoggable (String tag, int level)上文中已明确说明可以通过setprop动态调整Log输出级别:setprop lo...
2018-12-01 18:20:45 11684
原创 通过ADB的方式配置HCI Log开关及file path
Android 6.0及7.0版本,蓝牙HCI Log的开关及Path配置的位置变更,具体如下:配置文件为etc/bluetooth/bt_stack.conf,通过ADB将该文件pull,修改后,再push会系统,开关蓝牙生效;1# Enable BtSnoop logging function2# valid value : true, false3BtSnoopLogOutpu...
2018-10-11 20:12:36 2513
原创 Bluedroid蓝牙协议栈代码SIGABRT NE分析:__stack_chk_fail+6
开机蓝牙启动过程发生NE,相关Log信息如下:10-01 00:01:33.130766 3496 3496 I AEE/AED : Exception Class: Native (NE)10-01 00:01:33.130850 3496 3496 I AEE/AED : Exception Type: SIGABRT10-01 00:01:33.130850 3496 ...
2018-09-21 17:12:19 555
原创 蓝牙下电话本过程中vCard格式异常数据的解析
vCard数据格式,如下Spec描述所示,每行的格式为:属性名 [;该属性的参数]:值因此,拿到一段vCard中的一行数据时,解析的过程如下:1.先找到一行的“:”或“;”,符号之前的是这一行的PropertyName值;2.若先找到的是“:”,则后面跟的就是PropertyValue;3.若先找到“;”,则后面跟的是辅助信息PropertyParameters,如编码方式等;...
2018-07-25 14:58:51 773
原创 飞行模式(AIRPLANE_MODE_RADIOS与AIRPLANE_MODE_TOGGLEABLE_RADIOS)
AIRPLANE_MODE_RADIOS如下面的描述,该值表示在飞行模式打开时,需要关闭的Radios列表,列表内的Items以逗号区分;例如:"bluetooth,wifi"6014 /**6015 * A comma separated list of radios that need to be disabled when airplane mode6016...
2018-06-11 14:43:10 2122 1
原创 作为HF端的蓝牙通话无声音问题处理分享
只想记录下这个看似神奇的问题。问题描述:终端厂商反馈蓝牙打电话时高概率无声音,手机显示声音在HF端,但是相同软件,相同硬件,相同手机,到了原厂(即换了一个地点)就测不到了,再回到客户公司,又会高概率出现。从相同软硬件,相同手机,两个地方结果完全不同来看,应该是与环境有关;蓝牙通话时,可能有影响的环境首先想到的就是2.4GHz的信号;但从现象来看,表现是蓝牙完全无声音,且不会断开;若是干扰导致,应该...
2018-05-25 01:31:07 1683
原创 通过ADB方式控制Android系统蓝牙开关
【指令】 关闭:adb shell settings put global bluetooth_on 0打开:adb shell settings put global bluetooth_on 1查询:adb shell settings get global bluetooth_on重启系统。 【原理】重启系统或开关飞行模式时,都会记录蓝牙的状态,以便重启...
2018-05-07 21:54:45 13459
转载 蓝牙天线的介绍与选用
蓝牙天线 蓝牙天线,是在无线通讯系统中用来传送与接收电磁波能量的重要必备组件。由于目前技术尚无法将天线整合至半导体制程的芯片中,故在蓝牙模块里除了核心的系统芯片外,天线是另一具有影响蓝牙模块传输特性的关键性组件。在各种不同的蓝牙应用产品中,所使用的天线设计方法与制作材质也不尽相同。选用适当的天线除了有助于搭配产品的外型以及提升蓝牙模块的传输特性外,还可以更进一步降低整个蓝牙模块的成本
2017-09-22 14:07:56 2529
转载 解密蓝牙mesh系列 | 第一篇
转自:2017-08-03 小码哥 蓝牙技术联盟蓝牙技术联盟EMEA技术项目经理Martin Woolley小码哥前言蓝牙技术是享誉全球的品牌之一,也是全世界应用最为普遍的无线通信技术之一。从2000年到现在,蓝牙技术已经广泛应用于数十亿台设备。就2016年而言,制造商的蓝牙设备出货量更是超过30亿台。 蓝牙的
2017-09-16 08:51:54 1187
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人