0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

rk3576 android15平台camera编译配置都做了什么?

jf_44130326 来源:Linux1024 2026-03-06 17:15 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

该文件是瑞芯微(Rockchip)Android平台下相机子系统的核心编译配置Makefile,属于Android Build System的关键组成部分,作用是根据编译环境的动态条件(SDK版本、芯片平台、产品类型),实现相机相关配置文件、固件、IQ参数文件的条件化拷贝,以及相机专属库的编译打包,最终将这些文件部署到开发板的system/vendor分区,是相机硬件与软件适配的核心配置桥梁。

本文将从核心作用编译条件维度分模块执行逻辑编译部署流程文件/库汇总五个维度展开分析,并配套流程图和表格。

一、文件核心作用

1.动态确定相机基础文件根路径:根据Android SDK版本区分camera/etccamera_v3/etc,适配不同Android版本的相机文件目录结构;

2.条件化文件拷贝:按产品类型(无相机的ATV/VR等)、芯片平台rk3528等专属芯片)、SDK版本Android8.0+/低版本)实现文件拷贝的过滤和分区选择;

3.芯片专属ISP IQ文件适配:为瑞芯微不同芯片(rk1126/rk3588等)匹配对应版本的ISP图像参数文件,决定相机成像效果;

4.库文件编译打包:指定CPU端人脸检测库的编译,将其加入系统镜像打包列表;

5.适配Android分区架构:严格区分system/vendor分区,遵循Android 8.0+的厂商文件与系统文件分离的设计规范。

二、关键编译条件维度

该文件的所有执行逻辑均基于三个核心条件的组合判断,是瑞芯微为适配多芯片、多Android版本、多产品形态设计的灵活编译策略,条件详情如下表:

条件类型

判断阈值/匹配值

对应Android版本/硬件/产品

核心作用

PLATFORM_SDK_VERSION

≥28API28/ ≥26API26

≥28=Android9.0≥26=Android8.0

确定文件根路径和目标分区

TARGET_BOARD_PLATFORM_PRODUCT

atv/vr/stbvr

安卓电视/VR/机顶盒VR

过滤无相机模块的产品

TARGET_BOARD_PLATFORM

rk3528/rk1126/rk356x/rk3588

瑞芯微各系列芯片

芯片专属文件/ISP IQ文件适配

关键背景Android 8.0API26)开始引入vendor分区,将厂商(瑞芯微)专属文件从system分区分离,提升系统兼容性和可维护性;Android9.0API28)对相机框架做了细节调整,因此瑞芯微区分了cameracamera_v3两个文件目录。

三、分模块执行逻辑

文件按路径确定基础文件拷贝过滤分区拷贝→IQ文件拷贝库编译的顺序执行,每个模块相互关联且基于条件判断,以下是逐模块详细解析。

模块1:动态确定相机基础文件根路径(CUR_PATH

根据Android SDK版本是否≥28,确定相机配置文件、固件的源码根路径,是后续所有文件拷贝的基础。

ifeq(1,$(strip$(shellexpr$(PLATFORM_SDK_VERSION)>= 28)))CUR_PATH :=$(TOP)/hardware/rockchip/camera/etc # Android9.0+elseCUR_PATH :=$(TOP)/hardware/rockchip/camera_v3/etc# Android9.0以下endif

$(TOP)Android源码根目录;

区分camera/camera_v3:瑞芯微对不同Android版本相机框架的适配,camera_v3对应早期相机3.0框架,camera为高版本优化后的框架。

模块2:基础文件拷贝的双层过滤

通过产品类型芯片平台做双层过滤,跳过无相机模块/专属适配芯片的基础文件拷贝,减少无效编译。

过滤1:产品类型过滤

ifeq($(filteratv vr stbvr, $(strip$(TARGET_BOARD_PLATFORM_PRODUCT))), )# 非ATV/VR/STBVR产品,执行后续拷贝endif

atv/vr/stbvr:无相机硬件模块的产品形态(安卓电视、VR设备、机顶盒VR),无需拷贝相机基础文件;

filterMakefile内置函数,匹配指定字符,无匹配则执行后续逻辑。

过滤2:芯片平台过滤

ifeq($(filterrk3528, $(strip$(TARGET_BOARD_PLATFORM))), )# 非rk3528芯片,执行后续拷贝endif

rk3528:瑞芯微该款芯片有单独的相机配置文件适配,因此跳过通用基础文件拷贝,避免文件冲突。

模块3:按SDK版本实现分分区基础文件拷贝

这是文件的核心拷贝逻辑,根据SDK是否≥26Android8.0),将相机基础文件拷贝到vendorsystem分区,同时使用Android构建系统的递归拷贝函数实现全目录文件复制。

核心语法:find-copy-subdir-files

