Reading AR0231 registers through nvmedia IPP

I am able to read the registers from a Sekonix SF3325-100 (AR0231) on a Drive AGX board by parsing the metadata in the NvMediaIPPComponentOutput object. However, I can only read registers 0x2000 through 0x3368. All other registers from 0x3370 onwards don’t exist in the metadata object.

Is there a setting blocking these registers? Or how else can I read them? There is very important sensor information stored there that we require to read.

Dear william,
Are you using Drive Software 9.0?

Hi, yes, this happens with the latest 9.0 release.

I checked some of the nvmedia samples, for example nvmimg_cc (this one uses ICP directly to capture, but not an IPP pipeline). This sample outputs the full raw frame including the embedded lines, and here I can see all the registers just fine, including the missing ones I mentioned.

So this confirms that the camera does indeed output this register information, but once it gets processed by the IPP stack, it seems to get truncated somehow. If I had to guess, there might be a problem when IPP reads/parses these embedded lines to create the metadata buffers it exposes (as they get transformed somehow, they’re not an exact copy of the embedded line data).

Dear william_algolux,

Did you build on PDK?
If you can build then the rest of registers can be stored in metadata.
The below code is an example to increase the number of embedded data to be parsed.

diff --git a/nvmedia/ext_dev_prgm/drv/isc_ar0231_rccb.c b/nvmedia/ext_dev_prgm/drv/isc_ar0231_rccb.c
index 0049f7e..ee05a60 100644
--- a/nvmedia/ext_dev_prgm/drv/isc_ar0231_rccb.c
+++ b/nvmedia/ext_dev_prgm/drv/isc_ar0231_rccb.c
@@ -1930,7 +1930,7 @@ ParseEmbeddedData(
         dst = (uint8_t*)parsedInformation->;
         sensorVer = driverHandle->config_info.sensorVersion;
         // total buffer size: lineLength[0] = ACTIVE_H * 32; only extract used data bytes
-        for(i = 0; i < (float_t)(EMB_OFFSET_AGAIN(sensorVer, active_hts) * 4 + 20); i += stride) {
+        <b>for(i = 0; i < (float_t)(EMB_OFFSET_AGAIN(sensorVer, active_hts) * 4 + 20 + 400); i += stride) {</b>

             *dst++  = (*((uint16_t*)(lineData[0] + i))) >> shift; // skip tag byte
     } else {

Hi Steve,

I can’t build for the AGX as “isc_ar0231_rccb.c” is not included in the Drive OS 9.0 SDK. The directory ext_dev_prgm exists in the nvmedia samples, but no source code is inside.

However, I was able to find the file on the older SDK for the PX2, and your patch worked perfectly well with that board. I just had to extend that “400” offset in the patch all the way up to “2536” to cover all the missing registers, but that did it, now we can read everything we need from the camera’s sensor. Thank you!

Any chance the source code for the AGX becomes available so I can apply this patch there also?

@SteveNV : Hi again, I’m just checking if there might be any update to this issue for the Drive AGX.

As mentioned in my last message, I was able to use your patch to fix the problem on the older PX2 platform, but I do not have the necessary source code file to do the same for the AGX platform, and this is causing some difficulties for us. Any further help on this matter would be appreciated. Thank you.

Dear william_algolux,

Could you please ask ON Semi the ISC driver source+turing binaries and place this on top of our SDK?
And new Drive Software will be updated soon.
The SIPL section also has an update, so please refer to it. Thanks.