Recently, we had some queries on how to program the OMAP 35x ISP in Windows CE for a sensor that doesn’t have the ISP inside it. As we know that when there is an ISP inside the camera, we should not use the OMAP 35x’s ISP features and just use the OMAP processor’s camera pipeline to transfer images to the memory.
For more information on OMAP 35x camera driver interface, please see Omap-35x-camera Blog. This blog is more about how to use some of the OMAP 35x ISP’s features to obtain the best performance. This is particularly useful for sensors like OV5630, OV2710 etc.
I will give the overview on the basic register configuration for capturing data from BAYER RAW sensor without using any of Image processing functionalities.
Following are the register you may need to configure for capturing Bayer RAW data from the sensor.
Camera ISP registers:
For programming interrupt for the End of Frame capture, SYNC and HSYNC detect, PREVIEW done interrupt, RESIZER done interrupt etc. Using ISP registers you would be able control the power state of whole camera ISP
This unit is responsible for capturing both RAW and YUV data from the sensor.
You may need to program the parameters like Polarity of the VSYNC and HSYNC signals, output format of the sensor (YUV or RAW), Number of Pixels per line, number of lines per frame, number of start line for valid frame, start of valid pixel in each line, number of data bits to sample from the sensor, Bits per pixel, whether output is written to memory or PREVIEW engine. There is also option to pass CCDC output to RESIZER module bypassing PREVIEW, but this configuration is only work for YUV sensors (RESIZER can only work with YUV data).
This unit is responsible for doing Color space conversion (Bayer RAW–>YUV), Color Correction (color spectrum of the sensor can be adjusted to the human color spectrum), Gamma Correction, luminance enhancement etc.
You may need to program the parameters like input width and height of the frame to the PREVIEW engine,RGB to YUV conversion coefficients, output data to memory, output data to RESIZER module ,input is from memory or CCDC module, one shot or continuous,YUV data format on the memory, etc.,
This unit is straightforward Upsampling and downsampling unit. You may need to program the parameters like input frame width and height, input frame memory address if input is selected as one shot, output frame width and height, output frame memory address, resizing coefficients etc.
Both PREVIEW and RESIZER unit is capable of getting input from the CCDC as well as from memory.
OMAP35x Camera ISP has internal MMU. If it is enabled then you may need to use virtual address of the image buffer to output data from above units. If MMU is not enabled means then you need to use physical address of the image buffer for programming the output address in the above engines.
For the best quality of the image you may need to make use of all the image processing functionality.
Prabu is the Chief Technology Officer and Head of Camera Products at e-con Systems, and comes with a rich experience of more than 15 years in the embedded vision space. He brings to the table a deep knowledge in USB cameras, embedded vision cameras, vision algorithms and FPGAs. He has built 50+ camera solutions spanning various domains such as medical, industrial, agriculture, retail, biometrics, and more. He also comes with expertise in device driver development and BSP development. Currently, Prabu’s focus is to build smart camera solutions that power new age AI based applications.