µController Programming

Simply, we make it work. We help you get your product to do what you intended and we are ready to push your micro to its limits. We offer services in firmware design for any microcontroller device from any manufacturer.

We do most of our work in C and inline assembly, and have expirience with several MCU manufacturers, multiple comunication interfaces (SPI, I2C, UART, EMIF), and most microcontroler subsytems (PWM, ADC, DAC, Watch Dog, Counters, Timers, Interrupts).

We specialize in writing Boot Loaders for various code distribution architectures:
Updating the code from an external flash memory location uploaded beforehand, including version controll and rollback features.
Pre-loading the device program memory by streaming the code over a serial interface like I2C or SPI.
Dynamically reorganizing the execution of the program memory of the MCU by selecting the appropirate ISR jump table and code execution sectors.

In-circuit Debugging

We are ready to find the glitches and bugs, to help you take full control of your software. We will debug and code review your project.

We can assist you with:
Reviewing your code. By having a party not involved in the actual code design go through the source helps find coding and logic errors that are not obvious at first glance to the person writing the code.
Debugging the working code. This can help find code and behaviour glitches or logic errors that might be hard to catch with just code review. May it be imporper use of global variables being updated in interrupt routines, or the desing ending up in an undesired state, debugging will help pinpoint the error.
Scoping out the MCU sourrounding with oscilloscopes and logic analyzers, making sure the electronics sourrounding the microcontroller behave as intended. This can also prove crucial when investigating timing relations between signals. Finding possible signal interferance/crosstalk issues that might cause the MCU to behave erratically.

Utilities for interfacing

We will write your custom utilities for verification of parts of your design, programming flash memory and other interfacing tasks.

Sometimes it is necessary to get in touch with your device:
For on-site debug purposes, where a small custom PC app connected directly to your device using RS232/USB over a service connector might turn out a better solution than a full programing IDE with a code debugger over JTAG.
Pre production testing, when you want to make sure the things normally stay hidden in the code, behave as they are intended its always nice to be able to quickly read out values and see graphs of things while your device is running.
In production and post production programming of memories, if you want to leave yourself an easy option to be able to program and reprogram the contents of your device non volatile memories, and leave a path for firmware upgrades.
If your device is intended to run in combination with a controlling program on the PC we can develop your software solution or provide your programmers with DLL's for quick device access.