当前位置: 首页 > news >正文

MTK调试- 工程模式配置

工厂模式提供了一个简单的用户接口给测试人员去验证各个硬件模块的功能,测试人员能使用这种模式去检查是否相应的硬件模块都能工作正常。

1、工厂模式

默认按下power+音量上键进入工厂模式(可以在对应项目codegen.dws中修改),有如下菜单项:
1)自动测试 对所有的单项测试项进行测试。测试完毕后,将测试报告显示在屏幕上。
2)单项测试 可以对单独的模块进行测试。
3)测试报告 每个模块测试结果将被显示出来。
4)SN (serial number)
5)硬件设备信息 显示各模块的硬件信息,如:Flash, LCD,TP,Camera,Alsps,WIFI等
6)版本信息 软件的版本,IMEI号及SN
7)关机 关闭手机

2、涉及相关主要文件:

alps\mediatek\factory\src\factory.c  整个工厂模式的入口文件
alps\mediatek\factory\src\test\ftm.c  衔接各个模块
alps\mediatek\custom\common\factory\inc\  客户定制文件
alps\mediatek\factory\src\test\ftm_*  各个模块具体的代码实现

2.1 factory.c

main()函数:ftm_init();  //工厂模式各个模块初始化
case ITEM_FULL_TEST:
full_test_mode(buf, BUFSZ);
break;
case ITEM_ITEM_TEST:
item_test_mode(buf, BUFSZ);
break;
case ITEM_REPORT:
item_test_report(get_item_list(), buf, BUFSZ);
break;
......
对应了我们进入工厂模式时的菜单项。
1)full_test_mode()
......
pthread_create(&full_test_thd,NULL,init_full_test_new_mode,NULL);
......
while (items.name)
{
......
ftm_entry(items.id, ¶m);
int ret = report_writeByID(mod->id, mod->test_result);
......
}
full_test_mode 对应了菜单项的自动测试模式,其实应该译为全部测试(个人意见),首先会创建一个线程,该线程会在后台运行我们一些测试项 (比如bt wifi,GPS,eMMC,存储卡、SIM) ,测试完成后,会自动保存到测试报告中。循环语句中的是对其他的各个模块进行逐个测试,进入它们自己的ftm_entry函数进行测试,该函数是在ftm.c中构造的,在每个模块测试完成后,测试通过时将结果写入文件。
report_writeByID()
FILE *fp1 = fopen(reportlistname, "w");  // reportlistname[] = "/data/factoryreport.log";
fwrite(&read_rst, sizeof(report_save_struct), count, fp1);
report_writeByID 将结果写入factoryreport.log文件中。
2)item_test_mode 对应单项测试模式,每测试一次都会将结果写入factoryreport.log,原理一样。拔掉电池再次进入到工厂模式查看测试报告,仍可查看到上次的测试结果。

2.2 ftm.c

int ftm_init(){
ftm_init_fn *initfn = &ftm_init_funcs[0];
ftm_init_fn *initdbfn = &ftm_init_debug_funcs[0];
while (*initfn != NULL)
(*initfn)();
initfn++;
while (*initdbfn != NULL)
(*initdbfn)();
initdbfn++;
}
ftm_init_debug_funcs 主要针对音频调试。它和ftm_init_funcs定义在alps\mediatek\factory\src\test\ftm.mods.c中。
ftm_register(struct ftm_module *mod, ftm_entry_fn entry, void *priv)
{
......
mod->test_result = FTM_TEST_UNKNOWN;
mod->visible = true;
mod->entry = entry;
mod->priv  = priv;
ftm_mods[mod->id] = mod;
return 0;
}
这个函数很重要,起到衔接的作用,外部调用模块ftm_entry_fn函数是通过ftm_mods数组来进行的。如在facotroy.c中调用ftm_entry测试各个模块。
ftm_entry(int id, struct ftm_param *param)
{   
if (ftm_mods[id] && ftm_mods[id]->entry)
return ftm_mods[id]->entry(param, ftm_mods[id]->priv);
}

2.3 cust.h

