Android adb shell dumpsys audio 信息查看分析详解
Android adb shell dumpsys audio 信息查看分析详解
一、前言
Android 如果要分析当前设备的声音通道相关日志,
仅仅看AudioService的日志是看不到啥日志的,但是看整个audio关键字的日志又太多太乱了,
所以可以看一下系统提供的一个调试指令dumpsys audio 返回的信息进行定位分析,
里面主要包含了AudioService启动时间,当前设备的音频流指向,音频流的声音大小,音频外设的连接情况,音频播放记录,音频外设连接断开记录等等信息。
不同的Android 系统使用 dumpsys audio 命令返回的日志信息可能会有差异,
因为打印返回的信息就是AudioService.java里面打印显示的,
本文的示例讲解是以mtk方案的Android14日志信息进行讲解。
网上基本没有对dumpsys audio 日志信息进行分析的,有兴趣的可以收藏查看。
二、分析
1、简单示例和主要内容
本示例日志是设备连接蓝牙耳机后的dumpsys audio情况日志信息:
# dumpsys audio
[18:57:20]Events log: audio services lifecycle
[18:57:20]11-22 18:54:07:681 AudioService() //(1)AudioService 启动时间,大概可以推测出开机时间[18:57:20]MediaFocusControl dump time: 6:57:22 PM //(2)执行dumpsys audio的时间//(3)dumpsys audio最重要的内容,设备支持声音流情况
[18:57:20]Stream volumes (device: index)
[18:57:20]- STREAM_VOICE_CALL (aliased to: STREAM_MUSIC):
。。。
[18:57:20]- STREAM_SYSTEM (aliased to: STREAM_MUSIC):
。。。
[18:57:20]- STREAM_RING (aliased to: STREAM_MUSIC):
。。
//(4)基本是音频播放的情况,上面其他声音通道都是注释了以这个为标准
[18:57:20]- STREAM_MUSIC:
[18:57:20] Muted: false
[18:57:20] Muted Internally: false
[18:57:20] Min: 0 //声音范围
[18:57:20] Max: 15
[18:57:20] streamVolume:7 //当前声音大小
[18:57:20] Current: 2 (speaker): 7, 80 (bt_a2dp): 7, 400 (hdmi): 7, 40000000 (default): 7
[18:57:20] Devices: bt_a2dp(80) //当前声音通道,蓝牙
[18:57:20] Volume Group: music
[18:57:20]
[18:57:20]- STREAM_ALARM (aliased to: STREAM_MUSIC):
[18:57:20] Muted: false
[18:57:20] Muted Internally: false
[18:57:20] Min: 1
[18:57:20] Max: 7
[18:57:20] streamVolume:4
[18:57:20] Current: 2 (speaker): 4, 80 (bt_a2dp): 4, 400 (hdmi): 4, 40000000 (default): 4
[18:57:20] Devices: speaker(2), bt_a2dp(80)
[18:57:20] Volume Group: alarm//其他声音通道比较少实用,比如铃声,通知等情况
[18:57:20]- STREAM_NOTIFICATION (aliased to: STREAM_MUSIC):
[18:57:20]- STREAM_BLUETOOTH_SCO:
[18:57:20]- STREAM_SYSTEM_ENFORCED (aliased to: STREAM_MUSIC):
[18:57:20]- STREAM_DTMF (aliased to: STREAM_MUSIC):
[18:57:20]- STREAM_TTS (aliased to: STREAM_MUSIC):
[18:57:20]- STREAM_ACCESSIBILITY (aliased to: STREAM_MUSIC):
[18:57:20]- STREAM_ASSISTANT (aliased to: STREAM_MUSIC):
。。。//Volume Groups 不知道是干啥的,类型也是挺多的。
[18:57:20]Volume Groups (device: index)
[18:57:20]- VOLUME GROUP voice_call:
[18:57:20] Muted: false
[18:57:20] Min: 1
[18:57:20] Max: 7
[18:57:20] Current: 2 (speaker): 4, 80 (bt_a2dp): 7, 40000000 (default): 4
[18:57:20] Devices: bt_a2dp
[18:57:20] Streams: STREAM_VOICE_CALL [18:57:20]- VOLUME GROUP system:
[18:57:20] Muted: false
[18:57:20] Min: 0
[18:57:20] Max: 100
[18:57:20] Current: 2 (speaker): 47, 80 (bt_a2dp): 7, 40000000 (default): 47
[18:57:20] Devices: bt_a2dp
[18:57:20] Streams: STREAM_SYSTEM [18:57:20]- VOLUME GROUP ring:
[18:57:20]- VOLUME GROUP music:
[18:57:20]- VOLUME GROUP alarm:
[18:57:20]- VOLUME GROUP alarm:
[18:57:20]- VOLUME GROUP bluetooth_sco:
[18:57:20]- VOLUME GROUP enforced_audible:
[18:57:20]- VOLUME GROUP dtmf:
[18:57:20]- VOLUME GROUP accessibility:
[18:57:20]- VOLUME GROUP assistant:
[18:57:20]- VOLUME GROUP AUDIO_STREAM_REROUTING:
[18:57:20]- VOLUME GROUP AUDIO_STREAM_PATCH:VOLUME GROUP类型的 Streams属性值都是指向上面的Stream volumes类型的。[18:57:20]Audio routes:
[18:57:20] mMainType=0x0
//(5)当前连接蓝牙的设备名称,如果未连接蓝牙为null
[18:57:20] mBluetoothName=Xiaodu Portable Speaker //(6)音频播放情况日志
[19:00:32]Events log: playback activity as reported through PlayerBase
//开机铃声
[19:00:32]11-22 18:54:09:789 new player piid:71 uid/pid:1000/745 type:android.media.SoundPool attr:AudioAttributes: usage=USAGE_ASSISTANCE_SONIFICATION content=CONTENT_TYPE_SONIFICATION flags=0x800 tags= bundle=null session:0
[19:00:33]11-22 18:54:10:837 new player piid:79 uid/pid:1000/1069 type:android.media.SoundPool attr:AudioAttributes: usage=USAGE_MEDIA content=CONTENT_TYPE_UNKNOWN flags=0x800 tags= bundle=null session:0。。。//音频文件播放+停止+播放+停止操作的日志
[19:00:33]11-22 18:58:37:956 player piid:103 event:started
[19:00:33]11-22 18:58:38:076 player piid:103 format update:FormatInfo{isSpatialized=false, channelMask=0x3, sampleRate=44100}
[19:00:33]11-22 18:58:38:175 player piid:103 event:device updated deviceId:5
[19:00:33]11-22 18:58:38:190 player piid:103 event:device updated deviceId:5
[19:00:33]11-22 18:58:42:920 player piid:103 event:paused
[19:00:33]11-22 19:00:24:155 player piid:103 event:started
[19:00:33]11-22 19:00:24:169 player piid:103 format update:FormatInfo{isSpatialized=false, channelMask=0x3, sampleRate=44100}
[19:00:33]11-22 19:00:24:204 player piid:103 event:device updated deviceId:5
[19:00:33]11-22 19:00:29:492 player piid:103 event:paused//(7)当前连接的设备,这里是连接蓝牙耳机
[18:57:21] Connected devices:
[18:57:21] [DeviceInfo: type:0x80 (bt_a2dp) name:Xiaodu Portable Speaker addr:48:F3:F3:ED:78:AD codec: 1f000000 sensorUuid: 00000000-0000-0000-4254-48f3f3ed78ad disabled modes: {}]
[18:57:21]//(8)如果是连接的usb有线耳机,另外一份日志拼过来的
[15:01:34] Connected devices:
[15:01:34] [DeviceInfo: type:0x4000000 (usb_headset) name:USB-Audio - USB Speaker Phone addr:card=4;device=0 codec: 0 sensorUuid: null disabled modes: {}]//(9)连接蓝牙耳机、有线耳机等外设音箱的日志
[18:57:21]Events log: wired/A2DP/hearing aid device connection
。。。
[18:57:21]11-22 18:57:04:640 BT profile service: connecting HEARING_AID profile
[18:57:21]11-22 18:57:04:666 BT profile service: connecting A2DP profile
[18:57:21]11-22 18:57:09:875 msg: onBluetoothActiveDeviceChange state=2 addr=48:F3:F3:ED:78:AD prof=2 supprNoisy=true src=AudioService
[18:57:21]11-22 18:57:09:885 BT connected: addr=48:F3:F3:ED:78:AD profile=2 state=2 codec=AUDIO_FORMAT_SBC
[18:57:21]11-22 18:57:10:074 A2DP device addr=48:F3:F3:ED:78:AD now available
//上面可以看到蓝牙连接的时间记录//(10)声音通道占用的日志
[18:57:21]Events log: force use (logged before setForceUse() is executed)
[18:57:21]11-22 18:54:07:774 setForceUse(FOR_DOCK, FORCE_DIGITAL_DOCK) due to readDockAudioSettings
。。。
[18:57:21]11-22 18:54:08:521 setForceUse(FOR_VIBRATE_RINGING, FORCE_NONE) due to muteRingerModeStreams() from u/pid:1000/745
。。。
//从最后一行日志看,最后是设置为蓝牙通道的
[18:57:21]11-22 18:57:09:897 setForceUse(FOR_MEDIA, FORCE_NONE) due to setBluetoothA2dpOn(true) from u/pid:1000/745 src:onSetBtActiveDevice//(11)声音变化和通道情况
[18:57:21]Events log: volume changes (logged when command received by AudioService)
[18:57:21]11-22 18:57:09:885 VolumeStreamState.muteInternally(stream:STREAM_MUSIC, muted)
[18:57:21]11-22 18:57:10:053 setDeviceVolumeBehavior: dev:bt_a2dp addr:48:F3:F3:ED:78:AD behavior:DEVICE_VOLUME_BEHAVIOR_VARIABLE pack:com.android.bluetooth
[18:57:21]11-22 18:57:10:156 avrcpSupportsAbsoluteVolume addr=48:F3:F3:ED:78:AD support=false
[18:57:21]11-22 18:57:10:323 VolumeStreamState.muteInternally(stream:STREAM_MUSIC, unmuted)
//从上面日志看是蓝牙声音通道,STREAM_MUSIC 流//(12)AudioSystemAdapter 不清楚是啥日志
[18:57:21]AudioSystemAdapter:
[18:57:21] last cache clear time: 11-22 18:57:10:110
[18:57:21] mDevicesForAttrCache:
[18:57:21] AudioAttributes: usage=USAGE_ASSISTANCE_SONIFICATION content=CONTENT_TYPE_UNKNOWN flags=0x800 tags= bundle=null forVolume: true stream: STREAM_SYSTEM(1)
[18:57:21] AudioDeviceAttributes: role:output type:bt_a2dp addr:48:F3:F3:ED:78:AD name: profiles:[] descriptors:[]
[18:57:21] AudioAttributes: usage=USAGE_ASSISTANCE_ACCESSIBILITY content=CONTENT_TYPE_UNKNOWN flags=0x800 tags= bundle=null forVolume: true stream: STREAM_ACCESSIBILITY(10)
[18:57:21] AudioDeviceAttributes: role:output type:bt_a2dp addr:48:F3:F3:ED:78:AD name: profiles:[] descriptors:[]
[18:57:21] AudioAttributes: usage=USAGE_UNKNOWN content=CONTENT_TYPE_UNKNOWN flags=0x801 tags= bundle=null forVolume: true stream: STREAM_SYSTEM(1)
[18:57:21] AudioDeviceAttributes: role:output type:speaker addr: name: profiles:[] descriptors:[]
[18:57:21] AudioDeviceAttributes: role:output type:bt_a2dp addr:48:F3:F3:ED:78:AD name: profiles:[] descriptors:[]
。。。百度查询到:AudioSystemAdapter可能会包含如下功能:
设备检测:检查设备是否支持特定音频特性(如蓝牙、耳机插孔等)。
音频路径管理:动态选择音频流的最佳路径,如扬声器、耳机或蓝牙设备。
音效处理:应用特定的音效效果,如均衡器设置或环绕声模式。
但是从上面日志看不出这些信息,可能信息比较隐蔽。
从上面的示例的主要日志信息,可以看到dumpsys主要包含当前音频流和外设的信息。
2、dumpsys audio日志的主要格式内容
# dumpsys audio //(1)执行命令
[18:57:20]Events log: audio services lifecycle//(2)AudioService 启动时间,大概可以推测出开机时间
[18:57:20]11-22 18:54:07:681 AudioService() //(3)dumpsys audio最重要的内容,设备支持声音流情况,正常看STREAM_MUSIC
[18:57:20]Stream volumes (device: index)
[18:57:20]- STREAM_MUSIC:
[18:57:20] Muted: false
[18:57:20] Muted Internally: false
[18:57:20] Min: 0 //声音范围
[18:57:20] Max: 15
[18:57:20] streamVolume:7 //当前声音大小
[18:57:20] Current: 2 (speaker): 7, 80 (bt_a2dp): 7, 400 (hdmi): 7, 40000000 (default): 7
[18:57:20] Devices: bt_a2dp(80) //当前声音通道,蓝牙
[18:57:20] Volume Group: music
[18:57:20]//(4)音频播放情况日志
[19:00:32]Events log: playback activity as reported through//(5)音频外设连接情况
[18:57:21] Connected devices://(6)声音通道占用的日志
[18:57:21]Events log: force use (logged before setForceUse() is executed)//(7)音频外设连接断开日志
[18:57:21]Events log: wired/A2DP/hearing aid device connection//(8)声音变化和通道情况
[18:57:21]Events log: volume changes (logged when command received by AudioService)//(9)AudioSystemAdapter 音频管理信息
这里只是根据一个实际的示例日志进行的讲解,
上面的讲解不一定完全正确和全面,仅供参考吧。
三、其他
1、dumpsys audio小结
dumpsys audio 主要能看到
当前设备音频流的指向情况,Stream volumes (device: index)
当前系统音频外设连接情况,Connected devices
声音通道占用情况记录,Events log: force use
音频外设连接断开日志,Events log: wired/A2DP/hearing aid device connection
dumpsys audio 最主要就是上面这几个声音相关信息。
更多的要看具体情况的日志了。
2、dumpsys audio 的源码
dumpsys audio 返回的打印信息,其实是Java代码上打印的,具体源码如下:
framework/base/services/core/java/com/android/server/audio/AudioService.java
@Overrideprotected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {if (!DumpUtils.checkDumpPermission(mContext, TAG, pw)) return;sLifecycleLogger.dump(pw);if (mAudioHandler != null) {pw.println("\nMessage handler (watch for unhandled messages):");mAudioHandler.dump(new PrintWriterPrinter(pw), " ");} else {pw.println("\nMessage handler is null");}...pw.println("\nAudio routes:");pw.print(" mMainType=0x"); pw.println(Integer.toHexString(mDeviceBroker.getCurAudioRoutes().mainType));pw.print(" mBluetoothName="); pw.println(mDeviceBroker.getCurAudioRoutes().bluetoothName);...pw.println("\n");pw.println("\nSpatial audio:");pw.println("mHasSpatializerEffect:" + mHasSpatializerEffect + " (effect present)");pw.println("isSpatializerEnabled:" + isSpatializerEnabled() + " (routing dependent)");mSpatializerHelper.dump(pw);sSpatialLogger.dump(pw);mAudioSystem.dump(pw);}
可以看到 dumpsys audio 命令返回的数据,都是在 AudioService.java 里面返回打印的;
Audio相关数据很多,有兴趣的可以自己分析研究看看;
如果想要自定义添加一下额外的打印,可以在源码里面添加。
3、使用谷歌文件管理器 GoogleFile 播放音频文件日志:
logct | grep -E "AudioService|AudioTrack"//打开文件管理器后首次播放:
11-23 10:22:26.542 798 1614 I MediaSessionStack: addSession to bottom of stack | record: com.google.android.apps.nbu.files/AudioService (userId=0)
11-23 10:22:26.938 798 1614 I AudioService.FadeOutManager: unfadeOutUid() uid:10074
11-23 10:22:27.148 798 937 I MediaSessionStack: onPlaybackStateChanged - Pushing session to top | record: com.google.android.apps.nbu.files/AudioService (userId=0)
11-23 10:22:27.635 798 1457 I ActivityManager: Background started FGS: Allowed [callingPackage: com.google.android.apps.nbu.files; callingUid: 10074; uidState: TOP ; uidBFSL: [BFSL]; intent: Intent { cmp=com.google.android.apps.nbu.files/.mediaconsumption.audio.service.AudioService (has extras) }; code:PROC_STATE_TOP; tempAllowListReason:<null>; targetSdkVersion:34; callerTargetSdkVersion:34; startForegroundCount:0; bindFromPackage:null: isBindService:true]
11-23 10:22:27.666 798 798 D MediaSessionService: Media button session is changed to com.google.android.apps.nbu.files/AudioService (userId=0)//停止后,再次点击播放
11-23 10:22:58.294 7108 7259 D AudioTrack: getTimestamp_l(16): device stall time corrected using current time 2328289907108
11-23 10:22:58.339 798 1460 I MediaSessionStack: onPlaybackStateChanged - Pushing session to top | record: com.google.android.apps.nbu.files/AudioService (userId=0)
11-23 10:22:58.344 7108 7259 D AudioTrack: getTimestamp_l(16): stale timestamp time corrected, currentTimeNanos: 2318205649000 < limitNs: 2328189081941 < mStartNs: 2328287081941
11-23 10:22:58.344 7108 7259 W AudioTrack: getTimestamp_l(16): retrograde timestamp time corrected, 2328189081941 < 2328329633858
能看到一点日志,比如AudioTrack播放时间,但是没有太多日志,比如用什么设备播放、播放音量等等信息。
所以dumpsys audio 还是可以看到当时比较有用的一些日志的。
4、Android 的声音通道类型
其中streamType定义如下:
STREAM_ALARM:闹钟
STREAM_DTMF:双音多频,拨号键的声音
STREAM_MUSIC:音乐
STREAM_NOTIFICATION:通知
STREAM_RING:铃声
STREAM_SYSTEM:系统
STREAM_VOICE_CALL:通话
Android大概支持上面的声音通道类型,主要使用的是外放的 STREAM_MUSIC。
5、Android–耳机插拔检测(framework篇)
上层到底层的一顿讲解
https://blog.csdn.net/qq_42364999/article/details/143256027
相关文章:
Android adb shell dumpsys audio 信息查看分析详解
Android adb shell dumpsys audio 信息查看分析详解 一、前言 Android 如果要分析当前设备的声音通道相关日志, 仅仅看AudioService的日志是看不到啥日志的,但是看整个audio关键字的日志又太多太乱了, 所以可以看一下系统提供的一个调试指令…...
Python 网络爬虫操作指南
网络爬虫是自动化获取互联网上信息的一种工具。它广泛应用于数据采集、分析以及实现信息聚合等众多领域。本文将为你提供一个完整的Python网络爬虫操作指南,帮助你从零开始学习并实现简单的网络爬虫。我们将涵盖基本的爬虫概念、Python环境配置、常用库介绍。 上传…...
基于FPGA的2FSK调制-串口收发-带tb仿真文件-实际上板验证成功
基于FPGA的2FSK调制 前言一、2FSK储备知识二、代码分析1.模块分析2.波形分析 总结 前言 设计实现连续相位 2FSK 调制器,2FSK 的两个频率为:fI15KHz,f23KHz,波特率为 1500 bps,比特0映射为f 载波,比特1映射为 载波。 1)…...
JavaScript的基础数据类型
一、JavaScript中的数组 定义 数组是一种特殊的对象,用于存储多个值。在JavaScript中,数组可以包含不同的数据类型,如数字、字符串、对象、甚至其他数组。数组的创建有两种常见方式: 字面量表示法:let fruits [apple…...
第三讲 架构详解:“隐语”可信隐私计算开源框架
目录 隐语架构 隐语架构拆解 产品层 算法层 计算层 资源层 互联互通 跨域管控 本文主要是记录参加隐语开源社区推出的第四期隐私计算实训营学习到的相关内容。 隐语架构 隐语架构拆解 产品层 产品定位: 通过可视化产品,降低终端用户的体验和演…...
JDBC编程---Java
目录 一、数据库编程的前置 二、Java的数据库编程----JDBC 1.概念 2.JDBC编程的优点 三.导入MySQL驱动包 四、JDBC编程的实战 1.创造数据源,并设置数据库所在的位置,三条固定写法 2.建立和数据库服务器之间的连接,连接好了后ÿ…...
Python绘制太极八卦
文章目录 系列目录写在前面技术需求1. 图形绘制库的支持2. 图形绘制功能3. 参数化设计4. 绘制控制5. 数据处理6. 用户界面 完整代码代码分析1. rset() 函数2. offset() 函数3. taiji() 函数4. bagua() 函数5. 绘制过程6. 技术亮点 写在后面 系列目录 序号直达链接爱心系列1Pyth…...
Spring框架特性及包下载(Java EE 学习笔记04)
1 Spring 5的新特性 Spring 5是Spring当前最新的版本,与历史版本对比,Spring 5对Spring核心框架进行了修订和更新,增加了很多新特性,如支持响应式编程等。 更新JDK基线 因为Spring 5代码库运行于JDK 8之上,所以Spri…...
Linux关于vim的笔记
Linux关于vim的笔记:(vimtutor打开vim 教程) --------------------------------------------------------------------------------------------------------------------------------- 1. 光标在屏幕文本中的移动既可以用箭头键,也可以使用 hjkl 字母键…...
linux mount nfs开机自动挂载远程目录
要在Linux系统中实现开机自动挂载NFS共享目录,你需要编辑/etc/fstab文件。以下是具体步骤和示例: 确保你的系统已经安装了NFS客户端。如果没有安装,可以使用以下命令安装: sudo apt-install nfs-common 编辑/etc/fstab文件&#…...
【vue】导航守卫
什么是导航守卫 在vue路由切换过程中对行为做个限制 全局前置守卫 route.beforeEach((to, from, next)) > {// to是切换到的路由// from是正要离开的路由// next控制是否允许进入目标路由next(false); //不允许 }路由级别的导航守卫 const routes [{path: /User,name: U…...
基于Matlab实现LDPC编码
在无线通信和数据存储领域,LDPC(低密度奇偶校验码)编码是一种高效、纠错能力强大的错误校正技术。本MATLAB仿真程序全面地展示了如何在AWGN(加性高斯白噪声)信道下应用LDPC编码与BPSK(二进制相移键控&#…...
PostgreSQL 中约束Constraints
在 PostgreSQL 中,约束(Constraints)是用于限制进入数据库表中数据的规则。它们确保数据的准确性和可靠性,通过定义规则来防止无效数据的插入或更新。PostgreSQL 支持多种类型的约束,每种约束都有特定的用途和语法。以…...
✨系统设计时应时刻考虑设计模式基础原则
目录 💫单一职责原则 (Single Responsibility Principle, SRP)💫开放-封闭原则 (Open-Closed Principle, OCP)💫依赖倒转原则 (Dependency Inversion Principle, DIP)💫里氏代换原则 (Liskov Substitution Principle, LSP)&#x…...
【Linux】多线程(下)
目录 一、生产者消费者模型 1.1 概念 1.2 基于阻塞队列 1.3 POSIX信号量 初始化信号量 销毁信号量 等待信号量 发布信号量 1.4 基于环形队列和POSIX信号量 二、线程池 2.1 概念 2.2 代码 三、封装Linux线程库 四、单例模式 4.1 概念 4.2 单例模式的实现方式 4…...
Element-Plus如何修改日期选择器输入框el-date-picker的圆角
使用 el-date-picker 的 style 属性 :style"{ --el-border-radius-base: 10px }"<!-- 日期 --> <el-form-item label"日期" prop"establishmentDate"><el-date-picker v-model"form.establishmentDate" type"dat…...
skywalking es查询整理
索引介绍 sw_records-all 这个索引用于存储所有的采样记录,包括但不限于慢SQL查询、Agent分析得到的数据等。这些记录数据包括Traces、Logs、TopN采样语句和告警信息。它们被用于性能分析和故障排查,帮助开发者和运维团队理解服务的行为和性能特点。 …...
故障排除-------K8s挂载集群外NFS异常
故障排除-------K8s挂载集群外NFS异常 1. 故障现象2. 原因梳理2.1 排查思路2.2 确认yaml内容2.3 创建k8s内的nfs测试2.3.1 创建nfs和svc2.3.2 测试创建pvc2.3.3 测试结果 2.4 NFS服务端故障排除2.4.1 网络阻断排除2.4.2 排除服务状态问题2.4.3 排查NFS权限问题 3. 故障排除 1. …...
Easyexcel(6-单元格合并)
相关文章链接 Easyexcel(1-注解使用)Easyexcel(2-文件读取)Easyexcel(3-文件导出)Easyexcel(4-模板文件)Easyexcel(5-自定义列宽)Easyexcel(6-单…...
解决登录Google账号遇到手机上Google账号无法验证的问题
文章目录 场景小插曲解决方案总结 场景 Google账号在新的设备上登录的时候,会要求在手机的Google上进行确认验证,而如果没有安装Google play就可能出现像我一样没有任何弹框,无法实现验证 小插曲 去年,我在笔记本上登录了Googl…...
[已解决]Vscode插件Keil Assistant连接Keil后出现的头文件路径无法寻找问题
问题详情 按照网络上的教程按照并且配置好vscode的Keil Assistant插件后,成功打开了Keil工程并且编译成功。但是头文件无法跳转,以及出现红色波浪线报错。 解决方法 在.vscode\c_cpp_properties.json中添加以下两行路径: "includePath&q…...
从STM32到华大HC32F460:手把手移植USB HOST MSC + FatFs R0.13c(含源码对比与避坑指南)
从STM32到华大HC32F460:USB HOST MSC与FatFs移植实战全解析 1. 迁移背景与核心挑战 对于长期使用STM32的嵌入式开发者而言,切换到华大半导体HC32F460系列MCU既是一次技术升级,也面临实际移植的挑战。USB HOST MSC(Mass Storage Cl…...
ATPG技术革新:从传统测试到单元感知与智能并行
1. 从“可靠的老黄牛”到“敏捷的赛马”:ATPG技术为何必须革新在芯片设计这个行当里干了十几年,Automatic Test Pattern Generation,也就是我们常说的ATPG,一直是个让人又爱又恨的角色。爱它,是因为它就像产线上那位最…...
windows系统安装wsl安装opencode教程
使用 AI 助手(OpenCode)在 WSL2 中高效安全工作教程 背景 在 AI 极大发展的现在,AI 可以帮助我们完成很多工作。那么怎么让 AI 帮我们高效、安全地工作呢?以下是教程。 同时,大模型在 Windows 里面直接执行脚本时错…...
终极解决方案:3分钟快速修复VC++运行库缺失问题,彻底告别软件启动失败
终极解决方案:3分钟快速修复VC运行库缺失问题,彻底告别软件启动失败 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否经常遇到游戏或…...
为什么92%的AI创作者不敢打印自己的Midjourney作品?揭秘树莓派印相避坑指南,含色彩管理ICC配置包(限免72小时)
更多请点击: https://intelliparadigm.com 第一章:为什么92%的AI创作者不敢打印自己的Midjourney作品? 当一张由 Midjourney 生成的「超写实森林神殿」在屏幕上熠熠生辉时,创作者往往兴奋地截图、转发、设为壁纸——却极少有人按…...
片上网络架构设计:集体通信硬件加速与优化
1. 轻量级片上网络架构设计解析 在当今机器学习(ML)模型规模呈指数级增长的背景下,大规模并行加速器已成为支撑AI计算的关键基础设施。这类系统通常采用数千个处理单元(PE)的集成设计,而连接这些计算资源的片上网络(NoC)性能直接决定了整个系统的效率瓶颈…...
AC鸭的温度墙
题目描述AC鸭在实验室里看到了一面很长的温度墙,这面墙从左到右一共有 n 个位置。一开始,每个位置的温度都是 0。接下来 AC鸭会进行 m 次加热操作。每次操作给出 l,r,v表示把第l个位置到第r个位置的温度都加上上v。所有操作结束后,AC鸭想知道…...
Ciao故障排除终极指南:10个常见问题与解决方案大全
Ciao故障排除终极指南:10个常见问题与解决方案大全 【免费下载链接】ciao HTTP checks & tests (private & public) monitoring - check the status of your URL 项目地址: https://gitcode.com/gh_mirrors/ci/ciao Ciao是一款强大的HTTP(S) URL监控…...
CANN/asc-devkit单核形状API文档
SetSingleShape 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode…...
