MT9632增加开机烧录HDCP Key功能

2020-09-29  本文已影响0人  安卓投影车载

需求:HDCP Key放在优盘,实现开机烧录

实现:对于有Supernova的Android方案,烧录HDCP Key可以通过SN在main完成。

9632因为没有SN,本想在Apollo找个类似SN的地方增加,碰到权限和文件操作命令问题,走了不少弯路。

比如:尝试在dtv_svc的main创建一个process来完成execv,报错:

CANNOT LINK EXECUTABLE "su": cannot find "libdl.so" from verneed[0] in DT_NEEDED list for "/system/xbin/su"

正解:在external新建一个进程,专门负责开机烧录HDCP Key。

1. 在external新建文件夹hdcp_service,并增加Android.mk和hdcp_service.c文件

Android.mk

LOCAL_PATH := $(call my-dir)

common_cflags := \

    -std=c99 \

    -Os \

    -Wall \

    -Wextra \

    -Wno-char-subscripts \

    -Wno-sign-compare \

    -Wno-string-plus-int \

    -Wno-uninitialized \

    -Wno-unused-parameter \

    -funsigned-char \

    -ffunction-sections -fdata-sections \

    -fno-asynchronous-unwind-tables \

# static executable for use in limited environments

include $(CLEAR_VARS)

LOCAL_SRC_FILES := hdcp_service.c

LOCAL_CFLAGS := $(common_cflags)

LOCAL_CXX_STL := none

LOCAL_CLANG := true

# LOCAL_MODULE_PATH and LOCAL_UNSTRIPPED_PATH do not equal

LOCAL_UNSTRIPPED_PATH := $(PRODUCT_OUT)/symbols/utilities

LOCAL_MODULE := hdcp_service

LOCAL_MODULE_CLASS := UTILITY_EXECUTABLES

LOCAL_MODULE_PATH := $(PRODUCT_OUT)/system/bin

LOCAL_MODULE_TAGS := optional

LOCAL_MODULE_STEM := hdcp_service

LOCAL_PACK_MODULE_RELOCATIONS := false

LOCAL_STATIC_LIBRARIES := libc libcurl libz libcrypto_static libcutils

LOCAL_SHARED_LIBRARIES := libssl

LOCAL_FORCE_STATIC_EXECUTABLE := true

include $(BUILD_EXECUTABLE)

hdcp_service.c需要一个main函数,里面做文件操作,比如读取优盘文件,拷贝,激活等动作。

可以用mmm ./external/hdcp_service/ 单独编译,替换到/system/bin目录看效果。

2. build/make/target/product/embedded.mk 增加编译,不然不会生成可执行bin 

     hdcp_service \

3. device/mediatek/m7332/scripts/dtv_svc.sh启动hdcp_service进程。

当然,会碰到权限的问题,都可以一一解决。

作者:工程师 超人/微信:mantis2340

上一篇 下一篇

猜你喜欢

热点阅读