该函数是Android Build System的内置函数,作用是递归查找源目录下的所有文件,按原目录结构拷贝到目标目录,参数含义:

$(call find-copy-subdir-files, 匹配规则, 源目录, 目标目录)#示例:$(call find-copy-subdir-files,*,$(CUR_PATH)/firmware,$(TARGET_COPY_OUT_VENDOR)/firmware)#*:匹配所有文件;递归拷贝firmware下所有文件到vendor/firmware

分支1SDK≥26Android8.0+拷贝到vendor分区

Android8.0+要求厂商专属文件部署在vendor分区,该分区为只读分区,独立于system分区,提升系统升级兼容性。

PRODUCT_COPY_FILES += # 芯片专属camera3配置文件,重命名为通用名$(CUR_PATH)/camera/camera3_profiles_$(TARGET_BOARD_PLATFORM).xml:$(TARGET_COPY_OUT_VENDOR)/etc/camera/camera3_profiles.xml # 递归拷贝相机固件$(callfind-copy-subdir-files,*,$(CUR_PATH)/firmware,$(TARGET_COPY_OUT_VENDOR)/firmware)# 递归拷贝相机所有配置文件$(callfind-copy-subdir-files,*,$(CUR_PATH)/camera,$(TARGET_COPY_OUT_VENDOR)/etc/camera)

PRODUCT_COPY_FILESAndroid Build System的核心变量,用于指定需要拷贝到系统镜像的文件列表,格式为源文件:目标文件

$(TARGET_COPY_OUT_VENDOR)Android构建系统宏,指向vendor分区的输出路径(实际为out/target/product/xxx/vendor)。

分支2SDK<26Android8.0以下)拷贝到system分区

低版本Android无独立vendor分区,所有文件均部署在system分区,同时额外拷贝相机工具到system/bin(高版本工具已整合到vendor分区)。

PRODUCT_COPY_FILES += $(CUR_PATH)/camera/camera3_profiles_$(TARGET_BOARD_PLATFORM).xml:$(TARGET_COPY_OUT_SYSTEM)/etc/camera/camera3_profiles.xml $(callfind-copy-subdir-files,*,$(CUR_PATH)/firmware,$(TARGET_COPY_OUT_SYSTEM)/etc/firmware)$(callfind-copy-subdir-files,*,$(CUR_PATH)/camera,$(TARGET_COPY_OUT_SYSTEM)/etc/camera)# 低版本额外拷贝相机工具到系统可执行目录$(callfind-copy-subdir-files,*,$(CUR_PATH)/tools,$(TARGET_COPY_OUT_SYSTEM)/bin)

$(TARGET_COPY_OUT_SYSTEM):指向system分区的输出路径(out/target/product/xxx/system);

system/binAndroid系统可执行工具的默认目录,相机工具拷贝到此处可直接在终端执行。

模块4:芯片专属ISP IQ文件拷贝

IQ文件是相机图像信号处理器(ISP)的核心参数配置文件,包含曝光、白平衡、锐化、降噪等成像参数,瑞芯微为不同芯片匹配了不同版本的ISP IQ文件,统一拷贝到vendor分区(所有支持IQ文件的芯片均为Android8.0+适配)。

该模块通过ifneq判断芯片平台,匹配后指定IQ文件源路径,再递归拷贝到vendor/etc/camera/rkisp2/,各芯片适配详情如下:

#rk1126/rk356x → isp21#rk3588 → isp3x#rk3562 → isp32_lite(轻量版ISP)#rk3576 → isp39(高性能ISP,支持4K成像){insert_element_0_}

IQ文件源码路径:$(TOP)/external/camera_engine_rkaiq/iqfiles/(瑞芯微开源的相机引擎rkaiq目录);

目标路径:所有芯片的IQ文件均统一到vendor/etc/camera/rkisp2/,便于相机驱动统一读取。

模块5CPU端人脸检测库编译打包

该模块通过Android构建系统变量指定库文件的编译和打包,实现相机的CPU端人脸检测功能(区别于ISP硬件人脸检测)。

#CPU facedetec libPRODUCT_PACKAGES+= libcam_facedetection

PRODUCT_PACKAGESAndroid Build System核心变量,用于指定需要编译并加入系统镜像的库/可执行文件/应用

libcam_facedetection:瑞芯微自研的CPU端人脸检测动态库.so文件),构建系统会自动从源码目录编译该库,并将其拷贝到系统的vendor/lib/system/lib目录,相机应用可直接调用。

四、相机相关文件/库的编译部署流程图

使用Mermaid语法绘制完整流程,涵盖条件判断文件拷贝库编译的全链路,可直接渲染查看:

wKgZPGmjhQaAdgE6AAQA6Pm2858133.png

五、相机相关文件/库源/目标路径汇总表

