The Tier 1 supplier for automotive OEMs is already a customer of Embien having worked with us on numerous designs and developments. One of the projects was to develop an automotive cluster on Renesas RH850 platform on QT on MCU framework. While the cluster is already in production, the end customer wanted more features in the next revision, for which our team was more than happy to support.
One of the features is to provide a live reverse camera view of the vehicle surroundings/blind spots to help drivers navigate and park safely. Next user-selected images or themes need to be transferred to the vehicle cluster to provide unique customization. Let us have a look at how our Qt App development services team successfully developed the Qt Rear view Camera integration and Qt dynamic image loading features.
In a microcontroller environment, optimal CPU usage, memory usage, and bus utilization/bandwidth usage are key elements to maintain a good performance.
To display a live camera video in UI, multiple processes are involved, such as receiving camera data, storing it in memory, decoding the data, storing it in memory, and displaying it in a TFT. Similarly for User selectable images/themes, many operations have to be done, such as receiving compressed image data, decoding the image data, storing it in an memory, and displaying the images in TFT.
Apart from these, the cluster needs to display other vehicle parameters as well such as speed, RPM, Gear indication, time, temperature etc. after acquiring the input from CAN, I/O, ADC, etc., and due processing as per business logic.
As all these processes involve a good amount of memory read/write cycles and CPU processing, our main challenge was to optimize the memory and bus utilization to avoid any screen flickering and blank screen.
As mentioned earlier, the firmware was written in QT C++ framework for graphical user interface and C for backend. Our embedded software team carefully profiled the system to understand the potential bottle necks. Few proof-of-concepts were done to calculate the impact of simultaneous memory transfers on the display when doing Qt Rear view Camera integration. With enough data at hand our Qt App development team began the development.
To achieve a seamless operation of reverse camera, our engineers created and allocated memory for two windows, one for storing camera live view data and another for the application UI window. Video input received was decoded and data updated into camera window memory.
QT Rear View Camera Integration
Further in the Qt application, sprite layers were created for 3 layers (top, center, and bottom).
For the 1st and 3rd layers, the required telltale images as per theme were stored in external flash, and variables holding the displayable values were stored in internal RAM. The update of the framebuffer was well optimized to update only if there was a change in value, effectively optimizing the frame buffer memory read/write access.
For the 2nd layer, the hardware engine captured the camera data and stores the video data in SDRAM. The same SDRAM address was registered as the 2nd layer of the screen to display a live view. In this way, multiple read/write operations were avoided, bus bandwidth saved, and Qt Rear view Camera integration done.
As part of the solution, our Qt App development team decided to reduce the memory consumption/usage by selecting JPEG compression technique for themes/images. Users can select the theme in a mobile application and send it through Wi-Fi instead of Bluetooth to achieve a faster transfer rate. Once the compressed image data was received, the application decoded the image data using RH850 D1M1A JPED decoder hardware engine. The decoded raw image data is stored on an external flash. Consuming the user selected theme and displaying it in the TFT was managed in the QT C++ framework application. As per QT dynamic screen design approach, it read the decoded image data in frame buffer and displayed in UI at run-time.
QT Dynamic Image Loading
The design supported storing more than 5 images in an external flash based on the flash size. Every time the theme is changed via the cluster display interface, the relevant JPEG images are decoded and stored in predefined location providing a seamless experience to the users.
With the support of our Qt App development services, the customer was quickly able to perform Qt Rear view Camera integration and Qt dynamic image loading with the following benefits:
By prioritizing the optimization of bus, CPU, and memory bandwidth in embedded product development, our Qt App development engineers created robust, high-performance cluster that met the demands of users using even a low-cost microcontroller environment. With our extensive knowledge of Renesas microcontrollers, we were able to use the controller resources effectively to meet customer needs. Our extensive QT platform framework experience in Qt for MCU variant resulted in faster delivery.