Embedded devices

Firmware for embedded devices is a special branch of programming imposing restrictions on the size, the design and software speed of operation (real time programming, driver development, signal processing, platform specific OS development). We treat these requirements as a challenge rather than an obstacle in creating fast, reliable and at the same time effective firmware/software.

Firmware for medical devices

Otoacoustic Emissions (OAE)

Firmware for portable device for hearing screening tests (Distortion Product and Transient Otoacoustic Emissions) powered by DSP (Digital Signal Processing) processor from Analog Devices (ADSP-21xx).

Comprehensive clinical system for hearing assessment – generating stimulation and collecting responses on DSP site, data analysis and visualization on PC. Communication between DSP/PC based upon RS232 and USB protocols.

Auditory Evoked Potentials (AEP)

Audiological system dedicated for automated hearing tests measuring Auditory Brainstem Response (ABR) – EEG collection/averaging done by DSP (Digital Signal Processing) device, data analysis and visualization, reports generation and storing results on the PC site.

Entire clinical system dedicated for detecting tumors in hearing nerves and building audiograms – AEP, SABR, P300, CHAMP protocols.

Electrocardiography (ECG)

Communication between ECG device and PC system compliant with the EU EN 1064:2005+A1:2007 standard. The issue included creating USB and RS232 low level drivers on both: the ECG unit (Assembler/C) and PC (C++) sites, designing ECG firmware, business logic and high level protocol according to EN 1064 standard.

Adding support for POCT protocol to existing ECG device.

Mass transit systems

Bus Ticketing Systems

Electronic Ticket Machine system dedicated for buses and trams. Device works under control of WinCE 5.0 and has inbuilt: Global Positioning System for automatic updating fare stages, ITSO Compliant Contactless Smart Card Reader (MIFARE – Classic, DESFire and Ultralight) with integral passenger display and card transaction lights, high-speed thermal graphics printer, the Wireless LAN device (802.11 Wi-Fi), GPRS as an alternative for Wireless LAN, Operator’s color touch screen.

Preparing BSP for the above Windows CE platform. A board support package (BSP) is software that implements and supports an operating system (OS) on a standard development board (SDB). Low level programming task including adjusting WinCE OS kernel to custom hardware platform, preparing drivers for non standard components and preparing final OS distribution (platform builder).

Train Ticketing Systems

Device (firmware) dedicated for managing and selling rail products: manipulating data using MIFARE cards (driver for cards’ reader), printing tickets on Zebra portable printer (implementing low level radio communication protocol), communicating with PC using IrDA.

Preparing BSP for the above Windows CE platform.

Measurement engineering

Power Quality Assessment System

Porting device firmware from Siemens SAB80C166M to ARM9 (low level, assembler programming).

Adding advanced, FFT based, power quality analysis (digital signal processing in a real time environment).

Developing USB driver on firmware site. Adding support for USB communication with PC station to main device application.

ASIC based communicator for measurement systems

USB Host driver for dedicated ASIC controller capable to manage and communicate with custom devices of CDC class (custom protocol over CDC). ASIC controller by Atmel based on ARM7 (AT91SAM7XC256) or ARM9 (AT91SAM9260) architecture.

USB Host controller compliant with Open HCI specification 1.0a.

Stack of USB drivers correctly handling attaching of any USB device.

General embedded - firmware components developed for complex systems

RTOS Core

Bespoke, real time operating systems created for custom platforms

Pre-loaders

Loaders

Memory Management

SRAM

FLASH

Power Management

Managing energy consumption

Controlling battery charging process

Communication drivers

USB: drivers for devices of various kinds (HID, CDC, Mass Storage), dedicated and OHCI specified controllers realized for wide range of hardware

RS232

1-wire

I2C

SPI

GUI/Printing

Low level drivers for alphanumerical, graphical and touch panels

Library of PC style controls for embedded LCD (windows, edit boxes, list boxes, buttons, etc.)

Drivers providing support for wide range of thermal, text and graphic printers (generating multi-font and graphic printouts)

Support for casing buttons

A/D & D/A

Codec management (AC97 compliant)

Amplifboard management (analog high pass filter/low pass filter/notch filter/FIR filter)

Stimuli generation – building pattern and generating stimulation

Digital signals acquisition

Data processing – filtering, averaging and analyzing (Power Quality Assessment, Hearing Assessment, Tumors detection, low frequency EEG)

Hardware platforms

  • Analog Device DSP (ADSP-2181, ADSP-219x),
  • Blackfin,
  • ARM7, ARM9, ARM11,
  • xScale,
  • Cortex,
  • Texas Instruments OMAP (architektura dwurdzeniowa),
  • AVR, AVR32,
  • V850,
  • SAB-80C

Programming languages

  • Assembler
  • C
  • C++
  • C#
  • Java