芯片上音频相关的验证
通常芯片设计公司(比如QUALCOMM)把芯片设计好后交由芯片制造商(比如台积电)去生产,俗称流片。芯片设计公司由ASIC部门负责设计芯片。ASIC设计的芯片只有经过充分的验证(这里说的验证是FPGA(现场可编程门阵列)原型验证, 通过将RTL移植到FPGA来验证)才能去流片。因为流片费用昂贵,如果不经过充分的验证去流片,芯片回来后发现有问题,经济损失巨大。一般ASIC内部会有专门的验证工程师做一轮验证,也会让软件工程时做一轮验证(做芯片验证是芯片公司里软件工程师的主要工作之一,出一款新芯片就要做一次芯片验证),均OK后才会去流片。本文以智能手机(或智能手表)上的SoC芯片为例讲讲ADSP(audio DSP, ADSP是SoC的一部分)上音频相关的硬件验证有哪些以及怎么验。
一,验哪些
1, IPC
现在的智能手机(或智能手表)都是多核系统(主要有AP、CP、ADSP、BT、WIFI、GNSS等)。核间需要通信,因此就有了IPC(inter-processor communication,核间通信)。示意如下图:
IPC的本质是中断和ring buffer。一个核给另一个核发一个IPC,就是先向共享ring buffer里写数据,然后给对方发一个中断。对方收到中断后就到共享ring buffer里读数据,这样就完成了一次核间通信。 验证时主要看中断有没有来以及中断服务程序有没有进。没达到预期就排查,包括IPC基地址和中断号等是否正确等。
2, audio DMA & bus
audio DMA & bus(I2S 、PCM等)是连接ADSP和外设(codec芯片等)的纽带,即ADSP和外设通过它们来采集和播放音频数据。示意如下图中的蓝圈处:
对于audio DMA,主要是配置descriptor(buffer长度(它决定audio DMA中断间隔)、源地址、目的地址)等。对于audio bus,主要是配置bus的属性,包括左对齐还是右对齐以及一次采样多少比特等。验证时主要看audio DMA中断有没有等间隔(比如10ms)来以及中断服务程序有没有进。一些场景下(比如用扬声器播放音乐)整个音频系统就是靠这个中断来驱动的。
3, memory & cache
音频中会用到各种memory,包括片内的(ITCM, DTCM)以及片外的(DDR, SRAM, ROM等)。验证memory主要是看在地址范围内是否可读写等,ROM是可读,其他是可读可写。片外的memory可以分成不同的功能块。 有的是用于存放code和data,因此要配成cacheable,在程序执行时能加快运行。有的是作为share memory用于交互音频数据(比如播放音乐时AP给ADSP发音频数据就放在share memory里),则要配成uncacheable,让收方能立刻拿到正确的数据。需要注意的是片内的memory不需要配置cache属性。
4, 低功耗模式
低功耗模式(low power mode, LPM)就是让ADSP睡下去来节省功耗。有三种低功耗模式,按睡的程度从浅到深分别是CLOCK _GATING,PLL_OFF,POWER_OFF。CLOCK _GATING就是关掉clock,睡的程度最浅,功耗相对大些。PLL_OFF就是关掉PLL(锁相环),睡的程度次之,功耗也居中。POWER_OFF就是给ADSP下电,基本没功耗了。在POWER_OFF模式下,如果把memory配成retention(保持,即ADSP下电了,memory里的内容没丢)模式,其他核把ADSP唤醒还可以继续工作。如果把memory配成shutdown模式,即ADSP下电了,memory里的内容也丢了,其他核把ADSP唤醒就相当于重新boot ADSP了。 ADSP进LPM后,其他核通过IPC或者内部TIMER等可以唤醒ADSP。要验的是ADSP能够被唤醒且进入相应的中断服务程序。
还有一些跟平台相关的,比如TIMER,这里就不细述了。
二,怎么验
芯片验证有专门的平台(基于FPGA )。我们主要在两种平台上做验证,分别是Synopsys的HAPS以及Cadence的PZ1。这两个平台上的运行都很慢,在HAPS上跑一次要十几分钟,在PZ1上跑一次则需要半个多小时。所以在平台上跑之前要做好各种充分的准备,跑一次像一次,得到想要的结果,不然会很浪费时间的。PZ1相对HAPS优势是可以抓波形。一般的(比如IPC等)为了节省时间可以在HAPS上验,有特殊要求的(比如LPM)则要在PZ1上验。需要在PZ1上验的ASIC会指出来。 在HAPS上验遇到疑难问题时,就需要在PZ1上复现,并抓波形给ASIC分析,帮助找到root cause。
通常验时需要不同核之间配合的。下面就以验AP和ADSP之间的IPC为例来看看是怎么验的。
1, AP把ADSP boot起来。ADSP起来后给ADSP发一个IPC,告诉AP ADSP已经起来了。
2, 在AP上去看有没有收到IPC中断(读相关的寄存器)。如果没有收到,相应的bit为0, 这种情况下大概率是发送端有问题。如果收到,相应的bit为1,这时再去检查有没有进中断服务程序,如果进了,说明ADSP给AP的IPC是好的。如果没进中断服务程序, 很大可能是中断号不对,需要进一步调查。
3, ADSP给AP的IPC验好后,再来验AP给ADSP的IPC。类似的AP给ADSP发个IPC,在ADSP上看有没有收到中断以及有没有进中断服务程序等。
两个方向上的IPC都验好后,AP和ADSP的中断就算验好了。
相关文章:

