Android系统10 RK3399 init进程启动(十三) 产品配置相关文件

说明

系统:Android10.0

设备: FireFly RK3399 (ROC-RK3399-PC-PLUS)

前言

         上篇文章介绍了产品配置的结构和重要目录, 而这些目录中有几个非常重要的文件, 本文重点介绍和产品配置相关的文件和脚本。


一, AndroidProducts.mk(必须)

        AndroidProducts.mk文件用于描述产品列表, 表示当前公司有哪些产品, 主要包括PRODUCT_MAKEFILES变量, 会记录各个产品所用的Makefile的列表,比如有两个产品,rk3399.mk,  firefly.mk等, 一般格式如下:

PRODUCT_MAKEFILES :=  $(LOCAL_DIR)/<first_product_name>.mk \             

                          $(LOCAL_DIR)/<second_product_name>.mk

        同时在新的Android系统版本中可以添加COMMON_LUNCH_CHOICES编译, 用于在lunch命令之后显示的产品选项, 该变量起着类似旧版本vendorsetup.sh的作用。一般AndroidProducts.mk可以放在:

device/公司名/AndroidProducts.mk

device/公司名/产品名/AndroidProducts.mk        

 当lunch命令执行的的时候, 会自动在device、vendor、product目录中查找AndroidProducts.mk文件.

二, <product_name>.mk(必须)

某个产品的Makefile,比如rk3399.mk内容:默认自带的软件,厂商名,产品名称,设备名称,等信息。 同时也可以定义PRODUCT_COPY_FILES, PRODUCT_PROPERTY_OVERRIDES,PRODUCT_PACKAGES,用于对设备中需要用到的特有文件进行预编译和客制化:

PRODUCT_NAME := rk3399_roc_pc_plus

PRODUCT_DEVICE := rk3399_roc_pc_plus

PRODUCT_BRAND := rockchip

PRODUCT_MODEL := ROC-RK3399-PC-PLUS

PRODUCT_MANUFACTURER := rockchip

PRODUCT_FIREFLY_NAME := HDMI

 

三, BoardConfig.mk文件(必须)

更多用于定义和硬件相关的底层特性和变量,比如当前源码支持的cpu 位数(64/32位),bootloader和kernel, 是否支持摄像头,GPS导航等一些板级特性,BoardConfig.mk一般都在device或者vendor目录下的4级子目录下 例如:

TARGET_ARCH := arm64

TARGET_ARCH_VARIANT := armv8-a

TARGET_CPU_ABI := arm64-v8a

TARGET_CPU_ABI2 :=

TARGET_CPU_VARIANT := cortex-a53

TARGET_CPU_SMP := true

TARGET_2ND_ARCH := arm

TARGET_2ND_ARCH_VARIANT := armv7-a-neon

TARGET_2ND_CPU_ABI := armeabi-v7a

TARGET_2ND_CPU_ABI2 := armeabi

TARGET_2ND_CPU_VARIANT := cortex-a15

PRODUCT_KERNEL_ARCH := arm64

TARGET_PREBUILT_KERNEL := kernel/arch/arm64/boot/Image

BOARD_PREBUILT_DTBIMAGE_DIR := kernel/arch/arm64/boot/dts/rockchip

PRODUCT_KERNEL_DTS ?= rk3399-sapphire-excavator-edp-avb

PRODUCT_KERNEL_CONFIG ?= rockchip_defconfig android-10.config rk3399.config

PRODUCT_UBOOT_CONFIG ?= rk3399

BOARD_NFC_SUPPORT := false

BOARD_HAS_GPS := false

BOARD_HAVE_DONGLE ?= false

BOARD_GRAVITY_SENSOR_SUPPORT := true

BOARD_COMPASS_SENSOR_SUPPORT := false

BOARD_GYROSCOPE_SENSOR_SUPPORT := false

BOARD_PROXIMITY_SENSOR_SUPPORT := false

BOARD_LIGHT_SENSOR_SUPPORT := true

BOARD_PRESSURE_SENSOR_SUPPORT := false

BOARD_TEMPERATURE_SENSOR_SUPPORT := false

BOARD_USB_HOST_SUPPORT := true

四, device.mk(非必须)

一般作为通用的文件(如同样的soc做成不同产品的通用部分)被各种产品<product_name>.mk继承进来,比如:

./product/aosp_x86_64.mk:45:$(call inherit-product, $(SRC_TARGET_DIR)/board/generic_x86_64/device.mk)

rk3399_roc_pc_plus产品中的rk3399_roc_pc_plus.mk中

./rk3399_roc_pc_plus.mk:26:$(call inherit-product, device/rockchip/rk3399/device.mk)

./rk3399_roc_pc_plus.mk:27:$(call inherit-product, device/rockchip/common/device.mk)

里面常见有如下内容:

PRODUCT_COPY_FILES := \

        device/xxx/init.rc:root/init.rc \

PRODUCT_PROPERTY_OVERRIDES += \

                ro.ril.ecclist=112,911 \

PRODUCT_PACKAGES += \

    librkisp_aec \

五,vendorsetup.sh文件(非必须)

 用于将产品名放入到lunch选项列表中,在source build/envsetup.sh的时候会被自动调用,  一般内容如下:

add_lunch_combo xxxx-user

add_lunch_combo xxxx-userdebug

add_lunch_combo xxxx-eng

现在基本上都被AndroidProducts.mk中的COMMON_LUNCH_CHOICES替代:

COMMON_LUNCH_CHOICES := \

    rk3399_mid-userdebug \

    rk3399_mid-user \

    rk3399_atv-userdebug \

 

六,AndroidBoard.mk文件(非必须)
 

该文件被系统编译系统核心代码包含进来:

./build/make/target/board/Android.mk:7:-include $(TARGET_DEVICE_DIR)/AndroidBoard.mk

不过在./build/target中并没有这种文件,也就是说可能用的不多。 而在rk3399中会有这个文件, 该文件更像是一个传统的Makefile,完成了将依赖编译成目标的规则, 比如:

rebuild_fstab := $(intermediates)/fstab.rk30board

INSTALLED_RK_VENDOR_FSTAB := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR)/etc/$(notdir $(rebuild_fstab))

$(INSTALLED_RK_VENDOR_FSTAB) : $(rebuild_fstab)

    $(call copy-file-to-new-target-with-cp)

上面主要完成是fstab.rk30board文件重新生成和拷贝。

总结

先理解好产品配置中涉及到的文件意义, 后面自己配置产品就大体知道什么意思了。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Firefly-RK3399Android10中的pdf_20211123_1657.7z a4_portrait_rgbb.pdf a5_portrait_rgbb.pdf a5_portrait_rgbb_1_6_printscaling_default.pdf a5_portrait_rgbb_1_6_printscaling_none.pdf aacDecoder.pdf aacEncoder.pdf about_blank.pdf Android_malloc_debug.pdf annotation_highlight_long_content.pdf annotation_highlight_rollover_ap.pdf annotation_highlight_square_with_ap.pdf annotation_ink_multiple.pdf annotation_stamp_with_ap.pdf annotiter.pdf barcode_test.pdf BHUSA2014-capstone.pdf black.pdf bookmarks.pdf bookmarks_circular.pdf brotli-comparison-study-2015-09-22.pdf bug_113.pdf bug_213.pdf bug_216.pdf bug_298.pdf bug_325_a.pdf bug_325_b.pdf bug_343.pdf bug_344.pdf bug_355.pdf bug_360.pdf bug_451265.pdf bug_451830.pdf bug_452455.pdf bug_454695.pdf bug_455199.pdf bug_459580.pdf bug_481363.pdf bug_487928.pdf bug_507316.pdf bug_544880.pdf bug_547706.pdf bug_551248.pdf bug_551460.pdf bug_552046.pdf bug_554151.pdf bug_555784.pdf bug_557223.pdf bug_57.pdf bug_572871.pdf bug_583.pdf bug_601362.pdf bug_602650.pdf bug_603518.pdf bug_620428.pdf bug_631912.pdf bug_634394.pdf bug_634716.pdf bug_644.pdf bug_650.pdf bug_664284.pdf bug_679649.pdf bug_680376.pdf bug_707673.pdf bug_709793.pdf bug_713197.pdf bug_717.pdf bug_750568.pdf bug_757705.pdf bug_765384.pdf bug_779.pdf bug_781804.pdf bug_782596.pdf bug_921.pdf bug_xrefv4_loop.pdf CameraITS.pdf camera_engine_rkisp_user_manual_v2.2.pdf camera_hal3_user_manual_v2.3.pdf checkerboard.pdf circular_viewer_ref.pdf combobox_form.pdf control_characters.pdf default-values-ip.pdf DngNoiseModel.pdf Drm_Vendor_Modules_v1.pdf dynamic_list_box_allow_multiple_selection.pdf dynamic_password_field_background_fill.pdf dynamic_table_color_and_width.pdf EASLibrary3_5.pdf EAS_API_Reference.pdf EAS_Library_Integration_Guide.pdf Efuse process explain .pdf email_recommended.pdf embedded_attachments.pdf embedded_images.pdf encrypted.pdf feature_linearized_loading.pdf fieldsmanagement.pdf first.pdf hello_world.pdf ic_brightness_medium_24dp.pdf ic_radio_button_check
RK3399是一款基于ARM架构的处理器,主要用于嵌入式系统和移动设备的开发。在Android开发中,RK3399可以作为主要硬件平台之一来开发高性能、多功能的Android应用。 首先,开发者可以利用RK3399处理器的强大性能来实现复杂的图形渲染和处理,以提供更流畅的用户体验。它具备六核架构,双核Cortex-A72和四核Cortex-A53,可提供快速、高效的处理能力。此外,其集成的Mali-T860 MP4图形处理器还可以支持高性能的图形处理,帮助开发者完成各种图形需求。 其次,RK3399处理器还具有丰富的接口和扩展性,可以满足各种设备的需求。例如,它集成了多种视频显示接口(HDMI、DP等),支持4K显示输出,可用于开发高清晰度的多媒体应用。此外,它还提供多种通信接口(USB、PCIe等),可以连接各种传感器、摄像头、音频设备等外部设备,帮助开发者构建更丰富的功能。 再次,RK3399的开发工具和支持也非常完善。Rockchip官方提供了针对RK3399平台的开发工具和SDK,包括开发板、调试器、编译器等,方便开发者进行开发和调试工作。同时,Rockchip还提供了基于Android的开发套件,包括驱动程序、工具和示例代码,帮助开发者快速上手。 总之,通过使用RK3399处理器进行Android开发,开发者可以利用其强大的性能、丰富的接口和扩展性,以及完善的开发工具和支持,快速高效地开发出功能丰富、性能优异的Android应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旗浩QH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值