CX3 Firmware: Frequently Asked Questions - KBA91297

Version 2

    Version: *B





    1. Question


      Where can I find the CX3 firmware source code for example projects?




      You can find the CX3 firmware example projects as part of the FX3 SDK 1.3.1 or later release. These projects are in the following folder when FX3 SDK is installed in the default path:
         C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\firmware\cx3_examples.


      These example firmware projects support OmniVision® OV5640 and Aptina® AS0260 image sensors. Contact the respective image sensor manufacturers to get access to image sensor datasheet, register description, and configuration data.

    2. Question


      What are the color formats supported by CX3?




      CX3 can support all the image data formats supported by Mobile Industry Processor Interface (MIPI) Camera Serial Interface (CSI)-2 specifications that is up to 24-bit wide. For example, the RAW, YUV and RGB data formats are supported. For a custom format stream like JPEG, NV12, etc., 16-bit wide streams can be transported on the 16-bit format and 24-bit streams can be transported by treating them as a RGB888 format.

    3. Question


      Can CX3 convert RAW images to RGB or YUV formats?




      No. CX3 cannot do any image format conversion. To convert image formats, an Image Signal Processor (ISP) or FPGA is required. CX3 does not have a built-in ISP. You should use an external ISP to convert or compress image data.

    4. Question


      Can CX3 take audio inputs over the I2S port?




      CX3 does not have an I2S input port; however, it has a serial peripheral interface (SPI) master. Therefore, by using an external I2S-to-SPI bridge (for example, an FPGA), an audio input device that has an I2S port can be interfaced with CX3. CX3 also has an I2S output port to connect an audio output device with the I2S port.

    5. Question


      Does CX3 support boundary scan using the JTAG port?




      No. CX3 does not support the boundary scan feature using the JTAG port. Therefore, no boundary scan description language (BSDL) model files are available for CX3. The JTAG port is provided only for debugging the ARM® processor code in CX3. The JTAG port of CX3 should not be connected to the JTAG chain in your board.

    6. Question


      What is the maximum resolution supported by CX3?




      CX3 can support up to 2.4 Gbps (300 MBps) throughput.


      You should make sure that the throughput does not exceed 2.4 Gbps. The throughput can be determined by the formula given below.


      Image throughput = bits per pixel × (Horizontal resolution + Horizontal blanking) × (Vertical resolution + vertical blanking) × frames per second


      For example, some of the resolution, frame rate, and color formats supported by CX3 are given below:


      Contact Cypress technical support if you have more questions on color format and frame rate support.

      • 1920 × 1080 (FHD) , 30fps,60fps in YUV422 format
      • 1280 × 720p (HD), 60fps, 120fps in YUV422 format
      • 3840 × 2160 (uHD, 4k x 2k), 16fps in YUV422 format, 30fps in JPEG format with MJPEG 6:1 compression
      • 4096 × 2160 (4k native), 30fps in RAW8 format
      • 13MP , 10fps YUV422 format
      • 8MP, 16 fps YUV422 format
    7. Question


      How do I build the CX3 RDK firmware example project supplied with the FX3 SDK?



      1. Download the FX3 SDK 1.3.1 or later from the webpage for FX3 SDK ( and install it.
      2. Open the Eclipse-based editor (EZ-USB® Suite). Click Start > All Programs > Cypress > EZ-USB FX3 SDK > Eclipse > EZ USB Suite.
      3. When prompted, create a new workspace, and assign it a workspace name.
      4. Within Eclipse, import the SDK project for CX3 into the current workspace as follows:      
        1. Select File > Import.
        2. Select General > Existing Projects into Workspace and click Next.
        3. Set the Root Directory to the following values:          
          • On 32-bit Windows: C:\Program Files\Cypress\EZ-USB FX3 SDK\\firmware\cx3_examples
          • On 64-bit Windows: C:\Program Files(x86)\Cypress\EZ-USB FX3 SDK\\firmware\cx3_examples
        4. From the projects listed in the Projects list, select the cycx3_uvc_ov5640 project, and select the option “Copy projects into workspace”. The project will be copied into the workspace and available in Eclipse.
      5. Set the build mode for the project as Release.
      6. Build the project by selecting the arrow to the right of the Build icon (which looks like a hammer) in the toolbar and selecting Release.
            After the project is built, the img file for download to the CX3 RDK will be available in the Release folder in the project in the Project Explorer.
    8. Question


      How do I program the CX3 firmware image to the SPI or I2C Flash / EEPROM in CX3 RDK?




      See the CX3 RDK Quick Start Guide for the switch location. Refer to the CX3 RDK schematic for the switch settings.

      1. Set the Boot Mode selection switch SW5 (located between the Power switch and the Reset button) to USB Boot: This means that SW5.1 is ON, SW5.2 is ON, and SW5.3 is OFF.
      2. Open Control Center from All Programs > Cypress > Cypress USB Suite > Control Center (Please note that .NET framework 3.5 or above needs to be installed in the system. Otherwise control center utility may not work)
      3. Reset the CX3 RDK. It is listed in the Control Center window.
      4. Click Program > FX3, and then select the SPI Flash or I2C E2PROM option to download the firmware to the SPI Flash or I2C EEPROM on the RDK.
            A boot programmer firmware gets downloaded to the FX3 and it re-enumerates and opens a window allowing you to select the IMG file you want to download to the SPI Flash or I2C EEPROM.
      5. Browse to the location of the img file and select it. Once the FW img is downloaded, a message is displayed at the bottom of the Control Center tool indicating that the operation was successful.
      6. Set the Boot Mode Selection switch (SW5 as in step 1) to SPI Boot or I2C Boot based on to where you downloaded the FW      
        • For SPI Boot, set switches to 1 to ON, 2 to OFF, 3 to ON.
        • For I2C EEPROM boot set to 1 to OFF, 2 to ON, 3 to OFF.
      7. Reset CX3 to make it boot from the flash.
    9. Question


      What is the boot up time of CX3 when the firmware is stored in the SPI flash?




      The boot up time is approximately 115 ms when CX3 boots from the SPI flash.

    10. Question


      How do I stream a RAW format image using CX3?




      You can select the format as “RAW” (RAW8/RAW10/RAW12/RAW14) in the CX3 configuration tool and you can use the UVC player to display the RAW data in YUV format. However, the image will look green in color. This can be used for firmware development and testing.


      For final product, you will need to write your own viewer that does de-mosaicing (RAW to RGB conversion) of the Bayer stream and then display it.


      Depending on how you want to do this, you have a few options:


      Contact Cypress technical support to get an example firmware.

      1. Use UVC and write your own viewer on top of Microsoft's APIs. Here, you will transport a Bayer stream as a YUV/RGB stream.
      2. Use the Cypress driver (cyusb3.sys) and then write your viewer using the Cypress-provided APIs. This will need vendorspecific descriptors.
            Contact Cypress technical support to get an example firmware.
    11. Question


      Do you have an example project to stream the MJPEG video stream from image senor using CX3?




      Yes. The MJPEG example firmware is available as part of FX3 SDK. Once you install the FX3 SDK, you can find the example project at the following directory:

           If you are looking for a MJPEG firmware example with the OV5640 sensor, you should sign NDA with OmniVision and create a Technical Support case.
      • On 32-bit Windows: C:\Program Files Cypress\EZ-USB FX3 SDK\\firmware\uvc_examples
      • On 64-bit Windows: C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\\firmware\uvc_examples
    12. Question


      Can CX3 support standard and extended UVC video controls?




      YES. CX3 can support standard as well as extended UVC controls. For standard UVC video controls refer the CX3 RDK firmware. UVC Extension unit can be added in the CX3 Firmware to support extended UVC controls like getting Firmware version, Erasing flash, etc. A Host application is needed to communicate with the extension unit. Host application and the extension unit descriptor in the CX3 firmware should have a unique GUID.


      Contact Cypress technical support to get more details on the UVC extension unit.