芯片上音频相关的验证
通常芯片设计公司(比如QUALCOMM)把芯片设计好后交由芯片制造商(比如台积电)去生产,俗称流片。芯片设计公司由ASIC部门负责设计芯片。ASIC设计的芯片只有经过充分的验证(这里说的验证是FPGA(现场…...

【C/C++】函数的递归
1.什么是递归? 递归就是递推和回归,以数学函数f(x) x为例: 递推:f(x) f(x - 1) 1 ; f(x - 1) f(x - 2) 1 ; f(x - 2) …… 回归:……; f(x - 2) f(x - 1) 1 ; f(x - 1) f(x) 1; 可以看出, 递推和…...

《链表篇》---两两交换链表中的节点(中等)
题目传送门 1.定义一个虚拟节点链接链表 2.定义一个当前节点指向虚拟节点 3.在当前节点的下一个节点和下下一个节点都不为null的情况下。 定义 node1和node2。保存当前节点后面两个节点的地址。cur.next node2;node1.next node2.next;node2.next node1;cur node1; 4.返回re…...

Fakelocation 步道乐跑(Root真机篇)
前言:需要 Fakelocation,真机Root,步道乐跑,Dia,MT管理器系统需求 Fakelocation | MT管理器 | Dia | 环境模块 任务一 真机Root(德尔塔,过momo,刷环境模块) 任务二 前往Dia查看包名(…...

PyEcharts | 全局配置项中初始配置项和区域缩放配置项的使用
全局配置项可通过set_global_opts方法设置 一个图像主要的内容 引入包 from pyecharts.charts import Bar,Line from pyecharts import options as opts from pyecharts.faker import Faker from pyecharts.globals import ThemeType,RenderTypefrom pyecharts.globals imp…...

突破语言壁垒:Cohere 发布多语言大模型 Aya Expanse
前沿科技速递🚀 在多语言大模型领域,Cohere 再次迎来了突破!10月24日,Cohere的研究实验室 Cohere For AI 正式发布了最新的多语言AI模型家族 —— Aya Expanse。该系列模型开放了8B和32B参数两个版本,为全球AI爱好者带来了崭新的多…...

内容安全与系统构建加速,助力解决生成式AI时代的双重挑战
内容安全与系统构建加速,助力解决生成式AI时代的双重挑战 0. 前言1. PRCV 20241.1 大会简介1.2 生成式 Al 时代的内容安全与系统构建加速 2. 生成式 AI2.1 生成模型2.2 生成模型与判别模型的区别2.3 生成模型的发展 3. GAI 内容安全3.1 GAI 时代内容安全挑战3.2 图像…...

Scrapy源码解析:DownloadHandlers设计与解析
1、源码解析 代码路径:scrapy/core/downloader/__init__.py 详细代码解析,请看代码注释 """Download handlers for different schemes"""import logging from typing import TYPE_CHECKING, Any, Callable, Dict, Gener…...
shell基础-awk
awk 是一个强大的文本处理工具,广泛用于 Unix 和 Linux 系统中。它可以用来处理和分析文本文件,特别是那些包含结构化数据的文件。以下是 awk 的基础知识和一些常用示例。 基本概念 记录和字段: 记录:awk 处理的每一行文本称为一…...
@Controller 和 @RestController 区别
功能范畴: Controller:用于定义一个控制器类,主要用于处理用户请求并返回视图(通常是HTML页面)。常常与 Spring MVC 的视图解析器一起使用。RestController:是一个特殊类型的控制器,用于返回数据而不是视图…...

【数据库设计】规范设计理论之数据依赖的公理系统(1)
知道范式的几种分类之后还并不能帮助我们设计一款好的数据库,在对关系进行拆解(指模式分解)之前,我们需要引入一个理论基础让设计过程变得有迹可循和具备一定的严谨性以此来支撑数据库背后的可靠性。 Armstrong公理系统 所谓公理…...

Leetcode 合并两个数组
算法思想是双指针从后往前合并,利用了 nums1 数组的尾部空间来存储合并后的结果,从而避免了额外空间的使用。具体步骤如下: 初始化指针: i 指向 nums1 的有效元素末尾,即位置 m - 1。j 指向 nums2 的末尾,即…...

Native Crash 信号速查
重点信号 SIGSEGV(11) signal segmentation violation:段错误无效内存访问访问无权访问的内存空指针、越界访问(mmap?) SIGBUS(7) Bus Error:总线错误非法内存访问访问 …...

【工具变量】自由贸易试验区试点DID数据集(2003-2023年)
数据简介:自由贸易试验区(Free Trade Zone,简称FTZ)是中国ZF在新形势下为了推进GG开放、提高开放型经济水平而采取的重要战略举措。自贸试验区在一国的部分领土内运入任何货物,被认为在关境以外,免于实施惯…...
js-在数组中根据name查找出对应id(find与filter方法)
1.根据name查找出对应id 使用数组的 find 方法来根据对象的某个属性(如名称)查找对应的对象,并获取该对象的 id 属性。 2.find 方法 const array [ { id: 1, name: Alice }, { id: 2, name: Bob }, { id: 3, name: Charlie } ]; 使用…...
推荐:自然语言处理方向的一些创新点
以下是自然语言处理研究方向的一些创新点: 一、预训练模型的改进与优化 模型架构创新 融合多模态信息: 传统的自然语言处理模型主要处理文本信息。创新点在于将图像、音频等多模态信息融合到预训练模型中。例如,对于描述一幅画的文本&#x…...

成都睿明智科技有限公司抖音电商服务的领航者
在这个短视频风起云涌的时代,抖音电商以其独特的魅力迅速崛起,成为无数商家争夺流量与销量的新战场。在这片红海之中,如何脱颖而出,实现销售额的飞跃?今天,就让我们一同走进成都睿明智科技有限公司…...

【大数据学习 | kafka】kafka的整体框架与数据结构
1. kafka的整体框架 首先kafka启动以后所有的broker都会向zookeeper进行注册,在/brokers/ids中以列表的形式展示所有的节点,在/controller节点中使用独享锁实现broker的选举,其中一个机器为主节点。其他的为从节点,选举的根本原则…...
隐私保护下的数据提取策略
在隐私保护下进行数据提取,需要采取一系列策略来确保个人隐私得到妥善保护,同时满足数据使用的需求。以下是一些关键的策略和方法: 一、数据最小化原则 定义:仅收集和提取必要的数据,避免收集过多的个人信息或不相关…...
vue 和 django 报 CORS(跨域资源共享,Cross-Origin Resource Sharing)是一种跨域访问的机制,
在使用 Vue 和 Django 进行前后端分离开发时,如果遇到 AxiosError: Network Error 的错误,通常可能是由于以下几种原因引起的。下面列出了一些常见的原因和解决方案。 1. CORS(跨源资源共享)问题 当你的 Vue 应用和 Django 后端…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...

XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...
Web中间件--tomcat学习
Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机,它可以执行Java字节码。Java虚拟机是Java平台的一部分,Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...