如何验收安卓PCBA主板的质量和性能

.
版本:v0.1
作者:河东西望
日期:2022-7-15
.

对很多安卓智能设备厂商来说,他们的通用开发模式一般是:ODM/OEM设计开发主板PCBA(包括BSP驱动、原生AOSP系统及简单定制),自己做简单的系统二次定制及应用开发。而开发实力和水平较强的公司,则会做整体系统ROM定制和优化、应用SDK平台化等深度开发。

不管怎么开发,只要主板是PCBA厂商提供的,都面临一个问题,就是如何验收ODM厂商的PCBA主板质量,包括设计质量和生产质量。硬件和结构的质量,各行业都有相关国家标准体系,例如电子行业的3C标准,医疗行业的NMPA标准等等。本文档并不讨论这些硬件和结构质量标准及测试方法。

这里讨论的是PCBA主板的软件系统相关的质量验收测试方法,例如,安卓系统的稳定性,元器件(CPU/MEM/Disk/USB/WIFI/LAN/Battery等)的软件性能,甚至也不关注质量标准。本文基于工程项目实践经验,提供一些快速可靠的测试工具和方法。

首先,我们要搞清楚在哪些情况下我们需要验收?验收的内容是什么?

我们还是有必要先了解一下PCBA主板的生命周期。一般情况下,硬件设备开发生产的标准流程:

 设计阶段 | O ─> EVT
 开发阶段 |      └──> DVT
 试产阶段 |           └──> PVT
 量产阶段 |                └──> PRD

EVT,Engineering Verification Test
DVT,Design Verification Test
PVT,Product Verification Test
PRD,Production,生产阶段。

在这四个阶段,理论上来说,每块PCBA主板都需要进行验收测试,但是综合考虑项目时间进度、人力设备资源、验收测试周期等因素,每个阶段主板验收的重点不一样:

硬件阶段 测试版本 测试项目 测试说明 EVT 原生系统版本 工程测试、性能测试、压力测试、功耗测试 硬件和系统基本摸底测试 DVT 开发稳定版本 压力测试、功耗测试 整机性能和功耗测试,检验运行应用质量 PVT 生产测试版本 主板测试、工程测试、性能测试 生产流程和效率验证 PRD 量产出货版本 主板测试、工程测试、性能测试、应用测试 出厂质量测试

所以我们会有如下这些工程测试:

  • 主板测试:测试PCBA主板元器件及驱动功能。
  • 工程测试:工程模式测试,硬件的应用功能测试。
  • 性能测试:硬件电气特性和软件性能。
  • 压力测试:硬件的长时运行性能曲线,最大值、最小值、平均值等。包括负载测试和压力测试,老化测试等。
  • 功耗测试:包括各种负载条件下的功耗和温度的最大值、最小值、平均值等。
  • 应用测试:生产出货质量环节对关键应用UI界面功能进行测试。

研发、测试和生产团队,可以根据自己的项目实际情况来安排要实施哪种测试组合。后面简单说一下这些测试都有那些内容,以及测试工具和方法。

实际上,很多中小型公司的生产开发流程一般是这样的:

首板开发阶段:
EVT
└──> DVT
     └──> PVT
          └──> PRD

批量出货阶段:
备货计划
└──> 生产贴片
     └──> 刷入主板小系统
          └──> PCBA主板测试
               └──> 主板入库

出货计划
└──> 刷入整机系统版本
     └──> 工程测试
          ├── 性能测试 │
          ├── 老化测试 │
          └── 应用测试
              └──> 出货

2.1 主板测试

PCBA主板功能测试,主要在SMT贴片线实施,主要测试的内容就是测试PCBA主板各种硬件和驱动是否都正常使能及正常工作,测试要求快速方便。

PCBA主板测试工具由芯片平台厂商(qcom、mtk、rockchip、amlogic等)提供。实际上是一个bootloader小linux系统,不包含android完整系统,大小只有几MB,可以快速烧录到主板中。在AOSP源代码中也会有这个工具,可以根据实际情况修改源代码调整测试项。

2.2 工程测试

就是常说的工程模式测试,在android运行环境中对硬件功能进行简单验证测试。例如:

  • 相机拍照
  • U盘读写
  • WIFI连接断开
  • 蓝牙连接断开
  • 访问网页
  • 耳机喇叭播放音乐
  • 话筒录音
  • 屏幕坏点和色彩测试
  • 触摸轨迹。

工程模式是一个应用APK,是通用的测试工具,一般由芯片厂商开发提供的,在AOSP工程中也有源代码,开发团队只需要根据实际状况进行修改就可直接使用。

2.3 性能测试

硬件性能测试,在android设备中并没有通用的工具和测试标准。测试的主要目的是为了检查硬件性能是否满足规格要求。例如DDR3和DDR4的读写速率,EMMC读写速率,USB2.0和USB3.0的读写速率,2G/3G/4G网络速率等等。

