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.
Working within an organization alongside other developers requires adherence to coding standards and proper project formatting. Haman Engineering has worked in environments where we are the sole developers, and also as members of a software engineering team. Haman Engineering maintains its own SVN server, and can interface with any version control software of the client organization.
Simple GUI development for Android based smartphones utilizing Android Studio. Application was a client interfacing to a custom TCP server for data exchange.
Digital Filtering
Data Analysis
OpenCV for C#
Analog gauge reading
Microchip PIC/dsPIC
Freescale Kinetis
TI MSP430
SVN
Doxygen
Beyond Compare
MPLAB X
Kinetis Design Studio/Processor Expert
Code Composer
Eclipse
Visual Studio
MySQL Server