摘要:
本文介绍添加MTK工厂测试项的步骤及调试技巧。
纲要:
1. 描述添加MTK工厂测试项的步骤
2.调试小技巧
1. 描述添加MTK工厂测试项的步骤
以添加红外测试为例:
1. mediatek/factory/inc/common.h
enum枚举添加ITEM_IR_TEST到最下面的ITEM_MAX_IDS上面,即倒数第2个;
2. mediatek/factory/inc/uistrings_chn.h
添加 #define uistr_ir_test “红外”;
这个字符串用于匹配factory.ini配置文件的测试项,只有两者一致的时候才会添加。注意这个文件是gbk编码。
unistrings.h是选择了英文才会使用,我们现在都使用的是中文,所以会匹配uistring_chn.h
3. mediatek/factory/src/factory.c
ftm_test_items[]添加item(ITEM_IR_TEST, uistr_ir_test);(在手动测试和单项测试中显示,必添加)
ftm_auto_test_items[]添加item(ITEM_IR_TEST, uistr_ir_test);(在自动测试中显示,尚不清楚机制,可选)
这两个参数就是步骤1 2添加的项目,名字要一致。
这里一般都会使用宏来控制是否添加,除非是都测的项目,以免运行出错。
4. mediatek/factory/src/test/ftm_irtest.c
添加ftm_irtest.c文件。实现ir_test_init(), ir_test_entry()两个函数。函数名没有要求。具体实现参考ftm_rftest.c。(rftest是通过代码判断是否测试通过的,如果需要手动确认是否通过,参考ftm_otg.c。主要区别在entry函数)
ir_test_init()中需要调用ftm_alloc,这个会注册一个ITEM_IR_TEST相关的结构体。然后调用ftm_register,把ir_test_entry和这个结构体绑定。
ir_test_init()在factory初始化过程中会调用。
ir_test_entry()在项目被点击的时候调用。需要实现一些UI相关的绑定,以及具体的验证方法。通常会启动一个线程如ir_update_thread来测试,entry通过全局变量ir_factory检测测试结果。
5. mediatek/factory/src/test/ftm_mods.c
添加extern int ir_test_init();
在ftm_init_funcs[]的倒数第二个(NULL上面)添加ir_test_init。这样在factory启动的时候就会自动调用ir_test_init,从而将ITEM_IR_TEST测试项与ir_test_entry绑定起来。
至此,所有添加项都关联起来了。
6.mediatek/factory/Android.mk
将ftm_ir_test.c加进TEST_SRC_FILES中。
同样用宏控制是否添加,这里用到CVTE_IRREMOTE_APP_SUPPORT的宏来控制。
7.factory.ini
添加MenuItem=红外;需要和uistr_ir_test 名字一致,否则无法匹配。
这个文件会先去/sdcard目录寻找,再去/etc目录寻找,我们调试的时候直接放进sdcard目录就可以了。
8.mediatek/custom/active_1051j/factory/factory.ini
把修改的ini文件放入custom目录下,使用mk文件将其拷贝至/etc目录下。
custom的factory目录会存在factory.ini和factory_chn.ini两个文件。如果是中文,则把factory_chn.ini拷进去,并重命名为factory.ini;英文则直接拷贝。也可以只留一个factory.ini文件,里面是中文。factory程序只会解析名为factory.ini的文件。
调试小技巧:
1. 烧录eng版本软件,打开USB调试。
2. 重启进入MTK工厂测试。
3. 需要烧录新factory程序的时候,push进/system/bin并chmod 777 /system/bin/factory。
4. 执行ps factory查询当前正在运行的测试程序,kill掉。
5. 在shell中输入factory重新启动MTK工厂测试程序。
6. 再次需要烧录新的factory程序的时候,ctrl+C即可停掉当前的factory程序,然后重新执行步骤3,5。 无需重启。
版权所有,转载请注明出处: