Software Engineering
Our expertise brings needed skills to your project
Problems we solve
Releasing a product to production, only to have others discover a critical Software defect
The frustration of working with an inflexible design that's costly to modify
High product cost - missed optimizations because your software team lacks key electronic hardware and systems engineering skills
High software test costs, yet many defects surface just before, or even after release
We can help! Our expertise brings needed skills to your project, so you can deliver on-time, on-budget, and exceed expectations.
Embedded Systems
Developing Embedded Systems software (firmware) since 1989
... designing the microcontroller-based hardware much of the time too.
Our understanding of:
• microprocessors
• peripheral interfaces
• real-time design
• interrupt/signal handlers
leads to fast, resource-efficient embedded code.
• peripheral interfaces
• real-time design
• interrupt/signal handlers
Experience with Linux and Real-Time Operating Systems such as QNX and µCOS-II, and custom cyclic and event-driven schedulers.
Languages
Software Development in:
• C / C++
• Assembly (NXP, Renesas, Microchip, others)
• Perl
• HTML / CSS / PHP
• Visual Basic for Applications
• Assembly (NXP, Renesas, Microchip, others)
• Perl
• HTML / CSS / PHP
• Visual Basic for Applications
Software Designed using:
• Unified Modeling Language (UML)
• Active State Charts
• State Transition Diagrams
• Real-Time Scheduling Algorithms
• Active State Charts
• State Transition Diagrams
• Real-Time Scheduling Algorithms
⚬ Rate Monotonic Analysis (RMA)
⚬ Major / Minor Loop Cyclic
⚬ Major / Minor Loop Cyclic
Support Services
In addition to programming, we support client Software Development in many ways, including:
• Process Development
• Code Inspection and Facilitation
• Prototype Development
• Tool Evaluation
• Code Inspection and Facilitation
• Prototype Development
• Tool Evaluation
⚬ Microprocessors
⚬ Compiler Suites
⚬ Real-time Operating Systems
⚬ In-circuit Emulators / Debuggers
⚬ Compiler Suites
⚬ Real-time Operating Systems
⚬ In-circuit Emulators / Debuggers
Critical Analyses
“Industry Standard” testing cannot find some of the most critical defects: Race conditions, Re-entrancy clashes, Deadlocks, Timing problems, Stack Overflows, etc. These can be particularly problematic in Real-time Embedded Systems, whether or not they use an RTOS.
We perform Critical Analyses on your code to uncover the defects which testing misses:
• Timing/Schedulability – will every task and interrupt always finish in time?
• Deadlock – how long could tasks block to wait for a shared resource?
• Stack Depth – can the stack overflow (or underflow) under worst-case conditions?
• Reentrancy – can a function/method be invoked safely by different priority tasks when necessary?
• Shared Resources / Race Conditions – are results affected by who calls the routine first?
• Deadlock – how long could tasks block to wait for a shared resource?
• Stack Depth – can the stack overflow (or underflow) under worst-case conditions?
• Reentrancy – can a function/method be invoked safely by different priority tasks when necessary?
• Shared Resources / Race Conditions – are results affected by who calls the routine first?