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.

OMAP4460 Camera configuration/driver



Hello,

I am developing using a DART-4460 module from Variscite, running Ubuntu Precise.  Ultimately, I need to produce a driver for a CPI camera, although the first step is to gain familiarity with the OMAP4460 and image capture - for this I would like to make use of the pattern generator to allow me to bypass the hardware and focus on ensuring the image processing pipeline is in place.

In trying to figure this out, I believe I am not understanding how the ISS (Imaging subsystem), the ARM co-processor (ducati?) and Linux should interact.  For example, how/where should the ISS/ISP be configured in Linux? Is the co-processor required for image capture, or is it simply an optional extra for advanced operations?

Any help, advice or useful documents would be greatly appreciated!

Regards,

Elliott Colley

  • Hello Elliott,

    In trying to figure this out, I believe I am not understanding how the ISS (Imaging subsystem), the ARM co-processor (ducati?) and Linux should interact.  For example, how/where should the ISS/ISP be configured in Linux? Is the co-processor required for image capture, or is it simply an optional extra for advanced operations?


    Ducati Sub System comprises of two Cortex-M3 processors (CPUs), IVA-HD subsystem and ISS subsystem. The two Cortex-M3 processors are known as Sys M3 and App M3 and they comprise the MPU of Ducati Subsystem. Figure below shows a simplified block diagram of Ducati subsystem, with arrows indicating the software flow.

    • Dual Core Cortex-A9 MPU is the OMAP4 Host Processor running a High Level Operating System (HLOS) such as Linux or Android in Symmetric Multi Processing (SMP) mode. It uses the Ducati Sub System for video and image acceleration.
    • One of the 2 Cortex-M3 processors (Sys M3) runs the Notify Driver which accepts commands from the HLOS software and then provides these to the other Cortex-M3 processor (App M3).
    • The entire Ducati multimedia software executes on App M3. OMX components on App M3 invoke the necessary APIs for video or image processing on IVA-HD subsystem or ISS subsystem.
    • On the reverse path, App M3 can directly acknowledge the Dual Core Cortex-A9 MPU.
    • BIOS 6.x runs on both Cortex-M3 MPUs in non-SMP mode.

    For more details take a look on the wiki - http://omappedia.org/wiki/Ducati_For_Dummies

    git.ti.com/.../README

    Best regards,

    Yanko

  • Thank you for the information - I believe I am starting to get a reasonably clear understanding of the architecture.

    My understanding is that the data pipeline is:
    Linux User Space (my application)
    |
    OpenMAX (API providing standard functions for gathering/processing image/video data)
    |
    DCE (Interface for HW acceleration)
    |
    RPMsg (Communication interface between A9 and M3 processors)
    |
    Cortex M3 Sys (Handles command, passes onto Cortex M3 App
    |
    CortexM3 App (Configures/controls ISS, performs codec operations
    |
    ISS (Camera peripheral/hardware interface)

    Therefore, in the simplest sense, I would use OpenMAX and all camera configuration/capture/encoding/decoding should be taken care of for me by the various components listed above?

    As I have found no reference to the CPI camera interface, would I be correct in assuming that this is not supported by Ducati, and this code would need to be modified in order to use the interface?

    Regards,
    Elliott Colley
  • Hello Elliott, 

    Therefore, in the simplest sense, I would use OpenMAX and all camera configuration/capture/encoding/decoding should be taken care of for me by the various components listed above?

    - Yes, you are correct. Interface Guide, accompanying each Ducati OpenMAX™ component, provides all information that a Cortex A9 developer needs to have inorder to integrate the given Ducati OpenMAX™ component into the HLOS MM framework.

    Please see the wiki to obtain more information for OpenMax -http://processors.wiki.ti.com/index.php/OpenMax_Development_Guide

    e2e.ti.com/.../273489

    As I have found no reference to the CPI camera interface, would I be correct in assuming that this is not supported by Ducati, and this code would need to be modified in order to use the interface?

    -  The imaging subsystem (ISS) deals with the processing of the pixel data coming from an external image sensor. The ISS is mainly composed of CCP2 and CSI2-A, CSI2-B camera interfaces, a parallel interface (CPI). Parallel interface (CPI) (16 bit wide, with up to 148.5 MPix/s throughput, and supporting BT656 SYNC modes). 

    The CPI interface in OMAP4 belongs to Ducati Imaging Sub System (ISS). Therefore you must use ISS drivers. Please, read more about ISS in OMAP4 TRM book.

    Please take a look on the threads:

    https://e2e.ti.com/support/omap/f/849/t/363618

    https://e2e.ti.com/support/omap/f/849/p/180242/842713

    Best regards,

    Yanko

  • Cheers for the further info.  I have spent the last few days getting a better understanding of GStreamer, OpenMAX and the operation of the ISS/Ducati.  Following this I got the impression that something was missing - based on one of the links you posted I looked up the OMAP4 ISS/CSI2 driver by Sergio Aguirre, which is part of the latest Linux build.  As I have been using Linux kernel 3.10 (which does not include the ISS driver), I believe this has been a missing piece of the puzzle for me.

    We are now going to try and upgrade to a newer version - 3.14 where the ISS driver first appears, later on we may upgrade further if required.  Once this is done I will look through the ISS/CSI2 drivers to further understand their implementation.

  • Hello Elliott,

    "As I have been using Linux kernel 3.10 (which does not include the ISS driver), I believe this has been a missing piece of the puzzle for me."

    Yes, your understanding is correct. I point you that OMAP4 devices use Kernel 3.4, it is official supported by TI.

    Unfortunately, Ducati (ISS/CSI2) drivers source files are not available in Linux kernel. You can use only the available binary files - omappedia.org/.../Ducati_For_Dummies To obtain these source files you must have NDA agreement with TI.

    Please contact your TI's FAE or sales representative. 

    For more information see this thread - https://e2e.ti.com/support/embedded/linux/f/354/p/437647/1622069#1622069

    Best regards,

    Yanko