MTK项目总结

2023-05-16

一、sensor路径

vendor/mediateck/propri

sensor校准:

加速度校准

adb shell "echo 1 > /sys/bus/platform/drivers/gsensor/test_cali"

adb shell cat /mnt/vendor/nvcfg/sensor/acc_cali.json

adb shell cat /mnt/vendor/nvcfg/sensor/acc_bias.json

光感校准:

adb shell cat /mnt/vendor/nvcfg/sensor/als_cali.json

抓scp log:

adb shell "while true; do cat /dev/scp;done"

单刷scp:

adb reboot bootloader

fastboot flash scp_a scp.img

fastboot reboot

单编scp

编译命令后加scp.img

地磁软磁参数根据NFC区分:

1、dtsi中添加节点,不同项目配置不同节点

例:#include "mag_sensor.dtsi"

&mag_sensor_info{

        support_nfc=<1>;

        status="okay";

}

2、地磁驱动中添加节点magnfcinfo来识别识别支持NFC

DEVICE_ATTR(magnfcinfo,0644,mag_show_nfcinfo, NULL);

static struct addtribute *mag_attributes[]={    

&dev_attr_magnfcinfo.attr,

NULL

}

读取dtsi,实现是否支持NFC

static uint32_t maghub_get_nfcinfo(void){        

        int ret;

        struct device_node *nfc_node = NULL;

        uint32_t is_support_nfc = 0;

        nfc_node = of_find_compatible_node(NULL, NULL, "mag,mag_sensor_info");

        if(nfc_node == NULL){

                pr_err("can not find mag,mag_sensor_info from dtsi \n")

                return MAG_USE_DEFAULT;

        }

        ret = of_property_read(nfc_node, "has_nfc", &is_support_nfc){

                pr_err("%s, get has_nfc node fail \n", __func__);

                return MAG_USE_DEFAULT;                

        }

        pr_info("%s, has_nfc=%d\n", __func__, (is_support_nfc==1)?1:0);

        return is_support_nfc;

}

实现:mag_show_nfcinfo

static ssize_t mag_show_nfcinfo(struct device *dev, struct device_attribute *attr, char *buf){

        struct mag_context *cxt = NULL;

        if(dev===NULL || attr==NULL || budd == NULL){

                pr_err("mag_show_nfcinfo fail \n")

                return -1;

        }

        cxt = mag_context_obj;

        return snprintf(buf, PAGE_SIZE, "%d\n", cxt->mag_ctl.is_support_nfc);

}

3、将软磁参数文件放到手机指定目录;

        chipset/prebuilt/odm/mtk/mt6768/POL/POL.mk

        SENSORS_ODM_COPY_FILES := \

                $(LOCAL_PATH)/mag/memsic_nfc.txt:etc/memsic_nfc.txt \

                $(LOCAL_PATH)/mag/memsic_nonfc.txt:etc/memsic_nonfc.txt 

4、地磁校准库添加读写软磁参数文件

        #define HAS_NFC_FILE 

        #define SOFTPARA_NFC

        #define SOFTPARA_NO_NFC

static int check_nfc_config(void){

        FILE*fp = NULL;

        char buf[8]= {0};

        fp = fopen(HAS_NFC_FILE , "r")

        if(!fp){

                ALGOE("%s open nfc config file %s failed \n", __FUNCTION__, HAS_NFC_FILE );

                return -1;

        }

        if (fgets(buf, sizeof(buf),fp) ==NULL){

                 ALGOE("%s fgets nfc config file %s failed \n", __FUNCTION__, HAS_NFC_FILE );

                fclose(fp);

                return -1;

        }

        fclose(fp);

        if (!strncmp(buf, "1", 1)){

                return MAG_HAS_NFC;

        }else if(!strncmp(buf, "0", 1)){

                return MAG_NO_NFC;

        }else{

                 return MAG_USE_DEFAULT;

        }

}