该表整合所有文件类型、触发条件、源码路径、目标路径、所属分区,是开发板相机文件部署的核心参考,备注列说明文件的核心作用:

5.1基础文件(配置/固件/工具)

文件类型

触发条件

源码根路径

目标路径

所属分区

备注

camera3配置文件

ATV/VR/STBVR+rk3528

$(CUR_PATH)/camera/xxx.xml

/etc/camera/camera3_profiles.xml

vendor/system

芯片专属相机3.0框架配置,重命名为通用名

相机固件

ATV/VR/STBVR+rk3528

$(CUR_PATH)/firmware/

/firmware//etc/firmware/

vendor/system

相机硬件驱动的固件文件

相机通用配置文件

ATV/VR/STBVR+rk3528

$(CUR_PATH)/camera/

/etc/camera/

vendor/system

包含白平衡、对焦等通用配置

相机工具

ATV/VR/STBVR+rk3528+SDK<26

$(CUR_PATH)/tools/

/bin/

system

相机调试/配置的可执行工具

5.2 ISP IQ参数文件(各芯片专属)

芯片平台

ISP版本

源码路径

目标路径

所属分区

备注

rk1126/rk356x

isp21

$(TOP)/external/camera_engine_rkaiq/iqfiles/isp21/

/vendor/etc/camera/rkisp2/

vendor

通用版ISP,适配中低性能芯片

rk3588

isp3x

$(TOP)/external/camera_engine_rkaiq/iqfiles/isp3x/

/vendor/etc/camera/rkisp2/

vendor

高性能ISP,支持4K/高分辨率成像

rk3562

isp32_lite

$(TOP)/external/camera_engine_rkaiq/iqfiles/isp32_lite/

/vendor/etc/camera/rkisp2/

vendor

轻量版ISP,适配低功耗芯片

rk3576

isp39

$(TOP)/external/camera_engine_rkaiq/iqfiles/isp39/

/vendor/etc/camera/rkisp2/

vendor

旗舰版ISP,支持双4K视频编码

5.3库文件(人脸检测)

库名

触发条件

编译方式

目标路径

所属分区

备注

libcam_facedetection

无(全局)

PRODUCT_PACKAGES

/vendor/lib//system/lib/

vendor/system

CPU端人脸检测动态库,相机应用可直接调用

六、关键知识点补充

1.分区差异vendor分区为瑞芯微厂商专属,system分区为Android系统原生,Android8.0+要求厂商文件优先部署在vendor,避免系统升级时覆盖厂商配置;

2.文件重命名camera3_profiles_$(TARGET_BOARD_PLATFORM).xml重命名为camera3_profiles.xml,是为了让相机框架统一读取通用文件名,无需适配不同芯片的文件名;

3.rkaiq引擎:瑞芯微的camera_engine_rkaiq是开源的相机图像优化引擎,IQ文件是该引擎的核心配置,决定相机的最终成像效果;

4.编译输出:所有拷贝的文件和编译的库,最终都会生成在Android源码的out/target/product/[芯片名]/目录下,随system.img/vendor.img烧录到开发板的对应分区。

七、文件的工程价值

