Embedded Linux is a fast growing operating system which has the edge over other operating systems in reliability, scalability, modularization and robustness. With its open source model Linux has given developer independence and thereby the possibilities of increased innovation with limited effort. The scalability of Linux has enabled this operating system to fit into virtually anything. And that has made Linux a sure winner in the field of embedded system development. Quickembed Engineers believe at contributing back to the Linux community and are active members in many of the popular mailing lists.
1.Linux porting service
2.Device driver development
3. Computer on modules running Linux
4. Power management
5. Linux Application development
Linux porting services
Quickembed has done Linux porting on to new ARM cores as well as on processors that didn't have any native core. This means writing a new entry. S file to make sure the port is done to the new architecture.
A few exciting cases for which our engineers have worked to get a complete solution
1. Porting of Linux to a new ARM based silicon with no prior Linux port before.
2. Porting of Linux on a completely new core, where a previous port was not available.
3. Development of Linux BSP for platforms that are customized out of a reference design. These include platforms designed from processors like S3C2440, S3C6410, OMAP3530.
The amount of study that has gone into the Linux kernel has given engineers at Quickembed complete understanding of the Linux architecture and source code. R&D efforts in the Linux kernel are a regular in the Quickembed activity list.
With this level of expertise, Quickembed can definitely speed up the development time and thereby secures a special place in the embedded arena where "time to market" is the key difference between success and failure.
Device driver development
Quickembed Embedded Linux team has experience in writing drivers for custom devices. Quickembed in the past has worked on the device driver development in the following areas.
1. Frame buffer Driver for Video Graphics Controllers.
2. USB drivers - Devices sometimes need to support custom end point configuration and Quickembed has developed USB device drivers that support this.
3. Camera drivers - Quickembed has a dedicated team of Engineers working on the Linux camera driver development and supporting Video for Linux. Quickembed Systems has support for 1.3M pixel, camera modules with drivers for Linux and support for Video for Linux too.
4. Touch screen Quickembed has optimized Linux touch screen drivers on top of touch screen controllers like TSC2301, UCB1400 for platforms running embedded Linux.
5. Nand flash Quickembed has developed Linux NAND flash drivers and is currently developing open nand flash interface(ONFI) support in Linux. Quickembed supports OS boot from NAND flash too and hence support u-boot level bad block management too.
6. GPRS Quickembed has developed support for GPRS in Linux.
Computer on modules running Linux
Quickembed has developed a Computer on module that run Linux. These computers on modules can have SDRAM up to 256MB and flash up to 32MB. Customers using these compute- on- modules can design carrier boards around these. Please refer our ARM catalog for more information.
Power management
Customers today are in need of advanced mobile devices that needs to be battery powered for a long period of time. For an example, Smart phone these days have a requirement of 125-150 hours of non-usage time. To achieve this and also by not going in for high cost batteries it becomes important to have a very good power management policy. Quickembed has designed handheld point of sale systems that has Ethernet, Wi-Fi, GPRS, bar code scanner, thermal printer, LCD, touch screen, contact less smart card, magnetic card that run Linux. These point of sale terminals had a standby time of 125 hours and also 8-12 hours of complete running time. Power management generally takes place in three places
- During component selection Processor should be able to run at 1V and also all the peripherals like SDRAM should be low powered one meaning should be operational at 1.8V. Quickembed has got very good experience in choosing the components and has successfully designed products on the same.
- Device driver development - In Linux, if the power management APIs for each device is handled in the device driver. To drive the device to sleep mode the device drivers are notified by the power management portion of the BSP.
- Power management policy This is quite dynamic. The policy is more dependent on the application of the device. For example, if a user is watching Video and not touching the mobile device for 15 minutes then the device should not go to standby mode. To solve this problem, Quickembed proposes a policy where there will be different power management profiles based on what type of customer would use the product.
Linux Application development
Embedded systems are becoming more and more sophisticated these days. Embedded systems are becoming replacements for PCs in entertainment and Personal assistance (e.g. set top boxes and PDA/Tablets).These necessities call for good GUI, word processing, etc. with more hardware constraints. Quickembed has responded to this call with the state-of-art application development.
Some of the applications we added recently to our list are
1. MP3 Player for ARM
2. E-Mail Client (optimized for ARM)
3. FM Player
4. TV Picture-In-Picture Application
Quickembed has skilled programmers in Qt and Qtopia who have developed a complete desktop environment for the set top box.
Device Driver Development / Boot Loaders
Device driver development is no easy task and writing one from scratch isn't for the average software engineer. It's a specialized task that requires knowledge of low level system software, a thorough understanding of hardware, and in-depth knowledge of the operating system internals.
Among the different types of device drivers that your team may require expertise: char drivers, PCI drivers, USB drivers, Block drivers, TTY drivers and Network device drivers.
A device driver and boot loader developer may be responsible for:
- Concurrency and Race Conditions
- Time, Delays and Delayed Work
- Interrupt Handling
- Memory Allocation
- Memory Mapping and DMA
- Communicating with Hardware
- Data Types
We have experience in developing, upgrading and resolving issues with both Linux and Windows device drivers.