为RK3588适配LineageOS版Redroid镜像

为RK3588适配LineageOS版Redroid镜像

redroid-rk3588项目已添加LineageOS 20的支持:
GitHub链接

起因

长篇大论懒得说,一句话总结:byd谷歌把AOSP搞成了毛坯房,根本没法住人。 忍不了了换LineageOS了。

克隆代码

清华源有教程,自己去看,顺便要把redroid官方的那些组件也加到里面去,也就是克隆local_manifests那一步。这次弄的是基于Android 13LineageOS 20,如果需要gapps的话,从MindTheGapps那边弄到项目里面就可以了。对了, Android 13的gapps,代号为tau
然后,要把rk3588相关的一些组件,都弄到源码树里面来。去khadas那边偷,github上他们传的有很多库,参照的android-manifest库,khadas-edge2-android13分支,按照路径把对应的库拉到对应的位置就可以了:

  • hardware/rockchip/libbaseparameter
  • hardware/rockchip/libgralloc/bifrost
  • hardware/rockchip/libhardware_rockchip
  • hardware/rockchip/librga
  • hardware/rockchip/librkvpu
  • hardware/rockchip/libbaseparameter
  • device/rockchip/common
  • vendor/rockchip/common
  • external/libdrm
    注意: device/rockchip/common要从device/khadas/common拉下来,拉完全局搜索替换khadas为rockchip,然后删除charger的Android.bp文件。

修改代码

patches从redroid那边弄过来,然后做个软链接,把android-13.0.0-r83链接到lineage-20上,这样apply-patch.sh才能正确识别到LineageOS的tag,然后正常打patch就行。
device/redroid/redroid.mk里面,引入LineageOS相关的东西:

LINAGE_BUILD := redroid
$(call inherit-product, vendor/lineage/config/common_full_phone.mk)

vendor/redroid/vendor.mk,把这些东西加进去:

TARGET_BOARD_PLATFORM := rk3588
TARGET_BOARD_PLATFORM_GPU := mali-G610
TARGET_BOARD_HARDWARE := rk30board
TARGET_RK_GRALLOC_VERSION := 4
BOARD_USE_DRM := true

PRODUCT_HAVE_RKVPU := true

BUILD_BROKEN_ELF_PREBUILT_PRODUCT_COPY_FILES := true
BUILD_BROKEN_DUP_RULES := true

include device/rockchip/common/gralloc.device.mk

PRODUCT_BROKEN_VERIFY_USES_LIBRARIES := true


BOARD_VENDOR_GPU_PLATFORM := bifrost

$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk)

PRODUCT_PROPERTY_OVERRIDES += \
    ro.vendor.mpp_buf_type=1

PRODUCT_PACKAGES += \
    android.hardware.graphics.allocator-V1-service \
    android.hardware.graphics.allocator-V1-$(BOARD_VENDOR_GPU_PLATFORM) \
    android.hardware.graphics.allocator-V1-arm \
    android.hardware.graphics.mapper@4.0-impl-$(BOARD_VENDOR_GPU_PLATFORM)

DEVICE_MANIFEST_FILE += \
    device/rockchip/common/manifests/android.hardware.graphics.mapper@4.0.xml

$(call inherit-product, device/rockchip/common/rootdir/rootdir.mk)
$(call inherit-product, device/rockchip/common/modules/mediacodec.mk)
$(call inherit-product, vendor/rockchip/common/device-vendor.mk)

加好之后gpu_config.sh脚本修改:

#!/system/bin/sh
setprop ro.hardware.egl mali
setprop ro.hardware.gralloc redroid
setprop ro.boot.redroid_fps 60

redroid_fps=$(getprop ro.boot.redroid_fps)
if [ -z "$redroid_fps" ] || ! [[ $redroid_fps =~ ^[0-9]+$ ]]
    then
            setprop ro.boot.redroid_fps 60
else
    if [ $redroid_fps -gt 1 ] && [ $redroid_fps -lt 120 ]
    then
            setprop ro.boot.redroid_fps $redroid_fps
    else
            setprop ro.boot.redroid_fps 60
    fi
