20260116让天启AIO-3576Q38开发板在天启Android14下适配摄像头模块8ms1m为8M拍照
2026/1/15 18:04


缘起:给飞凌OK3588-C开发板适配Rockchip原厂的Android14后,需要适配CAM3接口的摄像头OV5645。
给飞凌OK3588-C开发板适配Rockchip原厂的Android14后,需要适配CTP触摸屏FT5X06。

当你把荣品RD-RK3588开发板重新适配一把,就相当于从头做了一个项目:【荣品RD-RK3588开发板】。
当然,开发板的功能都是好的,你免除了调试的过程,也就没有解决相关硬件出错的经验/机会了!


https://wiki.t-firefly.com/CAM-8MS1M/cam-8ms1m.html
800W单目摄像头
YUV的话,我们适配的只有这个


开发板收到。今天 要进行全接口功能测试。请提供 测试 步骤?
请提供 icore-3576JQ38开发板的 全套SDK(Andorid14/Buildroot Linux-6.1内核?)?

链接: https://pan.baidu.com-s/1ixM4N83KRiArLLKPkgCyVg
提取码: 1234


收到。应该 3576的 buildroot。

Android14也发一下。方便我司比对。

还有就是  预编译 固件 等相关资料也发一下
【全套的相关资料都发一下。我一次性搞定!】

麻烦看下客户要的资料,这边出差了
Baidu Drive: 链接:https://pan.baidu.com-s/1G9o8UTuO3Zkyq7YW4452_w?pwd=1234 PASSWD:1234

再更新bundle后选中rk3576_firefly_aio_3576q38-userdebug后编译

我在官网看了一下。没有 看到 Buildroot/Linux的预编译固件呀?

https://wiki.t-firefly.com/zh_CN/AIO-3576Q38/linux_compile.html
1.3.2. 编译前配置


https://www.t-firefly.com/doc/download/293.html
AIO-3576Q

https://www.t-firefly.com/doc/download/327.html
ICORE-3576Q38


https://www.t-firefly.com/doc/download/320.html#other_825
需要把bundle也下载更新


一、天启AIO-3576Q38开发板在天启Android14下是不能启动的,刷机就进入MASKROM模式。
更新为天启的buildroot的rkbin目录即可!【整体替换】


二、天启AIO-3576Q38开发板在天启Buildroot下无法打开摄像头模块8ms1m
1、将摄像头 接入 哪一个接口?CSI1/2 还是CSI3/4
还是都可以?

2、SDK中的DTS需要 改不?默认 有加入 摄像头吗??@梁凯迪


默认有加的
CSI3/4不能用
其他都可以


已经 接到CSI1/2了。

按个试一下 /dev/video节点。都不能显示呀!

Microsoft Windows [版本 10.0.19045.6466]
(c) Microsoft Corporation。保留所有权利。

C:\Users\QQ>adb shell
* daemon not running; starting now at tcp:5037
* daemon started successfully
root@rk3576-buildroot:/# v4l2-ctl --list-devices
rkisp-statistics (platform: rkisp):
        /dev/video28
        /dev/video29

rkcif-mipi-lvds (platform:rkcif-mipi-lvds):
        /dev/media0

rkcif-mipi-lvds1 (platform:rkcif-mipi-lvds1):
        /dev/media1

rkisp_mainpath (platform:rkisp-vir1):
        /dev/video22
        /dev/video23
        /dev/video24
        /dev/video25
        /dev/video26
        /dev/video27
        /dev/video30
        /dev/media2

rkvpss_scale0 (platform:rkvpss-vir1):
        /dev/video32
        /dev/video33
        /dev/video34
        /dev/video35
        /dev/media3

Failed to open /dev/video0: No such device
root@rk3576-buildroot:/#

<!-- ******************PSL specific section end **************************************************************-->
    </Profiles>
    <Profiles cameraId="0" name="xc7160" moduleId="m00">
        <Supported_hardware>
            <hwType value="SUPPORTED_HW_RKISP1"/>
        </Supported_hardware>

        <Android_metadata> <!-- Android static metadata only -->
            <!-- Color Correction -->
            <colorCorrection.availableAberrationModes value="OFF"/>
            <!-- Control -->
            <control.availableModes value="AUTO"/>
            <control.aeAvailableAntibandingModes value="OFF,50HZ,60Hz,AUTO"/>
            <control.aeAvailableModes value="ON,OFF"/>
            <control.aeLockAvailable value="FALSE"/>
            <!-- <control.aeAvailableTargetFpsRanges value="15,30,30,30,60,60"/> -->
            <control.aeAvailableTargetFpsRanges value="15,30,30,30,60,60"/>
            <control.aeCompensationRange value="-6,6"/>
            <control.aeCompensationStep value="1,3"/>
            <control.afAvailableModes value="OFF,AUTO,MACRO,CONTINUOUS_VIDEO,CONTINUOUS_PICTURE,EDOF"/>
            <control.availableEffects value="OFF"/>
            <!-- <control.awbAvailableModes value="AUTO"/> -->
            <control.awbAvailableModes value="AUTO,INCANDESCENT,FLUORESCENT,DAYLIGHT,CLOUDY_DAYLIGHT"/>
            <control.awbLockAvailable value="true"/>
            <control.availableSceneModes value="DISABLED"/>
            <control.availableVideoStabilizationModes value="OFF"/>
            <control.maxRegions value="1,0,1"/>
            <!-- JPEG -->
            <jpeg.maxSize value="19267584"/>  <!-- 2688*1520*1.5 -->
            <jpeg.availableThumbnailSizes value="0,0,160,120,320,180,320,240"/> <!-- INCREASING ORDER -->
            <!-- Lens Info-->
            <!-- TODO: availableApertures now is fake for we do not get the real apertures -->
            <lens.info.availableApertures value="2.0"/> <!-- HAL may override this value from CMC for RAW sensors -->
            <lens.info.availableFocalLengths value="70"/> <!-- HAL may override this value from CMC for RAW sensors -->
            <lens.info.availableOpticalStabilization value="OFF"/> <!-- OPTIONS: OFF, ON -->
            <lens.info.hyperfocalDistance value="0.0"/> <!-- HAL may override this value from CMC for RAW sensors -->
            <lens.info.minimumFocusDistance value="0.1"/> <!-- HAL may override this value from CMC for RAW sensors -->
            <!-- Lens -->
            <lens.facing value="BACK"/>
            <!-- Request -->
            <request.maxNumOutputStreams value="1,2,1"/>
            <request.pipelineMaxDepth value="4"/>
            <request.maxNumInputStreams value="0"/>
            <request.partialResultCount value="1"/>
            <!-- <request.availableCapabilities value="BACKWARD_COMPATIBLE,YUV_REPROCESSING,PRIVATE_REPROCESSING"/> -->
            <request.availableCapabilities value="BACKWARD_COMPATIBLE"/>
            <request.availableRequestKeys value="blackLevel.lock,
                colorCorrection.aberrationMode,
                colorCorrection.gains,
                colorCorrection.transform,
                control.aeAntibandingMode,
                control.aeExposureCompensation,
                control.aeLock,
                control.aeMode,
                control.aeTargetFpsRange,
                control.aePrecaptureTrigger,
                control.afMode,
                control.aeRegions,
                control.afRegions,
                control.afTrigger,
                control.awbLock,
                control.awbMode,
                control.captureIntent,
                control.effectMode,
                control.mode,
                control.sceneMode,
                control.videoStabilizationMode,
                edge.mode,
                flash.mode,
                jpeg.gpsLocation,
                jpeg.orientation,
                jpeg.quality,
                jpeg.thumbnailQuality,
                jpeg.thumbnailSize,
                lens.aperture,
                lens.focalLength,
                lens.opticalStabilizationMode,
                noiseReduction.mode,
                scaler.cropRegion,
                statistics.faceDetectMode,
                statistics.hotPixelMapMode,
                statistics.sceneFlicker,
                statistics.lensShadingMapMode
                "/>

            <request.availableResultKeys value="colorCorrection.mode,
                colorCorrection.transform,
                colorCorrection.gains,
                colorCorrection.aberrationCorrectionMode,
                control.aeAntibandingMode,
                control.aeExposureCompensation,
                control.aeLock,
                control.aeMode,
                control.aeTargetFpsRange,
                control.aePrecaptureTrigger,
                control.afMode,
                control.aeRegions,
                control.afRegions,
                control.afTrigger,
                control.awbLock,
                control.awbMode,
                control.captureIntent,
                control.effectMode,
                control.mode,
                control.sceneMode,
                control.videoStabilizationMode,
                control.aeState,
                control.afState,
                control.awbState,
                sync.frameNumber,
                edge.mode,
                flash.mode,
                jpeg.gpsLocation,
                jpeg.orientation,
                jpeg.quality,
                jpeg.thumbnailQuality,
                jpeg.thumbnailSize,
                lens.focalLength,
                lens.aperture,
                lens.opticalStabilizationMode,
                request.pipelineDepth,
                scaler.cropRegion,
                sensor.testPatternData,
                sensor.testPatternMode,
                sensor.timestamp,
                sensor.rollingShutterSkew,
                statistics.faceDetectMode,
                statistics.hotPixelMapMode,
                statistics.faces,
                noiseReduction.mode,
                statistics.sceneFlicker,
                statistics.lensShadingMapMode
                "/>
            <request.availableCharacteristicsKeys value="0"/>
            <!-- Scaler -->
            <scaler.availableMaxDigitalZoom value="4.0"/>
            <scaler.availableInputOutputFormatsMap value="IMPLEMENTATION_DEFINED,2,YCbCr_420_888,BLOB,YCbCr_420_888,2,YCbCr_420_888,BLOB"/>
            <scaler.availableStreamConfigurations value="
                BLOB,3840x2160,OUTPUT,
                BLOB,1920x1080,OUTPUT,
                BLOB,1280x960,OUTPUT,
                BLOB,1280x720,OUTPUT,
                BLOB,640x480,OUTPUT,
                BLOB,320x240,OUTPUT,
                BLOB,176x144,OUTPUT,
                YCbCr_420_888,3840x2160,OUTPUT,
                YCbCr_420_888,1920x1080,OUTPUT,
                YCbCr_420_888,1280x960,OUTPUT,
                YCbCr_420_888,1280x720,OUTPUT,
                YCbCr_420_888,640x480,OUTPUT,
                YCbCr_420_888,320x240,OUTPUT,
                YCbCr_420_888,176x144,OUTPUT,
                IMPLEMENTATION_DEFINED,3840x2160,OUTPUT,
                IMPLEMENTATION_DEFINED,1920x1080,OUTPUT,
                IMPLEMENTATION_DEFINED,1280x960,OUTPUT,
                IMPLEMENTATION_DEFINED,1280x720,OUTPUT,
                IMPLEMENTATION_DEFINED,640x480,OUTPUT,
                IMPLEMENTATION_DEFINED,320x240,OUTPUT,
                IMPLEMENTATION_DEFINED,176x144,OUTPUT"/>
            <scaler.availableMinFrameDurations value="
                BLOB,3840x2160,33333333,
                BLOB,1920x1080,16666667,
                BLOB,1280x960,33333333,
                BLOB,1280x720,33333333,
                BLOB,640x480,33333333,
                BLOB,320x240,33333333,
                BLOB,176x144,33333333,
                YCbCr_420_888,3840x2160,33333333,
                YCbCr_420_888,1920x1080,16666667,
                YCbCr_420_888,1280x960,33333333,
                YCbCr_420_888,1280x720,33333333,
                YCbCr_420_888,640x480,33333333,
                YCbCr_420_888,320x240,33333333,
                YCbCr_420_888,176x144,33333333,
        IMPLEMENTATION_DEFINED,3840x2160,33333333,
                IMPLEMENTATION_DEFINED,1920x1080,16666667,
                IMPLEMENTATION_DEFINED,1280x960,33333333,
                IMPLEMENTATION_DEFINED,1280x720,33333333,
                IMPLEMENTATION_DEFINED,640x480,33333333,
                IMPLEMENTATION_DEFINED,320x240,33333333,
                IMPLEMENTATION_DEFINED,176x144,33333333" />
            <scaler.availableStallDurations value="
                                                   BLOB,3840x2160,33333333,
                                                   BLOB,1920x1080,16666667,
                                                   BLOB,1280x960,33333333,
                                                   BLOB,1280x720,33333333,
                                                   BLOB,640x480,33333333,
                                                   BLOB,320x240,33333333,
                                                   BLOB,176x144,33333333" />
            <scaler.croppingType value="CENTER_ONLY"/>
            <!-- Sensor Info -->
            <sensor.info.activeArraySize value="0,0,3840,2160"/>
            <sensor.info.sensitivityRange value="32,2400"/>
            <sensor.info.colorFilterArrangement value="BGGR"/> <!-- HAL may override this value from CMC for RAW sensors -->
            <sensor.info.exposureTimeRange value="100000,15000000"/>
            <sensor.info.maxFrameDuration value="66666666"/>
            <sensor.info.physicalSize value="5.5,4.5"/> <!-- 4224x1.12um 3136x1.12um -->
            <sensor.info.pixelArraySize value="3840x2160"/>
            <sensor.info.whiteLevel value="0"/> <!-- HAL may override this value from CMC for RAW sensors -->
            <sensor.info.timestampSource value="UNKNOWN"/>
            <!-- Sensor -->
            <sensor.baseGainFactor value="0,1"/> <!-- HAL may override this value from CMC for RAW sensors -->
            <sensor.blackLevelPattern value="0,0,0,0"/>
            <sensor.maxAnalogSensitivity value="2400"/> <!-- HAL may override this value from CMC for RAW sensors -->
            <sensor.orientation value="0"/>
            <sensor.profileHueSatMapDimensions value="0,0,0"/>
            <sensor.availableTestPatternModes value="OFF,COLOR_BARS"/>
            <!-- Info -->
            <info.supportedHardwareLevel value="LIMITED"/>
            <!-- shading -->
            <!-- <shading.availableModes value="OFF"/> -->
            <!-- Statistics Info -->
            <statistics.info.availableFaceDetectModes value="OFF"/>
            <statistics.info.histogramBucketCount value="0"/>
            <statistics.info.maxFaceCount value="0"/>
            <statistics.info.availableHotPixelMapModes value="OFF"/>
            <statistics.info.availableLensShadingMapModes value="OFF"/>
            <!-- Flash -->
            <flash.colorTemperature value="0"/>
            <flash.maxEnergy value="0"/>
            <!-- Flash info -->
            <flash.info.available value="FALSE"/>
            <flash.info.chargeDuration value="1000000"/>
            <flash.maxEnergy value="10"/>
            <!-- Sync -->
            <sync.maxLatency value="PER_FRAME_CONTROL"/>
            <!-- maxCaptureStall -->
            <reprocess.maxCaptureStall value="4"/>
            <!-- Edge -->
            <edge.availableEdgeModes value="OFF,FAST,HIGH_QUALITY"/>
            <!-- Noise Reduction -->
            <noiseReduction.availableNoiseReductionModes value="OFF,FAST,HIGH_QUALITY"/>

        </Android_metadata>

<!-- ******************PSL specific section start **************************************************************-->
        <Hal_tuning_RKISP1> <!-- Parameters to tune the HAL and hacks for the HAL that are camera dependent -->
            <flipping value="" value_v=""/> <!-- value: SENSOR_FLIP_H or "", value_v: SENSOR_FLIP_V or "" -->
            <supportIsoMap value="false"/>
            <supportTuningSize value="3840x2160,1920x1080"/>
        </Hal_tuning_RKISP1>

        <Sensor_info_RKISP1> <!-- Information that parametrizes the behavior or qualities of the physical sensor -->
            <sensorType value="SENSOR_TYPE_SOC"/> <!-- SENSOR_TYPE_SOC or SENSOR_TYPE_RAW -->
            <exposure.sync value="true"/> <!-- compensate expsure sync-->
            <sensor.digitalGain value="false"/> <!-- digital gain support on sensor-->
            <gain.lag value="2"/> <!-- camera3 HAL CPF parameters moved here start-->
            <exposure.lag value="2"/>
            <fov value= "54.8" value_v="42.5"/>
            <statistics.initialSkip value="1"/> <!-- camera3 HAL CPF parameters moved here end-->
            <frame.initialSkip value="3"/> <!-- should equal actual skipFrames - 2 for driver dropped 2 frames -->
            <isoAnalogGain1 value="75"/> <!--Pseudo ISO corresponding analog gain value 1.0. -->
            <cITMaxMargin value="10"/> <!--coarse integration time max margin -->
            <aiq.workingMode value="NORMAL"/> <!-- NORMAL or HDR2 or HDR3 -->
        </Sensor_info_RKISP1>
 


