GUI Design System with Embedded GPU
The client is a globally leading manufacturer for information display systems including: Liquid Crystal Display, Touch Screens, TFT, OLED, LCD etc.
The client wanted to develop a system for their LCD touch screens; wherein the user can design GUI online and use this design- WYSIWYG on their LCD touch screens. The requirement was to develop low cost hardware to drive their LCD touch screens and open source library (C/C++) to render GUI on the screen.
This project included combination of diverse technologies like web development, hardware development, and firmware development for the hardware with below mentioned feature requirements:
- User friendly GUI designing editor with library of royalty free images.
- Design editor with multi layers architecture with image transparency and alpha blending mechanism.
- The SDK configuration also includes Eclipse IDE with PHP Plug-in, Open Office, Apache, Subversion and is also integrated with the domain controller
- Other standard features like user management, company management, etc.
- Low cost.
- With interfaces like USB, SPI, Serial port, GPIO etc.
- i2c connection for client’s touch panel.
- o LCD screen connector to drive LCD.
- Graphic rendering logic with multiple layer for rendering image, text, animation, etc.
- Protocols to communicate with other devices.
- The board should boot fast.
The requirement also included development of firmware flashing and desktop emulator applications to put data on hardware and access hardware using protocols.
Radixweb has a dedicated team for each technology; we analyzed requirement in detail with every team and created specification documents for each module. The main objective of this project was that the user should get the same design on web as it is on the display screen. To achieve this, we planned to keep graphics rendering logic in only one technology/language and other technology to use this logic.
- In web development the client wanted that GUI design editor that is easy-to-use, user friendly and secure.
- The user can export C/C++ based code of design and use it with hardware.
- Using Flex we implemented design editor features, which provides multiple layers where user can draw design on each layers, set size of each layer, and draw touch panel pattern for button click operation.
- Once the user completes the designing, he can preview the whole design to get idea of how it will look on LCD.
- We used J2EE and flex for web development.
- Hardware development was very crucial for this project as the client wanted a low cost device with interfaces (USB, SPI, etc.), touch panel connector, LVDS, backlight, PWM, NAND flash and good computation power for GUI rendering.
- We started by finding ARM processor which can have all these features and after doing POC with different processors we selected TI’s AM3703 processor which contains SIMD instructions.
- After selecting processor, we started with PCB designing of hardware and build BOM for it and procured required components.
- Also, we managed to keep the final product BOM cost within the requested range given by client.
- i2c connection for client’s touch panel.
- We developed custom firmware which has custom X-loader, U-Boot, Linux kernel - 3.8, UBIFS file system and main application.
- To achieve fast boot requirement, we customized x-loader, U-Boot and Kernel and optimized the code to initialize only those peripheral which are available on the board.
- We implemented driver for client’s i2c based touch panel, SPI, and updated framebuffer driver so that it can generate two framebuffers.
- Two framebuffers are used by GUI rendering logic to provide flicker free and smooth animation and graph rendering effects.
- Main application contains logic of GUI rendering, Communication protocol and Data loading and using it in rendering, etc.
We developed emulator application which communicates with hardware using USB-OTG port which is detected as serial port on PC. PC and hardware uses custom defined protocol/commands for communication.
We also developed firmware flashing application which uses JTAG or USB to transfer firmware into the NAND flash of board.
- The client’s requirement of a website wherein the end user can make design online and see online preview before putting it on hardware was fulfilled.
- Hardware board design with BOM and required documents so that manufacturing hardware board becomes easy for future requirements.
- Complete documentation for all the modules like – web, firmware flashing, emulator, etc.
- Detailed document of protocol/command, so that end user can develop their own code and prepare GUI as per their requirement.
- Whole system for end user to quickly design GUI and use it on hardware with client’s LCD screen and touch panel.