已验证 创建 2026/06/06 更新 2026/06/11

FAQ21526 闪存校准Android P 闪存校准命令和校准数据路径 ( 2019-01-24 )

#camera #define

Flash 校准

笔记内容

[FAQ21526] [闪存校准] Android P 闪存校准命令和校准数据路径(2019-01-24)

Android P 升级后,反馈部分平台存在以下问题:

  • Flash 校准命令不起作用;
  • 无法生成 Flash 校准数据。

现针对该问题总结如下。


一、Flash 全面校准命令

1. 校准命令

adb shell setprop vendor.flash_ratio 1

或者:

adb shell setprop vendor.flash_calibration 1

2. 校准结果路径

校准结果会生成在如下目录:

/data/vendor/flash/

生成后的校准结果需要合入到参数文件中。

具体合入方式可参考 DCC 上各个平台对应的 Flash 调优文档,这里不再逐一说明。


二、Flash 快速校准命令

1. 快速校准命令

adb shell setprop vendor.flash_ratio_quick2 1

或者:

adb shell setprop vendor.flash_quick_calibration_2 1

2. 快速校准说明

快速校准的结果会直接读取 NVRAM。

该方式主要用于已经校准过的场景,即“针对校准数据的校准”。


三、校准命令无效或未生成 Cali 结果的排查方法

如果执行以上命令后,仍然遇到以下问题:

  • calibration 命令无效;
  • 没有生成 Cali 结果;

请先在 flash_mgr 目录下查找并确认如下文件。


四、调试命令查询

1. 查询文件

flash_mgr_m.cpp

2. 查询关键字

在如下函数中搜索:

e_SpModeCalibration

函数位置示例:

int FlashMgrM::doPfOneFrame(FlashExePara *in, FlashExeRep *out)
{
    ...
    getPropInt(PROP_FLASH_CALIBRATION, &propFlashCalibration, 0);
    getPropInt(PROP_FLASH_RATIO, &propFlashRatio, 0);
    getPropInt(PROP_FLASH_QUICK_CALIBRATION_2, &propFlashQuickCalibration2, 0);
    getPropInt(PROP_FLASH_RATIO_QUICK2, &propFlashRatioQuick2, 0);

    if (propFlashCalibration || propFlashRatio)
        mSpMode = e_SpModeCalibration;
    else if (propFlashQuickCalibration2 || propFlashRatioQuick2)
        mSpMode = e_SpModeQuickCalibration2;
}

3. 排查思路

根据设置 e_SpModeCalibration 的条件,反查需要设置的 debug 命令。

例如:

PROP_FLASH_RATIO

对应的属性可能是:

vendor.flash_ratio

因此可以通过如下命令触发 Flash 全面校准:

adb shell setprop vendor.flash_ratio 1

五、Cali 结果路径查询

1. 查询文件

可在以下文件中查找:

flash_cct.cpp

或者:

flash_cct.h

2. 查询关键字

搜索关键字:

cali_ae.txt

即可看到对应路径,例如:

/data/vendor/flash/eng_code.txt

六、不同平台代码路径查找方法

不同平台的 Flash 代码路径一般位于:

/vendor/mediatek/proprietary/hardware/mtkcam/aaa/source/

请根据对应平台的 mk 文件,确认当前平台实际使用的 flash_mgr 文件夹。