产测工具使用说明
1. 概述
1.1. 产品生产流程设计
一、芯片烧录:根据产品设计特点,有些产品需要先将程序烧录到片,再贴片到板卡上,有些产品先将空片贴到板卡后,再烧录程序。
二、标签粘贴:根据产品设计要求,有些产品需在外壳或者板卡上粘贴产品标识标签,有些产品不需要产品标识标签。
三、功能测试:有些产品的功能测试在正式固件中,有些产品需要独立的测试固件。
四、整机测试:有些产品在功能测试阶段时不能完全覆盖测试,需要在后工序中再进行整机测试,有些产品不需要整机测试。
生产流程:不同产品,生产流程有所不同,常见的生产流程如下:
生产过程有三个重要环节:即烧录程序、功能测试、标签打印及粘贴。
1.2. 生产烧录产测软件
生产烧录产测软件简称生产软件,是用于工厂生产时完成烧录程序、功能测试、标签打印及粘贴。使用者可根据实际的生产流程进行配置。
生产烧录产测软件是可以运行在PC电脑、专用烧录硬件上的一个软件,该软件具备如下功能:
1、导入生产数据:生产数据需从COP 平台下载,通过U盘(或者网络)导入生产数据文件到本地数据库中。
2、烧录产测软件将生产数据烧录到芯片上,并执行功能测试,测试结果通过操作界面反馈给操作人员,告之生产成功或者生产失败,并在本地存储测试报告。
3、用户可以根据生产流程的定义,配置是否打印产品标签。
4、烧录开始由三种启动方式:
1) 自动启动:当软件检测到被烧录产品已接入完成并启动后,立即开始烧录测试;
2) 扫码启动:由操作人员通过条形码(二维码)扫描,并在本地数据库中找到对应的产品ID后开始烧录测试;
3) 手动启动:由操作人员通过鼠标或者键盘操作“烧录测试”按钮后开始烧录测试。
5、界面上提示当前烧录测试过程中状态、生产数据的总数、剩余数量等有用信息。
6、界面上提供测试人员可交互的对话框提示。
1.2.1. 生产数据
生产数据包括烧录固件、序列号、安全密钥、产品测试等数据。该数据通过 COP 开发平台获取得,该数据是芯片烧录的核心数据,应该保证数据传递的安全性、可靠性、唯一性。
1.2.2. 软件界面与功能
1.2.2.1. 主界面
有设置,导入生产数据,导出生产数据,信息显示等功能按钮。
1.2.2.2. 设置界面
界面如下图:
设置包括:
模式设置
扫描枪模式:软件通过扫描枪获取序列号,从数据库中找到对应生产数据,并开始烧录,找不到对应生产数据显示错误信息。
此模式需要GProduct软件作为系统的窗口焦点。扫描枪需要配置成键盘输入模式。
以Honeywell 1902型号为例配置键盘输入模式:
通过扫描枪扫描一下二维码即可配置成功
自动模式:软件检测到产品接线完成并复位启动后,立即开始烧录测试。这个目前没有实现。
手动模式:烧写测试每个设备之前都需要点击“开始烧录测试”按钮
串口配置
端口选择:列表显示当前可用的端口号,用户选择与设备连接测试用的端口
波特率设置:默认为115200
选择步骤
通过可配置文件读取烧录测试步骤,用户可自行选择需要的步骤。
1.2.2.3. 导入生产数据界面
点击“导入生产数据”按钮选择压缩包路径进行数据包的导入。数据包为加密的zip压缩包。如果存在有效数据,会提示“发现xx台设备数据,是否导入?”。如果数据无效,则会有其他相应的提示信息,请联系生产数据提供者。
如果相同的数据已经存在,则会提示“数据已存在”。
用户点击对话框消失之后界面会显示已生产和剩余多少台设备的信息。
1.2.2.4. 开始烧录测试
- 扫描枪模式:第一次点击“开始烧录测试”按钮,后续不需要再点击此按钮。
- 手动模式:当一个设备烧录测试完毕之后,需要手动点击“开始烧录测试”按钮继续下一个设备的烧录测试。
烧录测试过程中会有相应的提示信息,需要用户操作的或者错误的提示信息会以对话框的形式出现,其他的信息会在烧写状态里显示。
1.2.2.5. 导出生产数据
生产完成之后可以点击“导出生产数据”按钮生成已生产测试的设备信息列表文件。数据文件存放在本软件安装目录的data1目录。请将data1目录下的文件数据备份,防止数据丢失。
2. 产测工具安装
2.1. 安装
双击GProduct Setup1.x.x.exe打开,根据安装提示装好GProduct软件。以管理员运行。工具支持windows7/8/10 32/64位系统。
3. 产测日志与报告
找到本软件的安装目录。data1文件夹存放所有的生成数据。
3.1. 日志
factory.log为生产测试的日志信息,如:
[2018-12-07T13:15:35.410] [ERROR] test - SN: AA0000000002, test cmd timeout, cmd:factory test gpio
[2018-12-07T13:15:35.452] [ERROR] test - SN: AA0000000002, factory test one device Failed
[2018-12-07T14:28:33.709] [ERROR] test - SN:100000, detect failed, [hello world]
[2018-12-07T14:28:33.727] [ERROR] test - SN:100000, factory test one device Failed
[2018-12-07T14:30:13.287] [ERROR] test - SN: AA0000000001, test cmd timeout, cmd:factory test gpio
[2018-12-07T14:30:13.297] [ERROR] test - SN: AA0000000001, factory test one device Failed
[2018-12-07T14:34:57.107] [ERROR] test - SN: AA0000000002, factory test one device Failed
可以通过SN找到某个设备的出错信息。
3.2. 报告
通过点击界面按钮导出至data1目录。
factory-produced.csv列出了生产成功的设备关联信息。
4. 产测数据包配置
4.1. 数据流程
COP平台在产品页中,提供生产数据下载、生产软件的下载的入口,提供生产软件的使用文档。
4.2. 数据包内容
压缩包内容如下图所示:
其中factory.json,kp.txt,sn.txt为必须文件,且factory.json文件名字不能更改。文本文件可根据需求增加。
4.2.1. 各个txt文本文件
如:kp.txt,sn.txt,cid.txt等文件,从COP获取。每一行对应一个设备信息。
4.2.2. images.zip
烧录所需要的固件镜像文件包。通过product工具生成或者是从COP生成。
如果当前的生产环节没有烧录固件这一步骤,产测数据包可以不用包含images.zip文件。
4.2.3. factory.json配置
可以配置烧录测试的命令和步骤。必须为有效的JSON格式。
生产数据变量:以$符开头,由字符,_,数字组成的字符串标识,如:$kp、$sn、$mac
方案根据产品需要选择变量定义。
4.2.3.1. version字段
为配置文件的版本。目前为”v1”
4.2.3.2. variant字段
定义数据变量的来源。其中键为变量名字,值为各txt文本文件的名字。
"variant": {
"appKey": "AppKey.txt",
"kp": "kp.txt",
"sn": "sn.txt"
}
4.2.3.3. flash字段
定义烧录测试的步骤和命令。
pn:字符串,产品代号,产品的唯一标识
sn:字符串变量,产品序列号,单款产品下都不一样。从sn.txt获取一行字符串。
group:JSON对象,单个设备各个key的绑定信息。group对象的各个键作为产测报告第一行的内容。
如:
pn | sn | cid | AppKey |
---|---|---|---|
1000 | 2000 | 12356 | HKkkiHH |
1001 | 2001 | 12357 | UIYkkdDD |
steps:JSON数组,烧写测试的各个步骤
"flash": {
"pn": "13456",
"sn": "$sn$",
"group": {
"cid": "$cid$",
"AppKey": "$appKey$"
},
"steps": []
}
4.2.3.3.1. steps字段
烧写测试的各个步骤。
order:整型,执行顺序
message:字符串,执行内容,在界面显示
kp:变量,需要烧写的KP数据
image:字符串,镜像文件压缩包的名字
partition:JSON数组,需要烧写的分区。当没有此选项时,工具会去images.zip
中寻找/hex/total_image.hex
文件进行烧写
reboot:bool类型,烧写完毕是否需要重启
delay:整型,在命令执行之前的延时,单位millisecond
timeout:整型,读取串口数据的超时等待时间,单位millisecond
detect:字符串,串口需要检测的字符串
user_reset:bool类型,是否需要用户手动重启设备
commands:JSON数组,需要执行的各条命令配置
cmd:字符串,命令内容。可以为AT指令或者其他自定义的各种字符串命令,跟固件配合使用。
result:字符串,串口返回的结果
user_confirm:bool类型,是否需要用户手动确认
prompt_string:字符串,界面提示用户的字符串信息
check_timeout:整型,正常启动超时等待
check_string:字符串,正常启动串口输出的字符串
4.2.3.4. 配置文件范例:
{
"version": "v1",
"variant": {
"appKey": "AppKey.txt",
"kp": "kp.txt",
"sn": "sn.txt"
},
"flash": {
"pn": "13456",
"sn": "$sn$",
"group": {
"cid": "$cid$",
"AppKey": "$appKey$"
},
"steps": [{
"order": 0,
"message": "烧写KP",
"kp": "$kp$"
},
{
"order": 1,
"image": "images.zip",
"message": "烧写镜像",
"partition": [
"prim",
"tee",
"boot",
"imtb"
],
"reboot": true
},
{
"order": 2,
"message": "等待进入授权模式",
"delay":500,
"timeout": 3000,
"detect": "System enter into Auth Mode",
"user_reset": false,
"commands": [
{
"cmd": "test cmd\r\n",
"timeout": 100,
"result": "OK"
}
]
},
{
"order": 3,
"message": "等待进入工厂测试模式",
"timeout": 3000,
"detect": "System enter into Factory Mode",
"user_reset": false,
"commands": [
{
"delay": 500,
"cmd": "test led\r\n",
"timeout": 100,
"result": "OK",
"user_confirm": true,
"prompt_string": "红灯是否亮?"
},
{
"cmd": "test cmd\r\n",
"timeout": 100,
"result": "OK",
"user_press": true,
"prompt_string": "请按下某个按键"
},
{
"cmd": "set $appKey$\r\n",
"timeout": 100,
"result": "OK"
},
{
"cmd": "send reboot\r\n",
"timeout": 100,
"result": "OK"
}
]
},
{
"order": 4,
"message": "等待正常模式",
"check_timeout": 3000,
"check_string": "Welcome to XXX"
}
]
}
}