功能宏控公共部分一般都是定义在\alps\mediatek\custom\common\factory\inc\cust.h
1)产线工模常用功能及宏控对应关系:(cust.h)
触摸屏:FEATURE_FTM_TOUCH
按键:FEATURE_FTM_KEYS
LCD:FEATURE_FTM_LCD
耳机:FEATURE_FTM_HEADSET
OTG:FEATURE_FTM_OTG
扬声器OC测试:FEATURE_FTM_SPK_OC
实时时钟:FEATURE_FTM_RTC
LED:FEATURE_FTM_LED
主照相机:FEATURE_FTM_MAIN_CAMERA
副照相机:FEATURE_FTM_SUB_CAMERA
双麦克风回路测试:FEATURE_FTM_ACSLB
Receiver:FEATURE_FTM_RECEIVER
FM收音机:FEATURE_FTM_FM  
电池充电:FEATURE_FTM_BATTERY
eMMC:FEATURE_FTM_EMMC
存储卡:FEATURE_FTM_MEMCARD
SIM卡探测:FEATURE_FTM_SIM
NAND闪存:FEATURE_FTM_FLASH
BT:FEATURE_FTM_BT
Wifi:FEATURE_FTM_WIFI
GPS:FEATURE_FTM_GPS
Strobe闪光灯:FEATURE_FTM_STROBE
Wave回放:FEATURE_FTM_WAVE_PLAYBACK
2)传感器及校准功能宏控定义在ProjectConfig.mk,例如:
磁力传感器:CUSTOM_KERNEL_MAGNETOMETER
光传感器距离传感器:CUSTOM_KERNEL_ALSPS
距离传感器校准:WT_PSCALI
陀螺仪传感器:CUSTOM_KERNEL_GYROSCOPE
加速度传感器:CUSTOM_KERNEL_ACCELEROMETER
气压传感器:CUSTOM_KERNEL_BAROMETER
3)LED相关宏控单独控制在factory\inc\ cust_led.h
按键操作背光:CUST_LED_HAVE_BUTTON_BACKLIGHT
RGB三基色:CUST_HAVE_NLEDS
RED:CUST_LED_HAVE_RED
GREEN:CUST_LED_HAVE_GREEN
BLUE:CUST_LED_HAVE_BLUE

http://www.dtcms.com/a/442334.html

相关文章:

  • 黑龙江生产建设兵团知识网站商城系统平台开发
  • 做麻将网站即墨网站设计
  • 网络请求完整指南:从零开始理解前端数据交互
  • Coze源码分析-资源库-编辑知识库-前端源码-核心逻辑/API
  • 【解决】Springboot+Mybatis数据分表后前端如何根据条件映射到对应子表中查询数据?!
  • 小迪自用web笔记53
  • 芜湖做网站哪个公司好网页设计基础的课程介绍
  • 网络营销郑州网站搭建方案开发 网站 团队
  • 做网站联系电话wordpress相册分类
  • win10/11 下载安装git教程 简单版
  • STM32 UART篇
  • 直播网站是怎么做的万网是做网站的吗
  • Python自动连接已保存WiFi
  • 数据结构二叉树
  • 我们做网站 出教材 办育心经做外贸必须建网站吗
  • GLUE任务
  • 【VS2022】LNK assimp64.lib找不到文件_openframework
  • 【架构艺术】构建变更风险防控能力市场的一些经验
  • 代做网站推广的公司wix做网站手机乱了
  • 操作系统应用开发(二十一)RustDesk 域名访问故障—东方仙盟筑基期
  • 做网站的都是直男癌吗创业做网站
  • JPA/Hibernate 批量插入实战:告别低效,实现真正的 MySQL 批量写入
  • 做企业网站需要准备什么材料口碑最好的旅游软件排名
  • 鸿蒙开发4--鸿蒙页面导航Router与参数传递详解
  • 容器生命周期与管理策略
  • 依托 Amazon Bedrock 生成式 AI 能力,结合 Slack 生态与亚马逊云科技服务构建企业级图像生成 App 的全流程解析
  • 设计师可以做兼职的网站国外优惠卷网站如何做
  • 小企业常用的进销存软件有哪些
  • Filebeat+Kafka+ELK 日志采集实战
  • 『C++成长记』一颗会搜索的二叉树