硬件性能测试包括硬件电气特性测试和软件性能测试。硬件的电气特性测试(例如USB眼图测试,USB浪涌测试,WIFI辐射测试等),一般由硬件团队来完成。而软件性能测试(例如DDR读写速率,CPU浮点运算、USB传输速率、网络传输速率等),则需要编写自动化测试用例和脚本来完成。

硬件性能测试的测试目的、工具方法如下:

硬件 性能 方法和工具 说明 CPU 带宽和运算能力 圆周率浮点运算1W位的时间 可以对不同的CPU时钟频率进行测试 DDR 内存带宽 内存MEMCPY、DUMB、MCBLOCK等操作时间 EMMC 坏块和读写速率 检查EMMC磁盘坏块;dd命令分区读写时间 文件大小为10Mx1000次和10Gx1次 USB USB读写速率 dd命令对U盘进行读写 1.文件大小为10Mx1000次和10Gx1次。2. USB host/OTG测试读写方向不一样。 3. U盘必须是高速稳定的 网络 网络速率和带宽性能 TTL响应时间和带宽 1. 测试对象包括蜂窝/有线/无限网络。2.必须在高速稳定的网络环境下,服务器不能限速 电池 最长待机时间 待机休眠静置直至自动关机 纯硬件测试方法 触屏 响应时间 手指触摸到响应的界面响应的时间 软件插桩测试 温度 温升时间 最大持续负载下CPU达到90度的时间 具体温度指标可以自定

当然,不同的设备可能还有其他硬件例如耳机、喇叭、陀螺仪、距离感应器、光感应器等,需要根据实际情况自己设计测试方法和质量标准。

当然,软件系统本身还有一些性能测试项目:例如开机速度、卡顿测试、拷贝测试,压缩/解压测试,多媒体编解码测试等,可以作为操作系统或者组件性能的测试项目,而不作为PCBA主板质量和性能测试项目。

每种具体的测试方法和工具,后续的文档会逐步的展开。

2.4 压力测试

硬件的运行性能压力测试,就是在最大负载条件下持续长时间运行,硬件表现出来的性能。例如对CPU、内存,BLKIO进行持续高压测试,采集运行数据,查看性能曲线,分析最大值,最小值,平均值,温度及异常数据信息等等。

一般的压力测试有CPU压力测试,内存压力测试,BLKIO压力测试,如果有条件的话,可以加入卡顿测试。

硬件 测试方法 测试工具 CPU 线程拷贝运算 stressapptest DDR 内存拷贝操作 stressapptest、mbw、memtester EMMC 块IO读写操作 stressapptest

详细的测试方法和工具,在以后的博文中详细展开。

在工厂生产测试中,对主板有老化实验测试,主要是针对硬件元器件进行持续2~4小时的测试,确保在出厂时间段内元器件没有失效。这些实验方法一般由厂商的NPI部门负责设计和开发测试工具。只需要对压力测试工具和方法调整测试时间即可。

2.5 功耗测试

就是对各种系统负载下的功耗进行测试。这个测试是一个硬件测试,但是需要硬件团队和软件团队一起协同来完成整个测试。

软件团队主要是设计各种负载测试条件,编写测试脚本和日志提取工具,生成测试报告等。硬件团队主要是根据负载测试要求,采用带有GPIB采集接口的精密电源,监测硬件功耗,提供测试数据和测试报告。

负载测试的内容包括如下几个:

  • 整机功耗(平均值、最大值、最小值)。
  • 温度曲线(平均值、最大值、最小值)。设备中可能有多种温度传感器,但是我们重点关注CPU温度和主板温度。

整机功耗测试,一般会基于不同的系统基线进行测试:

  • 最小系统,就是删除了所有无关应用的最小操作系统版本,用于对操作系统做初始测试基线,目的是为了检测基础系统中的硬件都处于最佳状态。
  • 基础系统,只包含设备厂商定制的桌面和关键服务的操作系统版本,用来作为定制系统的测试基线,确保关键应用和服务是最佳性能。
  • 正常系统,包含了设备厂商所有应用和服务的完整操作系统版本,最终用于生产或上线的系统版本。

每种系统基线的功耗测试,一般要基于如下几种工作负载场景来进行测试:

  • 飞行模式,待机休眠。这是一种最小使用模式,自然待机。测试系统的底电流,最大电流和平均电流。
  • 正常负载,CPU使用到0~99%都可以算作正常负载。理论上来说,这种应用场景可以不用测试。
  • 最大负载,CPU和内存持续长时间处于最高负载的应用场景。最常用的测试场景就是3/4/5…方视频通话。可以在这种负载场景下测试系统持续稳定工作的时间,温度上升时间和温控调频时机等。

2.6 UI测试

