KORU graphical UI Framework
Koru is a declarative Graphical UI Framework providing design freedom even on a limited microcontroller based hardware. The library is only 128 kB and it has wide operating Kernel support from RTOS to Linux. It renders 60 fps graphics on Cortex M4 based microcontollers. The framework scales with the hardware even to rich 3D animations. You need Koru if you want to rapidly build graphical user interfaces for custom branded products. The ratio between graphical richness and long battery life is an industry benchmark with Koru. We welcome to our lab for a tour, to see our code and our demos.
KORU Graphical UI Framework demo on
a standard of the shelf board
with ARM Cortex-M4,
256 kB internal SDRM
and 2 MB internal flash.
Long battery life
Well written, fast and small software ensures good performance on limited hardware. This ensures smaller, cheaper and more energy efficient products. Energy efficiency is one of our cornerstones. We can do a full powerup-update screen-sleep cycle in 20 ms. We can boot system from off in 500 ms. With Koru a week of battery life is attainable.
Wide OS Kernel support: RTOS, ANDROID, NetBSD, Linux. Wide graphics engine support OpenGL ES, Open VG, Framebuffer. Full native integration with ST Microelectronics Chrom-ART 2D hardware accelerator. Porting to new hardware takes 2-4 weeks for one engineer.
All the software has been built by Koru and optimised for speed and flexibility. With 60 fps on a 168 MHz Cortex M4.
Small is beautiful
Bloated and slow software requires fast hardware to deliver good user experience. This always comes with a power penalty leading to bigger batteries and eventually larger hardware. With small software you can always build smaller products.
Complete design freedom
We want our clients to have the possibility to build exactly the experience their users desire without having to be overwhelmed with effort and complexity. Our standard widgets are a great starting point and we help our clients design beautiful experiences.
Craft beautiful user experiences
With the full separation of user experience and business logic parallel development is possible. This enables more iteration cycles with users and ultimately a better product market fit. With the addition of style sheets the user interface can be individually tailored to the mood of its wearer.
The schematic belows explains the architecture of Koru. You can click on each of the boxes for a detailed explanation of the different components of the system.
The user interface mark-up language used to generate Koru applications is based on XML language. Applications are built using a library of standard widgets. They are built from UI components and defined in XML. The functionality of the application is written in C for execution speed and for easy platform migration. Application views consist of one or more hierarchical mark-up elements. Elements can contain attributes as well as child elements, which can then contain additional child elements and so on. When elements are displayed in a view the basic principle is that later elements in the mark-up are rendered on top of earlier elements.
The Koru API defines how the applications interact with the widget library. Using the widget library significantly speeds up development and simplifies customization and localization efforts. The framework includes KORU UI Widget Library, KORU XML Engine, KORU Graphics Engine and KORU OS Adaptation API.
The Widget library is a collection of ready made components from which the user interface is built. It includes different types of views with relevant attributes like scrolling behaviour (acceleration, easing etc.) It also includes graphical elements from which the user interface can be drawn. These can be vector graphics or bitmaps or combinations of them. It also includes menus and different types of buttons. There are more than 60 different widgets available for developers.
The XML engine interprets and renders the user interface. The user interface is defined using XML. The XML can leverage the predefined widgets or one can define unique behaviour in XML extending or modifying the widget.The system uses SVG making it flexible to changing display sizes.
The Graphics engine draws pixels and calculates the place where to draw them. Our graphics engine supports the following graphics back-ends:
1. LCD Frame buffer
2. Open GL ES and Open GL
3. Open VG
If the hardware graphics accelerator supports 3D graphics, then Koru graphics can utilise that and render 3D user interfaces.
The OS Adaptation layer is customized for different kernels and operating systems. At present the system supports a range of kernels from FreeRTOS, NetBSD, Linux, Android, Mac and Windows. Each of these has a unique way to handle graphics, allocate memory, log errors etc. The OS Adaptation API manages this for each OS kernel. Creating the support for other kernels and platforms is between 2-4 weeks of development effort.
Operating System Kernel
FreeRTOS, Linux, Android, NetBSD, ThreadX, PC and Mac for development. Building new support for a Kernel is a 2-4 week job for one engineer.