TAG | Camera driver
25
OMAP 35x Camera ISP
2 Comments · Posted by Prabu Kumar - Microsoft Certified Technology Specialist in Windows CE
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
- ISP_SYSCONFIG
- ISP_CTRL
- ISP_IRQ0ENABLE
CCDC:
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).
- CCDC_PCR
- CCDC_SYN_MODE
- CCDC_PIX_LINES
- CCDC_HORZ_INFO
- CCDC_VERT_START
- CCDC_VERT_LINES
- CCDC_CFG
- CCDC_FMTCFG
- CCDC_HSIZE_OFF
- CCDC_VP_OUT
PREVIEW:
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.,
- PRV_PCR
- PRV_HORZ_INFO
- PRV_VERT_INFO
- PRV_CSC0
- PRV_CSC1
- PRV_CSC2
- PRV_DSDR_ADDR
RESIZER:
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.
- RSZ_PCR
- RSZ_OUT_SIZE
- RSZ_IN_START
- RSZ_IN_SIZE
- RSZ_SDR_INADD
- RSZ_SDR_INOFF
- RSZ_SDR_OUTADD
- RSZ_SDR_OUTOFF
Both PREVIEW and RESIZER unit is capable of getting input from the CCDC as well as from memory.
Note:
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.
To know more about OMAP35x Camera ISP, refer to the following documentation Texas Instruments – sprufa2b.pdf
Camera driver · Image Processing · OMAP 35x Camera · Windows CE · Windows Mobile camera
Texas instruments has recently announced the OMAP 35x processor series which has taken the market by storm. Many customers are getting interested in it because it supports
- The latest ARM Cortex A8 Superscalar core.
- Supports 2D graphics acceleration using PowerVR SGX OpenGL ES 2.0 compliant graphics accelerator. NEON SIMD Engine with fixed and floating point operations
- Supports DSP instructions – Powerful TMS320C64x DSP Core
- Supports ISP(Image signal processor) for cameras that might be of good use for processors that dont have an ISP inside.
- Input pixel clock of 130Mhz.
The support for ISP inside the camera is useful since when we design handhelds, the mechanicals of the camera modules becomes important. The ISP contains lot of stuff to fine tune the images, do auto focusing etc. The ISP from TI supports Histogram engine that can be used for Autofocus, Autoexposure and Autowhitebalance (3A). Any camera module these days come with a ISP inside and the mechanicals for the handheld are good enough to squeeze the ISP also inside the camera module as a single SOC.
OMAP Camera hardware software EVM kit
At resolutions like 5MP or 8MP, the camera modules that are available commercially do not support a ISP since it would be difficult to put the ISP and the 5MP frame in a small form factor. So, these high resolution camera modules have the ISP outside, at least during the initial pilot production. In fact I have seen some of the initial releases of the new sensors often have only Bayer RGB output that is fed to external ISP. It will be a matter of time when they are able to put the ISP in the same form factor but then market requirements would rise to may be 10MP! The demand for external ISP solutions would continue to exist. So, for those camera modules that don’t have a ISP inside, the TI OMAP processor’s ISP pipeline is very useful. It has got features like color correction, gamma correction, dead pixel correction, Sharpen filter, autofocus engine etc. All these are done through hardware.
Now, you might ask a question on whether this will slow down the processor since all these are inside the processor. Valid point. Since, these processors will be used in embedded systems and considering the typical use cases they are used for, this may not be an issue at all. At least it will be much faster than CPU doing these operations in software. When the image resolution increases, say at 5MP, we are talking about 5Mbytes of Bayer data, 10Mbytes of YUV422 data or 15Mbytes RGB888, which is really huge.
Ok, what does it offer for those camera modules that have a ISP inside it? The OMAP 35x processor has DSP capability and VFP which makes it ideal for image processing applications like name plate capture, digital microscopy, facial detection, pupillometer etc. There are MPEG4 and H.264 codecs that are available for C64X DSP (OMAP3530 has TMS320C64x DSP inside), offering complete encoding solution on a chip, in addition to normal embedded processing capabilities. Also, the OMAP 35x supports a pixel clock of 130Mhz with a 8 bit bus which would mean a bandwidth 1.04Gbps. This is somewhat unmatched by USB 2.0 or any standard that is available so far. Since this ties up with a ISP inside, if you are doing a design based on camera and there is good amount of image processing then IMHO, this is the processor of choice.
We recently announced camera support for TI OMAP 35xx EVM board with Windows CE 6.0 directshow drivers on it. We have supported some of the ISP features also in the driver.
Please see www.e-consystems.com/omap3530.asp for more information.