系统开机后,对设备的关键应用做真实场景的应用测试,确保功能正常。这个测试一般由工厂来设计实施,没有统一的操作方法和质量要求。

这个实验由质量部门确认,是做全测还是做一定比例的抽测。

Original: https://www.cnblogs.com/aosp/p/16481624.html
Author: 河东西望
Title: 如何验收安卓PCBA主板的质量和性能

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/582214/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Spring Boot中异步调用的正确使用姿势(详解)【转】

    介绍:异步请求的处理。除了异步请求,一般上我们用的比较多的应该是异步调用。通常在开发过程中,会遇到一个方法是和实际业务无关的,没有紧密性的。比如记录日志信息等业务。这个时候正常就是…

    Linux 2023年6月8日
    092
  • 我的2021年总结

    前言 这一年把整个重心都放到考研上,对工作并没有那么上心,但也做个年终总结吧。相应的立一个flag,明年来看看工作上的flag完成了没有?2022年在技术上要成长啊。 22岁很迷茫…

    Linux 2023年6月8日
    093
  • 搭建一个完整的K8S集群——-基于CentOS 8系统

    创建三个centos节点: 192.168.5.141 k8s-master 192.168.5.142 k8s-nnode1 192.168.5.143 k8s-nnode2 查…

    Linux 2023年6月7日
    081
  • Linux ARM中断控制器注册(4)【转】

    本文以S5PV210芯片为参照,S5PV210的中断控制器采用了ARM VIC(Vectored Interrupt Controller,PL192 ,ARM PrimeCell…

    Linux 2023年6月8日
    070
  • PyTorch 介绍 | 快速开始

    本节介绍有关机器学习常见任务重的API。请参阅每一节的链接以深入了解。 Working with data PyTorch有两个有关数据工作的原型: torch.utils.dat…

    Linux 2023年6月16日
    083
  • 安装 CentOS 7

    1、VMware虚拟机安装 2、CentOS操作系统安装 3、CentOS操作系统配置 3.1、选择语言 3.2、网络和主机名 3.3、日期和时间 3.4、安装位置 3.5、开始安…

    Linux 2023年6月8日
    0102
  • LeetCode-210. 课程表 II

    题目来源 题目详情 现在你总共有 numCourses 门课需要选,记为 0 到 numCourses – 1。给你一个数组 prerequisites ,其中 prerequis…

    Linux 2023年6月7日
    072
  • 尝试阅读理解一份linux shell脚本

    从头一二去阅读语法和命令说明,对于脚本小白来说比较枯燥,难以坚持,所以这里选择对一份完整的shell脚本代码来逐行逐段解读,希望可以一渡小白,帮助我们快速进入脚本的大门_。司机要开…

    Linux 2023年6月6日
    075
  • 记录一次shell脚本环境全局变量在函数内部生效问题

    背景 计划核对内网IP的使用情况,所以写了个小脚本扫描有哪些IP还在使用。执行脚本过程中发现函数中一直获取不到变量的值,排查后将结论记录下来。 问题现象 已经配置了全局变量,但是在…

    Linux 2023年6月14日
    088
  • 如何使用CMake构建c++项目

    1. c++项目构建与CMake简介 在Windows系统上我们通常使用 Visual Studio(VS)来生成我们的c++项目。我们只需在VS相应的层次目录中添加相应的文件即可…

    Linux 2023年5月27日
    0201
  • MAC安装redis

    一、安装命令使用mac的包管理工具brew一行命令搞定安装。若未安装brew,命令行先输入以下命令安装brew。 /usr/bin/ruby -e “$(curl -f…

    Linux 2023年5月28日
    084
  • Spring5新特性—Log4j2

    Spring5新特性—Log4j2 Spring5新特性—Log4j2 创建一个Maven项目,导入依赖 org.apache.logging.log4j log4j-core 2…

    Linux 2023年6月14日
    080
  • Docker容器网络

    Docker容器网络 1、Docker容器网络 Docker在安装后自动提供3种网络,可以使用`docker network ls命令查看 [root@localhost ~]# …

    Linux 2023年6月7日
    088
  • gitlab

    版本控制gitlab 1. 版本控制介绍 2. gitlab部署 版本控制介绍 版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思…

    Linux 2023年6月7日
    0113
  • 记一次大部分网络服务无法连接问题 (windows更新, steam登录, …)

    问题很简单,就是windows更新等了老半天都没反应,最后失败了。steam大多数情况是无法登陆… 最后搞了老半天,突然想到是不是DNS问题… 结果还真是 …

    Linux 2023年6月7日
    093
  • Tomcat性能优化方案

    你使用过tomcat的话,简单的说就是”内存溢出”. 通常情况下,这种问题出现在实际的生产环境中.产生这种问题的原因是tomcat使用较少的内存给进程,通过…

    Linux 2023年6月14日
    097
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球