SOFTWARE ENGINEERING

Embedded C/C++

The majority of the software work at Haman Engineering has been developing applications for small microcontrollers. This requires an intimate knowledge of the processor architecture, and attention to resource management. This necessitates efficient algorithm development and robust memory management. This could be anything from compact ISR coding in C, to preventing memory leaks in C++. Also, knowledge of the inner workings of the compiler and linker are essential. In a typical consumer device, the firmware has to handle power management, the user interface, sensor interfacing, graphics, audio, communications, and many more functions concurrently and with low latency. For simpler devices, the code is developed on the bare-metal, with properly written interrupts and the main loop utilizing state-machines to give the appearance of concurrency. For more complex devices, an RTOS is more appropriate to abstract the developer away from the low-level synchronization. Haman Engineering has experience developing with FreeRTOS.

Developing firmware requires the agility and experience to design multiple facets of the complete product. The following is a small sample of the functions directly developed by Haman Engineering:

C#

Rarely does a product not have a PC component. Whether it is a graphical user interface to the hardware, in-house tools, or a server application, Haman Engineering has you covered.

  • Graphical User Interfaces
  • Control Panels
  • Programming tools
  • Web page parsers
  • MySQL integration
  • Multithreaded server applications
  • Remote bots
  • Unity

Java

Simple GUI development for Android based smartphones utilizing Android Studio. Application was a client interfacing to a custom TCP server for data exchange.

DSP

Digital Filtering

Data Analysis

Computer Vision

OpenCV for C#

Analog gauge reading

Processors

Microchip PIC/dsPIC

Freescale Kinetis

TI MSP430

Tools

SVN

Doxygen

Beyond Compare

MPLAB X

Kinetis Design Studio/Processor Expert

Code Composer

Eclipse

Visual Studio

MySQL Server