Repository navigation
ambarella-osdrv-s3l: ship the DSP microcode from SDK 2.5.0_20181109 - #2782
Conversation
PR Summary by QodoPackage S3L DSP microcode from the Ambarella SDK
AI Description
Diagram
High-Level Assessment
Files changed (3)
|
Code Review by Qodo🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0)
Great, no issues found!Qodo reviewed your code and found no material issues that require reviewTip of the day💡 Did you know, you can hide the parts of a finding you never read, like the evidence or the agent prompt |
Without microcode the S3L DSP never starts, so s3l_lite gives no video. This adds the generic set (orccode.bin, orcme.bin, default_binary.bin) from Ambarella's S3L SDK release 2.5.0_20181109, version 2018/10/28 284712.282649, for load_ambarella to load from /lib/firmware. It comes from the SDK rather than a camera's stock firmware, which the tree does not accept, as decided in #2767.
e0123e4 to
04410e9
Compare
|
Ran it on the IP4M-1026E. 284712 boots from a real power-on, enters both DSP modes, and streams stream 0 with these modules. I found one difference from 267837, in the 3A statistics. It's below, and I'm treating it as a streamer issue, not a blocker for this PR. How it was run. Netbooted through the Dahua U-Boot's TFTP recovery, so the flash wasn't touched. The image is master From power-on:
It might be worth letting Stream 0, H.264 over RTSP from the same cold boot: A 6-second decode is clean, and the picture is properly exposed and in colour. I got the same results on two warm netboots. The one difference: 3A statistics right after preview starts. With 284712, the Not tested: 29.97 fps VIN, and the On #2767's merge condition, this is the hardware run for 284712. The fallback to 280077 shouldn't be needed. |
load_ambarella sent load_ucode's output to /dev/null, so nothing recorded which microcode a camera booted with. Cameras in the field run many builds of it, and reading the version back took a separate tool on the IP4M-1026E (#2782).
Problem
s3l_litehas no DSP microcode. The drivers load,load_ambarellalogsNo DSP microcode on this image, video will not start, and the DSP never starts. This is the delivery PR for #2767.It adds the
genericset from Ambarella's S3L SDK release2.5.0_20181109, version2018/10/28 284712.282649, toambarella-osdrv-s3l, installed to/lib/firmware:orccode.bind41b4a594930c4c957bb2fd7133428a0orcme.bin99bf6852883c8e8bfc86a15049565e5edefault_binary.binaca067f0c8043e7c8ecc1e6dbc79bd40This does not give video by itself. #2767 lists what else is needed.
Hardware tested on
Ambarella S3L, Amcrest IP4M-1026E, OV4689, run by @DeathCamel58, not by me: full output. From a real power-on, it reports
ucode version 2018/10/28 284712.282649, enters DSP modes 0 and 1 with the package's modules, and streams stream 0. That run used masterd86e9fc1with these three files, netbooted with an initramfs, the DTB from OpenIPC/linux#178 and a streamer that isn't upstream yet.Not tested: booting from flash, 29.97 fps VIN.
Evidence
The hardware output is in the comment linked above. The rest is from QEMU, on qemu-bench's
s3lmachine, with this branch's kernel, the realdsp.ko, and the rootfs unpacked into an initramfs. QEMU doesn't model the DSP, so this proves the files reach their slots and nothing about whether the DSP runs them.Before (files removed from this image):
After:
Image size, full
make BOARD=s3l_lite:S3L is in
UNBUILT_FAMILIES, so CI won't build this. Touching the package gives the 14-board smoke set, none of which is S3L.Scope
general/package/all-patches/linux/(those go to OpenIPC/linux)general/overlay/or in a sharedload_<vendor>script hardcodes a value specific to my boardLD_PRELOAD, and no binaries that cannot be rebuilt from source