一、uboot命令行中添加:calibration
setenv bootargs 'calibration console=ttymxc0,115200 androidboot.console=ttymxc0 video=mxcdi0fb:RGB666,CLAA-WVGA di0_primary gpu_nommu,gpu_memory=64M pmem_adsp init=/init root=/dev/mmcblk0p4 rootwait rw rootfs=ext4'
分析:
在init进程 :源码中/system/core/init/init.c中如下:
static void import_kernel_nv(char *name, int in_qemu)
{
char *value = strchr(name, '=');
if (value == 0)
{
if (!strcmp(name, "calibration"))
calibration = 1;
return;
}
..
..
if (calibration)
property_set("ro.calibration", "1");//设置属性为1
else
property_set("ro.calibration", "0");
校准源代码:
/system/core/ts_calibrator/ts_calibrator.c
int main(int argc, char **argv)
{
..
..
property_get("ro.calibration", runme, ""); //判断属性
if (runme[0] != '1')
return 0;
..
..
}
二、 校准时要删除calibration文件
rm /data/system/calibration
分析:
ts_calibrator校准后
生成/data/system/calibration 同时会cp到/sys/module/mxc_ts/parameters/calibration
其中:/sys/module/mxc_ts/parameters/calibration
参数是传递到kernel中的:
源代码:
drivers/input/touchscreen/mxc_ts.c 中
module_param_array(calibration, int, NULL, S_IRUGO | S_IWUSR);//引用/sys/module/mxc_ts/parameters/calibration中的参数