问题: 机器G-Sensor方向不对,Y轴与现实相反,导致相机拍照存下的照片上下颠倒。
解决: G-sensor传感器 : BMA222E
需要修改文件 : 配合hwmsen_helper.c修改dts中gsensor方向。
路径 :
dts: kernel/arch/arm64/boot/dts/[target].dts
hwmsen_helper.c:kernel/drivers/misc/mediatek/hwmon/hwmsen/hwmsen_helper.c
在hwmsen_helper.c中找到
struct hwmsen_convert map[] = {
{ { 1, 1, 1}, {0, 1, 2} },
{ {-1, 1, 1}, {1, 0, 2} },
{ {-1, -1, 1}, {0, 1, 2} },
{ { 1, -1, 1}, {1, 0, 2} },
{ {-1, 1, -1}, {0, 1, 2} },
{ { 1, 1, -1}, {1, 0, 2} },
{ { 1, -1, -1}, {0, 1, 2} },
{ {-1, -1, -1}, {1, 0, 2} },
};
以第一组为例:
{1,1,1}表示对应x,y,z对应的正方向;
{0,1,2}分别对应的机器的x,y,z坐标轴,0:x ;1:y;2:z。
dts中direction表示选择驱动中选第几组作为方向参数。
/* sensor standardization */
cust_accel@0 {
compatible = "mediatek,bma222e_new";
i2c_num = <2>;
i2c_addr = <0x18 0 0 0>;
direction = <6>; //0->6
power_id = <0xffff>;
power_vol = <0>;
firlen = <0>;
is_batch_supported = <0>;
};
这里选的是{ { 1, -1, -1}, {0, 1, 2} } 。选第几组需要根据实际来定。
具体选择哪一个步骤:
首先选一组参数作为参考,烧入机器中,查看x,y,z是否错位,以及值是否正确。
若x,y,z错位,则调整{0,1,2}的位置;若x,y,z值不对,则修改对应x,y,z{1,-1,1}的正负
然后以此为参考,选择正确的一组作为参数。以上的排列组合并不完整,若没有需要的,则自己添加。
最后,需要G-sensor校准,实际情况下,x,y,z的值一般不会超过9.8。将机器初始位置摆正确,进入G-sensor校准即可。
网友评论