In the context of the IoT, there are many applications that use machine vision to perform their functions. The range of applications is far-reaching—drones, surveillance cameras, autonomous moving robots and industrial robots are just some of the examples that utilize cameras.
Due to the heterogeneous nature of IoT applications, the range of features and performance needed in cameras is broad as well. This is in sharp contrast with consumer smartphones where a small number of models account for the vast majority of units in the market. Furthermore, in IoT, it is not uncommon to change image sensors during the product lifetime, for reasons such as dual sourcing and required product upgrades.
MIPI Camera Command Set Tools can help IoT product designers working in a wide range of applications overcome challenges particular to their segment.
The Foundation: MIPI Camera Command Set
The MIPI Camera Command Set (MIPI CCSSM) specification defines a standard control interface for raw image sensors compatible with MIPI Camera Serial Interface 2 (MIPI CSI-2®), one of the most widely used camera interfaces today. MIPI CCS supports basic image sensor features such as sensor identification, binning, cropping, and gain and exposure time configuration, as well as advanced features such as phase detection auto focus (PDAF), single-frame High Data Rate (HDR) mode and bracketing. Both high- and low-end image sensors, as well as everything in between, are supported by MIPI CCS through means of capability and limit enumeration. Together with a standardized control interface, this also reduces software effort as no driver changes are needed to support new image sensors. Similarly, there is no need for per-sensor driver software maintenance efforts.
CCS Static Data further facilitates MIPI CCS image sensor development by allowing moving capability and limit information out of the sensor's registers, which also enables an easy update path for model-specific registers (MSRs), capabilities and limit values. CCS Static Data makes hardware implementation faster and easier by providing a uniform method of describing a sensor's limits and capabilities outside of hardware.
Simplifying Integration: CCS Tools
MIPI CCS Tools complements CCS by providing hardware engineers, programmers and testers with a common toolset that can be used across vendors, devices and operating systems. In this way, CCS Tools eliminates having to create specific tools or debug solutions for a multitude of different implementations, which is especially applicable to the highly dynamic, highly varied IoT use case with its large numbers of involved operating systems, designs and replacements.
MIPI CCS Tools defines two formats for MIPI CCS Static Data used to store static information related to a given image sensor, such as capability and limit information, as well as MSRs: a YAML-based format and a binary format.
The YAML-based format is human-readable and editable, and can be easily generated by custom R&D tools; whereas, the binary format is space-efficient and better suited for parsing by driver-level software. CCS Tools supports converting data in the YAML-based format into CCS Static Data binary format, and also includes a parser for the binary format, which can be used, for example, in driver software.
Furthermore, a generic CCS driver is present in the upstream Linux kernel, supporting virtually any image sensor compliant with MIPI CCS. This way, driver software development is cut out of the sensor-integration process entirely.
Access Resources and Learn More
MIPI Alliance membership is not required to access MIPI CCS or MIPI CCS Tools, making them especially valuable resources for developers who are building IoT designs that leverage machine vision. CCS Tools is distributed under the 3-Clause BSD License and is available for download via a MIPI Alliance GitHub repository. MIPI CCS v1.1 and a conformance test suite (CTS) for the specification are also available for download.
In addition, an on-demand MIPI Alliance webinar provides a hands-on demonstration of the Linux CCS driver, modifying a CCS Static Data file (YAML) for a sensor, generating CCS Static Data binary and using the updated CCS Static Data binary in the driver.
For more information, visit the MIPI CCS Tools page on the MIPI website.