This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

PROCESSOR-SDK-DRA8X-TDA4X: Enumerating Camera Sensors

Part Number: PROCESSOR-SDK-DRA8X-TDA4X

Hi,

I'm using the J7 EVM with the PSDKLA/PSDKRA. I was able to run successfully the single_camera out-of-the-box demo, and also connecting another sensor to native CSI interface (instead of the Fusion board), modify the driver and see the video on the monitor.

My questions are as follows:

1. How new camera sensors are enumerated? I saw that the manual defines the method which includes adding a folder, source code file and adding the new sensor in the concerto.mak file. Could you please point me to where in the code and explain how this is performed? All I see that this is performed via RPC command

2. When connecting multiple camera sensors - how does the system know which/how many/where the sensors are connected? How does the application handles the selection between them?

Thanks,

Matan

  • Hello Matan,

    The list of sensors gets created in function IssSensor_Init.  Every sensor driver is expected to provide an API like IssSensor_IMX390_Init where it binds to the framework using IssSensor_Register. The compiled list is saved locally. The application queries this list using the RPC command IM_SENSOR_CMD_ENUMERATE.

    The application code presents this list to the user as a menu, which is runtime created using the list of sensors. The user enters his selection and the application passes on the selection to the sensor driver framework using the RPC commands IM_SENSOR_CMD_QUERY, IM_SENSOR_CMD_CONFIG etc.

    When multiple cameras are connected, the application assumes that they are all identical. The only thing user can control is the number of cameras which is specified through a menu entry.

    Regards,

    Mayank 

  • Hi Mayank,

    Thank you for you answer.

    1. I can't find where in the source code the IssSensor_Init is called. Can you point me to the actual source code which checks which sensors were defined?

    2. Do you mean some kind of broadcast? When using the Fusion board, I saw that each sensor (along with its serializer) has it's own I2C addresses. Is it the deserializer configuration which CSI input to mux out to the SOC?

    Thanks,

    Matan

  • 1. I can't find where in the source code the IssSensor_Init is called. Can you point me to the actual source code which checks which sensors were defined?

    IssSensor_Init is called from appIssInit (vision_apps/utils/iss/src/app_iss.c)

    appIssInit is called from appInit(vision_apps/apps/basic_demos/app_tirtos/common/app_init.c)

    2. Do you mean some kind of broadcast? When using the Fusion board, I saw that each sensor (along with its serializer) has it's own I2C addresses. Is it the deserializer configuration which CSI input to mux out to the SOC?

    It can be broadcast or sequential programming of the sensors. There is a phyical I2C address which gets mapped to aliased addressed. Phy <->alias setup is done through deserializer configuration.

  • I added a debug print to the screen to detect entering this functions but I don't see it.

    And this is the output:

  • appInit is called from another process - vx_app_tirtos.out. This step has already happened before you run the camera app. That is why you don't see the log. Please capture the complete log from system bootup and then search for your debug prints.