devlinux
Cấu trúc thư mục của một device trong mã nguồn Android (Android Open Source Project - AOSP) chứa các tập tin và thư mục cần thiết để cấu hình và hỗ trợ thiết bị phần cứng cụ thể. Đây là nơi chứa các thiết lập dành riêng cho thiết bị, từ kernel, driver đến các service và chính sách bảo mật.
Dưới đây là giải thích về các thư mục và file quan trọng trong cấu trúc thư mục android/device/brcm/rpi4:
Tên File | Mô Tả |
---|---|
Android.bp |
Cấu hình build system sử dụng Bazel/Blueprint để định nghĩa cách build các module. |
AndroidProducts.mk |
Liệt kê các file .mk chứa thông tin cấu hình cho các product/device. |
aosp_rpi4_car.mk |
Cấu hình chi tiết cho AOSP Raspberry Pi 4 Car. |
aosp_rpi4.mk |
Cấu hình chi tiết cho AOSP Raspberry Pi 4 mặc định. |
aosp_rpi4_tv.mk |
Cấu hình chi tiết cho AOSP Raspberry Pi 4 TV. |
BoardConfig.mk |
Cấu hình thông số phần cứng cho board (phân vùng, kernel, bootloader, v.v.). |
device.mk |
Cấu hình tổng thể cho device, bao gồm module, overlay và các tham chiếu liên quan. |
manifest.xml |
File XML định nghĩa các thư viện, tài nguyên cần thiết cho thiết bị. |
framework_compatibility_matrix.xml |
Định nghĩa các yêu cầu compatibility cho framework của thiết bị. |
compatibility_matrix.xml |
Xác định các yêu cầu về compatibility (phần cứng, phần mềm) cho thiết bị. |
PRODUCT_MAKEFILES := \
$(LOCAL_DIR)/aosp_rpi4.mk \
$(LOCAL_DIR)/aosp_rpi4_car.mk \
$(LOCAL_DIR)/aosp_rpi4_tv.mk
COMMON_LUNCH_CHOICES := \
aosp_rpi4-trunk_staging-userdebug \
aosp_rpi4_car-trunk_staging-userdebug \
aosp_rpi4_tv-trunk_staging-userdebug
a. PRODUCT_MAKEFILES** Đây là danh sách các tệp .mk định nghĩa cấu hình chi tiết của các sản phẩm Android mà thiết bị hỗ trợ. Các tệp này nằm trong thư mục device/ và chứa thông tin như tên sản phẩm, overlay, thư viện, driver, và các tính năng cụ thể.
Trong đoạn mã:
PRODUCT_MAKEFILES := \
$(LOCAL_DIR)/aosp_rpi4.mk \
$(LOCAL_DIR)/aosp_rpi4_car.mk \
$(LOCAL_DIR)/aosp_rpi4_tv.mk
b. COMMON_LUNCH_CHOICES** Đây là danh sách các cấu hình được hiển thị khi sử dụng lệnh lunch để chọn mục tiêu build trong môi trường phát triển Android.
Trong đoạn mã:
COMMON_LUNCH_CHOICES := \
aosp_rpi4-trunk_staging-userdebug \
aosp_rpi4_car-trunk_staging-userdebug \
aosp_rpi4_tv-trunk_staging-userdebug
File aosp_rpi4_car.mk định nghĩa các cấu hình cụ thể cho việc build Android Automotive trên Raspberry Pi 4. File aosp_rpi4_car.mk còn được gọi là product makefile trong AOSP, tập trung vào các tính năng và thành phần cần thiết cho hệ thống Android Automotive.
File aosp_rpi4_car.mk thực hiện các cấu hình:
File BoardConfig.mk được sử dụng trong AOSP để định nghĩa các cấu hình phần cứng và hệ thống liên quan đến thiết bị (ở đây là Raspberry Pi 4 - RPi4).
DEVICE_PATH := device/brcm/rpi4
# Platform
TARGET_NO_BOOTLOADER := true
TARGET_NO_RECOVERY := true
TARGET_BOARD_PLATFORM := rpi
TARGET_ARCH := arm64
TARGET_ARCH_VARIANT := armv8-a
TARGET_CPU_ABI := arm64-v8a
TARGET_CPU_ABI2 :=
TARGET_CPU_VARIANT := generic
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 := generic
# Bluetooth
BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR := $(DEVICE_PATH)/bluetooth
BOARD_HAVE_BLUETOOTH := true
# Camera
BOARD_LIBCAMERA_IPAS := rpi/vc4
BOARD_LIBCAMERA_PIPELINES := rpi/vc4
BOARD_LIBCAMERA_USES_MESON_BUILD := true
# Display
TARGET_SCREEN_DENSITY := 240
# Graphics
BOARD_MESA3D_BUILD_LIBGBM := true
BOARD_MESA3D_USES_MESON_BUILD := true
BOARD_MESA3D_GALLIUM_DRIVERS := vc4 v3d
BOARD_MESA3D_VULKAN_DRIVERS := broadcom
# Kernel
BOARD_CUSTOM_BOOTIMG := true
BOARD_CUSTOM_BOOTIMG_MK := $(DEVICE_PATH)/mkbootimg.mk
BOARD_KERNEL_CMDLINE := console=ttyS0,115200 no_console_suspend root=/dev/ram0 rootwait androidboot.hardware=rpi4
# Manifest
DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE := $(DEVICE_PATH)/framework_compatibility_matrix.xml
DEVICE_MANIFEST_FILE := $(DEVICE_PATH)/manifest.xml
DEVICE_MATRIX_FILE := $(DEVICE_PATH)/compatibility_matrix.xml
# Partition sizes
BOARD_FLASH_BLOCK_SIZE := 4096
BOARD_BOOTIMAGE_PARTITION_SIZE := 134217728 # 128M
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 2147483648 # 2048M
BOARD_USERDATAIMAGE_PARTITION_SIZE := 134217728 # 128M
BOARD_VENDORIMAGE_PARTITION_SIZE := 268435456 # 256M
BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE := ext4
TARGET_USERIMAGES_SPARSE_EXT_DISABLED := true
TARGET_USERIMAGES_USE_EXT4 := true
# Properties
TARGET_VENDOR_PROP += $(DEVICE_PATH)/vendor.prop
# SELinux
BOARD_SEPOLICY_DIRS += device/brcm/rpi4/sepolicy
BOARD_KERNEL_CMDLINE += androidboot.selinux=permissive
# Treble
BOARD_PROPERTY_OVERRIDES_SPLIT_ENABLED := true
BOARD_VNDK_VERSION := current
PRODUCT_FULL_TREBLE_OVERRIDE := true
TARGET_COPY_OUT_VENDOR := vendor
# Wifi
BOARD_WLAN_DEVICE := bcmdhd
BOARD_HOSTAPD_DRIVER := NL80211
BOARD_HOSTAPD_PRIVATE_LIB := lib_driver_cmd_$(BOARD_WLAN_DEVICE)
BOARD_WPA_SUPPLICANT_DRIVER := NL80211
BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_$(BOARD_WLAN_DEVICE)
WIFI_HIDL_UNIFIED_SUPPLICANT_SERVICE_RC_ENTRY := true
WPA_SUPPLICANT_VERSION := VER_0_8_X
Mã nguồn cho các thành phần phần cứng cụ thể:
Tên Thư Mục | Mô Tả |
---|---|
audio/ |
Chứa các file liên quan đến driver âm thanh (HAL, cấu hình đầu ra âm thanh). |
bluetooth/ |
Cấu hình và mã nguồn liên quan đến Bluetooth (HAL, driver). |
camera/ |
Chứa cấu hình camera (HAL, YAML, profiles). |
cec/ |
Hỗ trợ HDMI-CEC (Consumer Electronics Control) để điều khiển thiết bị qua HDMI. |
health/ |
Chứa cấu hình và mã nguồn liên quan đến health HAL (giám sát pin, nhiệt độ). |
keylayout/ |
Chứa các file định nghĩa layout của bàn phím hoặc thiết bị nhập liệu. |
light/ |
Mã nguồn và cấu hình cho light HAL (điều khiển đèn LED trên thiết bị). |
media/ |
Cấu hình codec video/audio và profile phương tiện truyền thông. |
ramdisk/ |
Cấu hình và script khởi động ban đầu (init files, fstab). |
usb/ |
Cấu hình cho USB HAL (hỗ trợ giao tiếp USB, gadget). |
Tùy chỉnh cấu hình, giao diện hoặc Service:
Tên Thư Mục | Mô Tả |
---|---|
overlay/ |
Chứa các file overlay để tùy chỉnh giao diện, cấu hình cho các dịch vụ và app. |
AndroidRpiOverlay/ |
Cấu hình overlay cho Raspberry Pi. |
AndroidTvRpiOverlay/ |
Cấu hình overlay cho Android TV trên Raspberry Pi. |
CarServiceRpiOverlay/ |
Cấu hình overlay cho dịch vụ Car trên Raspberry Pi. |
SettingsProviderRpiOverlay/ |
Cấu hình overlay cho Settings Provider trên Raspberry Pi. |
SystemUIRpiOverlay/ |
Cấu hình overlay cho System UI trên Raspberry Pi. |
WifiRpiOverlay/ |
Cấu hình overlay cho Wi-Fi trên Raspberry Pi. |
Tên Thư Mục | Mô Tả |
---|---|
seccomp_policy/ |
Chứa chính sách seccomp để giới hạn các syscall (tăng bảo mật). |
sepolicy/ |
Chứa file SELinux policy, quy tắc bảo mật cho device. |
suspend_blocker/ |
Hỗ trợ quản lý trạng thái suspend (ngủ) của thiết bị. |
BoardConfig.mk |
Cấu hình các file liên quan đến bảo mật và phân quyền khi build. |
devlinux
0 Bình luận