AKANG69

Firmware Development

About Firmware Development

EMBEDDED FIRMWARE DESIGN

Unlike with a PC or Android device, the programming language for every microcontroller is different.

At SPK-MAK technologies we provide firmware design and manufacture of custom embedded systems in India mostly for embedded devices based on processors from STM32 and PIC32,TI & ATMEL and we take care to properly structure and annotate our code so that it can be easily updated or reused for the next generation of the device, even when a different engineer takes over years later.

WE ENSURE OUR FIRMWARE RELIABILITY THROUGH 5 MAIN INITIATIVES

                                SPK-MAK GOOD PRACTICES FOR EMBEDDED FIRMWARE DESIGN

1. Focus on coding in C for STM32, PIC32, TI & ATMEL.

For quality and price/performance we strongly favor STM32 and PIC32, (see Electronic Product Architecture) and while we do develop in other languages (Javascript, Python, Lua, C++) during prototyping or PoC (Proof of Concept) stages, we have found that there’s nothing as efficient, robust, well studied and optimized for MCU’s like C. Having such a narrow focus means we turn away a lot of interesting projects, but it makes us really good and efficient in what we do.

2. Use generally accepted Firmware Coding standards

At SPK-MAK technologies we follow Steve McConnells’ principles and adhere to most of the Linux Kernel coding style.  All our source code is internally audited against our checklist of 107 firmware coding principles, at least once per quarter. Projects receive internal scores and priority ratings for refactoring. Most of our designs allow for user-friendly or OTA (Over The Air) Firmware upgrades.

3. Team build up and cross-training

We have at least 4 electronics engineers on each project, two acting as FW developers, one as HW developer and one for QA. Two FW engineers may sound redundant but in practice, it increases efficiency by 30% to 100% due to faster debugging.

Some of the toughest bugs are at the interplay between Hardware and Firmware, and we have found that multidisciplinary training really helps problem-solving. Even if an engineer is 100% dedicated to FW, he will receive training on PCB design, PCB troubleshooting, RF, EMC and manufacturing, even mechanical design, so he is aware of the challenges and opportunities of adjacent disciplines.

4. Quality Assurance: Design For Testing

QA is not about lots of testing, it’s beginning with the end in mind. We carefully and methodically define a matrix of requirements and their test procedures, so that code is compliant enough such that most testing becomes unnecessary.

By ensuring a high level of test-ability throughout development and production, we speed up validation and industrialization of our designs.

5. Documentation

At a high level, we document every project through internal Evernote-based wikis.

The most important elements of our documentation are:

– Well-built readme files for every repository, including all necessary instructions to review, compile and test the code

– Repositories management

Effective version control is a storyline which depicts the evolution and decision-making path of a project, as well as the user manual for reusable code. All source code is Doxygen compatible and all releases are properly tagged so automatic changelogs are created. We believe in the advantages of following git-flow, enforce conventional commits and implement a slightly modified flavor of semantic versioning.

WHY ROBUST FIRMWARE SPEEDS UP YOUR TIME TO MARKET

Producing accessible code written following standard practices means that our engineers work more efficiently, and your engineers and third parties can easily explore and understand our code. This speeds up communication and problem solving, enhancing Time To Market.

Our standards ensure not only reliable code but also a reliable coding environment; if one engineer is unable to continue, another engineer can easily take over their work. In this way, we can avoid serious delays.

Process

How it Works

Expect Work With Us

Research

Crafting

Launch Beta

Get an Appointment

Have an idea of what your design looks like?