该文件是瑞芯微多芯片、多Android版本、多产品形态相机适配的统一编译入口,通过Makefile的条件判断实现了一次配置,多场景编译,减少了重复的配置文件编写,同时严格遵循Android的分区架构规范,提升了系统的可维护性和兼容性。开发人员可通过修改该文件,快速添加/删除相机文件、适配新芯片的IQ文件、调整文件部署分区。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5209

    文章

    20625

    浏览量

    336769
  • 瑞芯微
    +关注

    关注

    27

    文章

    841

    浏览量

    54647
  • rk3576
    +关注

    关注

    1

    文章

    292

    浏览量

    1668
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    飞凌嵌入式RK3576开发板的MIPI-CSI调试——通路解析

    本文介绍了RK3576处理器的Camera通路,以及如何配置MIPI-CSI摄像头的不同输出格式。
    的头像 发表于 07-19 13:43 3930次阅读
    飞凌嵌入式<b class='flag-5'>RK3576</b>开发板的MIPI-CSI调试——通路解析

    RK3576 Android 14.0 SDK开发指南(第一集)

    可以按如下修改:(以RK3576平台为例说明) BOARD_BUILD_GKI := true后会自动开启AB功能。 关于GKI的kernel编译、ko更新等说明可以参考文档 RKDocs
    发表于 05-20 08:43

    RK3576 vs RK3588:为何越来越多的开发者转向RK3576

    瑞芯微(Rockchip)最新发布的 RK3576 一经推出,就吸引了大量原本关注 RK3588 的开发者。RK3588 作为旗舰级芯片,性能固然强大,但 RK3576 凭借其超高的能
    发表于 05-30 08:46

    Mpp支持RK3576

    想问下,https://github.com/rockchip-linux/mpp这里面支持RK3576么,看介绍没有提到说支持RK3576 目前是买了个rk3576的机顶盒,搭载了安卓14,想做安卓视频硬解。
    发表于 06-13 15:35

    宇珑RK3576核心板与嵌入式主板通用平台介绍

    宇珑RK3576核心板与嵌入式主板通用平台介绍
    的头像 发表于 08-26 17:23 1904次阅读
    宇珑<b class='flag-5'>RK3576</b>核心板与嵌入式主板通用<b class='flag-5'>平台</b>介绍

    RK3576核心板与嵌入式主板通用平台介绍

    RK3576核心板与嵌入式主板通用平台介绍
    的头像 发表于 08-26 11:37 3108次阅读
    <b class='flag-5'>RK3576</b>核心板与嵌入式主板通用<b class='flag-5'>平台</b>介绍

    新品体验 | RK3576开发板

    前言:RK3576作为瑞芯微第二代8nm高性能AIOT平台,一经推出便获得了极大的关注。广州眺望电子科技有限公司是一家专注于嵌入式处理器模组研发与应用的国家高新技术企业,目前公司已推出的相关型号有
    的头像 发表于 11-01 08:08 3375次阅读
    新品体验 | <b class='flag-5'>RK3576</b>开发板

    RK3576单板发布倒计时:RK3399与RK3576对比

    好多人说RK3576RK3399的升级版,某种程度上也可以这么说,RK3576在强大的多媒体功能的基础上,性能和接口都进行了升级 一、工艺 性能 rk3576采用 Rockchip
    的头像 发表于 12-03 16:59 2747次阅读
    <b class='flag-5'>RK3576</b>单板发布倒计时:<b class='flag-5'>RK</b>3399与<b class='flag-5'>RK3576</b>对比

    迅为RK3576开发板Android 多屏显示

    迅为RK3576开发板Android 多屏显示
    的头像 发表于 01-16 16:58 2068次阅读
    迅为<b class='flag-5'>RK3576</b>开发板<b class='flag-5'>Android</b> 多屏显示

    RK3576开发板技术分享 | Weston 配置技巧:定制你的桌面体验!

    RK3576开发板技术分享 | Weston 配置技巧:定制你的桌面体验!
    的头像 发表于 03-07 10:17 1717次阅读
    <b class='flag-5'>RK3576</b>开发板技术分享 | Weston <b class='flag-5'>配置</b>技巧:定制你的桌面体验!

    瑞芯微RK3576RK3576S有什么区别,性能参数配置与型号差异解析

    瑞芯微第二代8nm高性能AIOT平台RK3576家族再添新成员-RK3576S,先说结论:相较主型号的RK3576/RK3576J,性能略有
    的头像 发表于 08-14 23:57 2672次阅读
    瑞芯微<b class='flag-5'>RK3576</b>与<b class='flag-5'>RK3576</b>S有什么区别,性能参数<b class='flag-5'>配置</b>与型号差异解析

    迅为如何在RK3576上部署YOLOv5;基于RK3576构建智能门禁系统

    迅为如何在RK3576开发板上部署YOLOv5;基于RK3576构建智能门禁系统
    的头像 发表于 11-25 14:06 1952次阅读
    迅为如何在<b class='flag-5'>RK3576</b>上部署YOLOv5;基于<b class='flag-5'>RK3576</b>构建智能门禁系统

    硬核进阶:RK3576 Android15 驱动与系统开发实战指南

    android15,想与大家探讨更多,不仅仅是驱动,更包含android其他方面。 各位嵌入式与Android开发的朋友们,我们的  RK3576
    的头像 发表于 01-26 22:29 798次阅读
    硬核进阶:<b class='flag-5'>RK3576</b> <b class='flag-5'>Android15</b> 驱动与系统开发实战指南

    RK3576平台Android HAL层故障排查:从lshal命令看透问题本质

    RK3576 作为瑞芯微主流的中高端芯片,其 HAL 层基于 HIDL ( Android 硬件接口定义语言)实现,排查这类问题的核心工具就是 lshal —— 一个能直接暴露 HIDL 服务运行状态的命令
    的头像 发表于 02-06 07:12 579次阅读
    <b class='flag-5'>RK3576</b><b class='flag-5'>平台</b><b class='flag-5'>Android</b> HAL层故障排查:从lshal命令看透问题本质

    RK3576 Android15音频开发必看:alsa_route核心文件解析与修改场景

    ——alsa_route(alsa_route.h/alsa_route.c)。 作为连接Android上层音频框架与底层ALSA驱动的“桥梁”,alsa_route是RK3576 Android15音频
    的头像 发表于 02-26 08:08 358次阅读
    <b class='flag-5'>RK3576</b> <b class='flag-5'>Android15</b>音频开发必看:alsa_route核心文件解析与修改场景