inf ReadSoftpara_FromFIle(float *para){

        int fd;

        inf n;

        char buf[SOFTPARA_SIZE];

        int ret;

        int has_nfc = MAG_USE_DEFAULT;

        has_nfc = check_nfc_config();

        if (has_nfc == MAG_HAS_NFC){

                fd = open(SOFTPARA_NFC, O_RDONLY);

        }else if(has_nfc == MAG_NO_NFC){

                fd = open(SOFTPARA_NO_NFC, O_RDONLY);

        }else{

                return 0;

        }

        if(fd == -1){

                return 0

        }

        n = read(fc, buf, SOFTPARA_SIZE);

        if(n <= 0){

                close(fd);

                return 0;

        }

        ret = sscanf_s(buf, "%f %f %f %f %f %f %f %f %f\r\n", &para[0], &para[1], &para[2], &para[3], &para[4], &para[5], &para[6], &para[7], &para[8]);

        if(ret < 0 ){

                close(fd)

                return 0;

        }

        close(fd);

        return ret;        

}

5、添加地磁库libakl.so

文件:vendor/mediatek/proprietary/hardware/sensor/sensor-1.0/Android.mk

内容:LOCAL_SHARED_LIBRARIES := \

                libmemsic \

                libakl

include $(LOCAL_PATH)/../../algorithm/akm/Android.mk

文件:vendor/mediatek/proprietary/hardware/sensor/sensor-1.0/algorithm/Android.mk

内容:include $(call all-named-subdir-makefiles, calibration memsic akm)

文件:vendor/mediatek/proprietary/hardware/sensor/sensor-1.0/algorithm/akm/Android.mk

内容:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := libakl

LOCAL_PROPRIETARY_MODULE := true

LOCAL_MODULE_OWNER := mtk

LOCAL_MODULE_CLASS := SHARED_LIBRARIES

LOCAL_SRC_FILES := lib/libakl.so

LOCAL_MODULE_SUFFIX := .so

LOCAL_MULTILIB := 32

LOCAL_SHARED_LIBRARIES := libc++ libc libdl liblog libm

include $(BUILD_PREBUILT)

include $(CLEAR_VARS)

LOCAL_MODULE := libakl

LOCAL_PROPRIETARY_MODULE := true

LOCAL_MODULE_OWNER := mtk

LOCAL_MODULE_CLASS := SHARED_LIBRARIES

LOCAL_SRC_FILES := lib64/libakl.so

LOCAL_MODULE_SUFFIX := .so

LOCAL_MULTILIB := 64

LOCAL_SHARED_LIBRARIES := libc++ libc libdl liblog libm

include $(BUILD_PREBUILT)

6、LCD亮度传值给SCP

       文件:kernel-4.19/drivers/misc/mediatek/leds/mt6768/mtk_leds.c

内容:case MT65XX_LED_MODE_CUST_BLS_PWM:

        send_sensor_scp_brightness(level);

文件:kernel-4.19/drivers/misc/mediatek/scp/cm4/v01/scp_helper.c

内容:void send_sensor_scp_brightness(int brightness)

