High-power welding system software
MCG Embedded were tasked with creating driver code for a bespoke board to control a high-power welding system. The board was using the Infineon Tricore TC1782, coupled with two WIZnet ethernet controllers. To enable the client to easily program the entire board, MCG Embedded provided the ANSI C-based BSP for the system, comprising both "off-the-shelf" drivers and also custom drivers.
The WIZnet controllers were harnessed using WIZnet's own socket library, modified to use both controllers on the same board, as well as porting their software to the Tricore platform.
Air quality sampling system software
A military customer inherited demonstration code for a product prototype they had developed in-house to take samples of air under remote control. The purpose of the software, written in C, included supporting a user interface (UI) on the LCD screen, together with motor-drive controls, debouncing switches and implementing the correct sampling strategy. Unfortunately the code was severely buggy, crashed regularly and was completely non-functional in places.
The customer had just two weeks to get the code working correctly and reliably before they demonstrated it in turn to their end customer – hence MCG Embedded got involved.
Within a few days we had learned the operation of the software and had corrected a number of bugs in the structuring of the code, including multiple header definitions, poorly structured arrays, lack of re-entrancy protection to functions and much more. After a week, all of the bugs had been fixed, along with many more we discovered along the way.
The unit was duly returned to the customer, together with a properly documented set of source code, who were then able to demonstrate the unit successfully. Quite a turn-around in a week!
CANdroid
We have worked closely with a leading embedded systems development company to provide a ground-breaking solution which enables easy monitoring and logging of communication interfaces, including CAN, RS232, RS485, I2C, SPI, analogue and digital i/o - as found in various automotive and industrial applications. This was achieved by MCG Embedded developing an Android App which interfaces with a bespoke hardware module via Bluetooth, using the rfcomm (serial) API. The hardware interface uses an ARM Cortex-M0 microcontroller and was designed by our customer.
By using the Android platform, we were able to make a robust system at a much lower cost than equivalent products in the market, since the Android environment offers all of the user interface features one would expect and therefore the hardware development could concentrate on the interfacing to the target system.
This cross-platform challenge was only made possible by MCG Embedded's dual experience of both Android and low-level embedded, including debugging and developing code in C using Keil uVision.
We are now looking at porting this to other handheld devices, as well as expanding the functionality of the application, which has been designed with a modular base to allow further "plug-ins" to be developed. Although this project is still in progress, it has already been successfully demonstrated at shows such as ARM TechCon 2012 and Embedded World 2012, and is scheduled for final release in mid-2013.
More details are available on www.candroid.co.uk.
Proprietary multi-core OS development
We undertook a project for one of our major customers to take a student-developed framework for an operating system for a new automotive multi-core processor and turn it into an integrated environment to auto-generate code and build files. This was a particular challenge as the existing code had not been developed to any process or standard and was known to have many bugs and limitations.
Not only were we able to correct the bugs, we also extended the system to support multiple processor variants, even adding a Java-based configuration tool and the facility to generate compiler settings and debugger projects automatically.
This represented a considerable challenge as it combined the most involved aspects of multi-core programming, cross-core synchronisation and data flows, a new tool-chain and prototype silicon.