fi

redroid.common.rcon-early-init里面加入:

    chmod 0777 /dev/rga
    chmod 0666 /dev/uhid
    chmod 0777 /dev/dri
    chmod 0777 /dev/dri/card0
    chmod 0777 /dev/dri/card1
    chmod 0777 /dev/dri/renderD128
    chmod 0777 /dev/dri/renderD129
    chmod 0777 /dev/mpp_service
    chmod 0666 /dev/mali0

    chmod 0444 /dev/dma_heap/cma
    chown system system /dev/dma_heap/cma
    chmod 0444 /dev/dma_heap/cma-uncached
    chown system system /dev/dma_heap/cma-uncached
    chmod 0444 /dev/dma_heap/system
    chown system system /dev/dma_heap/system
    chmod 0444 /dev/dma_heap/system-dma32
    chown system system /dev/dma_heap/system-dma32
    chmod 0444 /dev/dma_heap/system-uncached
    chown system system /dev/dma_heap/system-uncached
    chmod 0444 /dev/dma_heap/system-uncached-dma32
    chown system system /dev/dma_heap/system-uncached-dma32
    
    # disable codec2 by default, DMA Heap required
    setprop debug.stagefright.ccodec 4

搞定之后禁掉redroid的omx…… 好累,不想写了 可能还有什么遗漏,看日志排错吧,我这一时半会也想不起来了。
之后就可以添加别的东西了,比如说安全显示器啊,虚假WiFi啊之类的,参考我博客文章就可以了。

编译

懒得说,参考博客文章吧,累了。
lunch redroid_arm64-user就构建出user镜像了,redroid_arm64-userdebug就是userdebug镜像,按需来。
如果你要构建user镜像的话,adb不会自启,而且会默认开启验证。打开adb自启:

PRODUCT_PRODUCT_PROPERTIES += \
    persist.sys.usb.config=adb \

然后,adb那里面做个判断,如果/data/misc/adb/adb_temp_keys文件不存在,就不打开验证。代码很简单,自己去改吧。
个人博客: cnflysky.com,欢迎访问。

### RK3588适配Apollo平台的方法 对于RK3588适配Apollo平台,由于RK3588具备强大的计算能力和丰富的接口资源,使其成为自动驾驶领域的一个理想选择。然而,在具体实现过程中需要注意几个方面。 #### 1. 硬件准备 确保拥有RK3588开发板及其配套外设,如摄像头模块、激光雷达等传感器设备。这些硬件组件的选择直接影响到后续软件调试的效果[^1]。 #### 2. 操作系统安装 针对RK3588的特点,建议采用Linux操作系统作为基础运行环境。考虑到性能需求以及与Apollo框架的良好兼容性,推荐使用Ubuntu LTS本。通过官方提供的镜像文件完成初始系统的刷写工作之后,还需进一步配置内核参数以满足特定应用场景下的实时性和稳定性要求。 #### 3. 驱动程序编写 为了使Apollo能够充分利用RK3588的各项特性,需要为其定制化编译一系列必要的驱动程序。这其中包括但不限于GPU加速库、视频解码器以及其他专用协处理器的支持。这部分工作往往涉及到对芯片组内部架构较为深入的理解和技术积累,可能需要参考瑞芯微电子发布的文档资料来进行针对性开发。 #### 4. Apollo源码移植 获取最新的Apollo开源项目后,按照官方指南逐步调整CMakeLists.txt等相关构建脚本中的路径设置项,确保所有依赖关系都能被正确解析。特别注意的是,某些预定义宏定义可能会因为目标平台差异而引起冲突,因此要仔细对比分析并作出适当修改[^2]。 ```bash git clone https://github.com/ApolloAuto/apollo.git cd apollo ./scripts/bootstrap.sh ``` #### 5. 测试验证 经过上述准备工作完成后,就可以尝试启动模拟驾驶场景来检验整个集成方案的有效性了。在此期间如果遇到任何异常情况,则应回溯至上一步骤重新审视是否存在遗漏之处直至最终达到预期效果为止[^3]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值