{

        struct als_para_t *als_priv = get_sensor_share_mem_addr(SHR_MEM_TYPE_ALS);

        if (als_priv == NULL){

                return;        

        }

        als_priv->lcd_brightness = (int32_t)brightness;

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MTK项目总结 的相关文章

  • 关于mtk配置文件的一些说明

    一 ProjectConfig mk 共三种区别 1 AUTO ADD GLOBAL DEFINE BY NAME类型 xff1a 将它后面的名字 xff0c 定义为宏是没有初始值的 define XXX 2 AUTO ADD GLOBAL
  • mtk平台dmesg配置

    mtk平台dmesg log buffer设置 CONFIG LOG BUF SHIFT
  • MTK芯片测耦合工具使用R&S®NRP-Z21测量 V1.3 20220409 ModemMETA_src_v10.2128.0.002

    一 耦合工具V1 3 20220409 MTK芯片 1 逻辑 xff1a 打开软件 xff0c 扫码SN xff0c 自动连接 xff0c 连接成功后 1 开启强发 xff08 强发参数 xff09 2 读测量值 3 结果判定 xff08
  • 《酒店管理系统》项目总结

    一 项目模块 二 业务流程图 三 业务流程功能实现 1 首先客人接待 xff1a 实时房态图 xff0c 可以直观的显示出所有客房的状态 2 客人预定 xff1a 根据客人的基本资料做预订 xff0c 在房态图上的客房添加一个预定的标识 3
  • MT7628 wifi模块,MTK路由器芯片介绍

    MT7628处理器 xff1a MT7628nn mt7628an 系列产品是新一代2T2R 802 11n Wi Fi AP 路由器 系统单芯片 MT7628可提升射频效能表现 减低功耗 xff0c 并将整体物料清单 BOM 成本优化 x
  • mtk android 4.4 audio framework 代码分析(未完成)

    mtk android 4 4 audio framework 代码分析 未完成 xff0c 有需要的朋友可以参考下 mtk android 4 4 audio framework 代码分析 未完成 2 28 2015 3 01 24 PM
  • 使用正则去掉html标签

    在开发项目的时候 会有去掉html标签只提取文字内容的情况 在此做个记录 以免之后找不到 1 匹配 lt 开始 gt 结束的全局正则 var regex lt gt gt ig 2 body内部的p标签 body p 我是文本内容 p 3
  • 关于华为手机使用MTK刷机时出现failed to get PMT info的解决办法

    华为手机USB驱动 https pan baidu com s 1dDBZLSH 华为手机系统修复工具 https pan baidu com s 1dDBZLSH 最近在折腾手中的一部华为荣耀3C手机 前段时间在手机维修店给维修时 给我升
  • MTK 底层耳机中断上报流程

    文章目录 前言 框架 硬件 背景知识 线控耳机原理图 检测电路解释 正文开始 软件 Linux 驱动代码流程 Android 前言 更新 加量不加价 框架 硬件 背景知识 国标耳机插头信号定义 lt lt lt 左声道 右声道 麦克 地 美
  • CSS重构

    1 重构和架构 重构是指在不改变代码行为的前提下 重写代码 使其更加简洁 易于复用 架构是指软件项目的各个不同部件之间的组合方式 优秀的架构 可预测 可以对软件的工作方式和结构做出准确的假设 可复用 在多处使用同一代码 无需重写 可扩展 比
  • 如何快速上手一个手机平台

    假如你以前在其它手机平台上开发过MMI APP 现在公司要更换手机平台 你如何能快速了解新的手机平台 首先 你要有一个该平台的运行环境 象MTK 展讯都提供一套完整的软件方案 经过简单的调试 该运行环境编译通过 其次 找出手机软件的运行入口
  • 电子银行业务分析系统—项目总结

    电子银行业务分析系统 项目总结 1 2 1 项目概况 XXX银行业务分析系统 是为建行XXXX分行电子银行部开发的综合性业务数据分析系统 其主要基于分行ODSB数据作为数据源 主要包括CCBS 中国建设银行新一代柜面业务系统 和ECTIP
  • 项目问题总结

    1 android studio 导入开源项目源码时要注意与自己包的冲突 比如 你有一个com xxxx的包 而需要导入的是com xx yy 你就不能把整个包复制过来 否则会报can t resolve symbil 因为它根据com会到
  • android mtk6732 camera otp 加载流程

    在android的hal层获取属性节点信息值 Get Property char value PROPERTY VALUE MAX 0 property get camcaldrv log value 0 MINT32 dumpEnable
  • 【分享】ROM厂商刷机工具合集

    1 MTK刷机 SP Flash Tool下载地址 SP Flash Tool v5 1924 Download SmartPhone Flash Tool MTKClient 下载地址 Releases notmyst33d mtkcli
  • 充电IC驱动调试----移植充电IC bq25601

    关键词 MTK android 充电IC 内核 linux3 18 系统 android7 0 作者 arunboy 欢迎转载 请注明作者 在原有展讯平台下面的bq25601的基础上编写mtk平台下的bq25601代码 参考mtk平台下的
  • 电商项目完成的BUG调查原因和解决方案

    这是我来到浙大网新恒天后 第一个完成的项目 在完成项目后 我总结了那些自己感觉重要的BUG 第一项目为电商项目 1 BUG系列一 界面销毁时 未关闭广播 dialog等 崩溃 Bug现象 Bug 85778 同一个账号 两部手机登陆 第一个
  • 项目总结之angular4.0中的@viewchild,@Input,@Output

    在项目中遇到了这样一个问题 父页面中需要操作子组件里面的方法 这个时候需要怎么做呢 项目是由ionic3 0和angular4 0构成的 代码如下 child的html页面如下 div class child div class child
  • MTK多国语言相关经验总结

    MTK多国语言相关经验总结 一 移植多国语言移植多国语言主要牵涉到对mmi features h 整个工程的宏控定义文件 fontres c 字体资源文件 的修改 并添加相应的字库文件 1 语言宏控的修改在mmi features h文件中
  • Android USB Camera(1) : 调试记录

    1 前言 前段时间调试了一个uvc摄像头 这里做下记录 硬件平台为mt6735 软件平台为android 5 0 2 底层配置 UVC全称是usb video class 一种usb视频规范 所有遵循uvc协议的摄像头都不需要安装额外的驱动

随机推荐

  • 金山词霸C++笔试(北邮11月23号)

    金山词霸笔试题 xff08 北邮11月23号 xff09 xff08 一 xff09 以下输出什么 xff1f char ptr 61 34 hello world 34 cout lt lt ptr h ptr指向字符串的首地址 xff0
  • 关于计算机研究和写作的链接收集

    研究相关的资源 What is Research in Computer Science 计算科学的研究是什么 xff1f 翻译 Basic Research Skills in Computer Science 计算科学的基本研究方法 R
  • 实战笔记之C++里面双冒号和冒号及点号引用符

    标题党了额 xff0c mark一下 xff0c 有时间再整理 以下节选自多人博客 推荐博文一篇http blog csdn net gyymen article details 4962873 箭头 xff08 gt xff09 xff1
  • 在Linux中如何修改root帐户的登录用户名

    vi etc passwd 按i键进入编辑状态 修改第1行第1个root为新的用户名 按esc键退出编辑状态 xff0c 并输入 x保存并退出 vi etc shadow 按i键进入编辑状态 修改第1行第1个root为新的用户名 按esc键
  • Linux elasticsearch 安装超详细教程

    1 下载elasticsearch 7 11 2 linux x86 64 tar gz 之所以下载7 11 2版本是因为我使用了中文分词器 xff0c 对应中文分词器的版本号 2 可以官方下载 xff0c 会比较慢 xff0c 这里提供我
  • 程序员做一辈子?

    首先 xff0c 程序员真有必要干一辈子吗 xff1f 如果你是个搬砖的 xff0c 你会考虑一辈子搬砖吗 xff1f 你肯定会想着过几年挣钱了 xff0c 买个车跑运输 xff0c 或者自己做工头 对程序员来说 xff0c 真心没有必要干
  • ubuntu系统怎么使用ifconfig和开启远程连接

    在ubuntu系统刚安装好之后ifconfig命令和开启远程连接都是不起作用的 xff0c 如果需要使ifconfig起作用需要安装一个小工具 xff0c 如果想开启远程连接的话也需要安装open ssh工具 开启ifconfig xff1
  • LDMIA、LDMIB、LDMDB、LDMDA、STMIA、LDMFD、LDMFA、LDMED、LDMEA等指令详解

    关于多寄存器加载存储指令 1 LDMIA指令 LDMIB指令 LDMDB指令 LDMDA指令 xff08 1 xff09 LDMIA指令 xff0c IA表示每次传送后地址加4 xff08 2 xff09 LDMIB指令 xff0c 每次传
  • FreeRTOS-互斥信号量

    原文地址 xff1a http blog csdn net xukai871105 article details 43456985 0 前言 在嵌入式操作系统中互斥型信号量是任务间资源保护的重要手段 下面结合一个具体例子说明FreeRTO
  • 执行体线程--ETHREAD

    typedef struct ETHREAD KTHREAD Tcb 内嵌了KTHREAD对象作为第一个数据成员 LARGE INTEGER CreateTime 包含了线程创建时间 xff0c 他是在线程创建时被赋值的 union LAR
  • 显卡驱动的作用(本质作用)

    确切资料表明显卡不需要驱动也可以进行显示 xff0c 只需要将显示的内容存到对应的显存地址就可以 xff08 通过cpu直接或者间接的硬连线实现 xff09 也就是说单纯的显示像素的话不需要使用显卡驱动 xff0c 但是单纯的显示像素甚至某
  • 智能指针之make_unique与make_shared

    make unique的实现 std make shared是C 43 43 11的一部分 xff0c 但是std make unique很可惜不是 它是在C 43 43 14里加入标准库的 xff0c 但我们可以自己实现make uniq
  • NVIDIA Jetson TX1 系列开发教程之十二:libcurl、RapidJSON安装

    NVIDIA Jetson TX1 系列开发教程之十二 xff1a libcurl RapidJSON安装 转载请注明作者和出处 xff1a http blog csdn net u011475210嵌入式平台 xff1a NVIDIA J
  • 用户标签体系的搭建方法

    一 标签体系的困境 每一个需求背后都有对应的痛点和问题 xff0c 在讲具体的方法之前 xff0c 笔者想简单阐述一下标签体系搭建和实践过程中企业一般会遇到的问题 困境 xff0c 方便读者理解本文的搭建思路 目的和未来的优化方向 用户标签
  • Windows 安装TVM 及各种报错解决!无GPU版本

    这篇先来一个不用GPU的下次 xff0c 再整一个带GPU的 xff01 系统基本信息 Windows 11 Anaconda 4 12 Python 3 8 13 Visual Studio 2022 这几天在Windows 下安装TVM
  • C++变量前面加下划线的含义

    C 43 43 变量前面加下划线和不加下划线都不会影响对变量的定义 xff0c 只是风格问题 xff0c 更喜欢将成员变量或者私有成员变量的前面加上下划线 以表示该变量是某个类的属性 比如 xff1a int size int getsiz
  • tensorflow中GPU相关设置解决显存不足

    1 显存不足时报错如下 xff1a E tensorflow stream executor cuda cuda dnn cc 359 could not create cudnn handle CUDNN STATUS INTERNAL
  • freertos 学习笔记——第一章、裸机进阶RTOS

    第一章 前言 1 1裸机的软件写法 1 xff0c 轮询系统 void main sys init while 1 task 1 task 2 任务处理在循环中依次执行 2 xff0c 前后台系统 中断被成为前台 xff0c 无限循环被成为
  • freertos学习笔记——第三章、任务控制——3.1 全局变量造成的困扰

    裸机中经常使用全局变量 xff0c 但在RTOS中大量使用全局变量会造成很多问题 在RTOS中也可以使用全局变量但使用时一定要注意有哪些任务会写这个变量 xff0c 哪些任务会读这个变量 尤其切记在使用这个变量的过程中变量的数值发生改变 x
  • MTK项目总结

    一 sensor路径 vendor mediateck propri sensor校准 xff1a 加速度校准 adb shell 34 echo 1 gt sys bus platform drivers gsensor test cal