三、天启AIO-3576Q38开发板在天启Android14下测试摄像头模块8ms1m拍照默认为2M,录像为480p
刷机了 你们提供的Android14,我默认编译的固件 摄像头可以亮。
拍照分辨率 最大8M?
录像 分辨率?最大4K。
请帮忙修改一下!


固件没上传最新的.
默认摄像头8MS1M拍照是200w像素


Android14/Buildroot的测试 固件都给一下!
我看这个 摄像头 最大分辨率?8M,请将 拍照录像 都改一下为8M,并提供方法!


四、【重新/更新编译Android14】让天启AIO-3576Q38开发板在天启Android14下适配摄像头模块8ms1m为8M拍照
改下hardware/rockchip/camera/etc/camera/camera3_profiles_rk3576.xml
xc7160里面的scaler.availableStreamConfigurations
scaler.availableMinFrameDurations
scaler.availableStallDurations
sensor.info.activeArraySize , 改成3840x2160


替换Android系统里的/vendor/etc/camera/camera3_profiles.xml
【感觉通过adb推进不行,更新编译之后有用!】


https://wiki.t-firefly.com/zh_CN/AIO-3576Q38/android_compile_android14.0_firmware.html
3.2.2. 分步编译
编译 kernel:

cd ~/proj/RK3576_Android14.0/kernel-6.1
export PATH=../prebuilts/clang/host/linux-x86/clang-r487747c/bin:$PATH
alias msk='make CROSS_COMPILE=aarch64-linux-gnu- LLVM=1 LLVM_IAS=1'
msk ARCH=arm64 firefly_defconfig android-14.config rk3576.config
msk ARCH=arm64 BOOT_IMG=../rockdev/Image-rk3576_firefly_aio_3576q38/boot.img rk3576-firefly-aio-3576q38.img -j8
编译 uboot:

cd ~/proj/RK3576_Android14.0/u-boot/
make rk3576_defconfig
./make.sh --spl-new
编译 Android:

cd ~/proj/RK3576_Android14.0/
source build/envsetup.sh
lunch rk3576_firefly_aio_3576q38-userdebug
make installclean
make -j8
./mkimage.sh
3.2.3. 打包成统一固件 update.img
编译完可以用Firefly官方的脚本打包成统一固件,执行如下命令:

./FFTools/mkupdate/mkupdate.sh -l rk3576_firefly_aio_3576q38-userdebug
打包完成后将在rockdev/Image-rk3576_firefly_aio_3576q38/ 目录下生成统一固件: product名XXX_XXX_日期XXX.img

在 Windows 下打包统一固件 update.img 也很简单,将编译生成的文件拷贝到 AndroidTool 的 rockdev\Image 目录中,然后运行 rockdev 目录下的 mkupdate.bat 批处理文件即可创建 update.img 并存放到 rockdev\Image 目录里。


五、拍照8M分辨率的效果图:

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