Embedded Systems

Embedded systems have a number of characteristics that make implementing them a challenge for the programmer accustomed to working in the desktop or server computing environment.

They are typically resource constrained, with limited RAM, program storage and CPU speed. Efficient coding becomes vital to a successful design.

The tasks to be performed can have very tight and precise timing requirements.

The systems tend to run for extended periods of time, and are expected to be highly reliable.

All of Quiet Software's engineers are highly experienced at developing successful embedded systems. We do not subscribe to the idea that inexperienced programmers can successfully implement an embedded system if they are merely given detailed enough specifications.

Research & Development

Our focus is on reasearch and development of products for our clients. We focus on creating technology and successful products, while respecting the intellectual property and trade secrets of our clients. We are willing to enter into reasonable non-disclosure and confidentiality agreements with our clients to assist them in protecting their confidential and proprietary information. We also avoid having clients in competing business or overlapping technologies to help reduce the risk of accidential disclosure of confidential information.

Initial System Design

To the greatest extent possible, we try to work with our clients to fully understand their requirements and needs and to provide an accurate estimate of the scope and cost of the project. Although this can and does cost money we have found that this investment ultimately pays off in a successful project.

If the complexity justifies it, we may propose a small initial project with the goal of preparing a detailed proposal to accurately outline the costs of the full project.

Hardware & Firmware Design

Especially when working with today's microcontrollers, hardware and firmware design are a collaborative process where the firmware designer needs to understand what features are needed in the processor, work with the hardware designer on selecting the correct processor, and then advise the hardware designer on how the processor should be hooked into the circuit. Since most of the pins on a modern microcontroller can perform multiple functions depending on how they are configured by the firmware, a successful hardware design is a collaboration between the hardware and firmware designers.

Reliability Enhancement

This has been one of Quiet Software's strongest areas. We have a proven track record of working with client systems that are not performing at the expected level of reliability, analyzing those systems, and fixing the problems so that the system delivers the required level of performance.

First, we deal with the low-hanging fruit: Does the code compile without warnings? Typically 80 or 90% of the compiler warnings are harmless, but a few of them will point toward serious flaws in the code.

Next, we add consistency checking to the code. Even a system with nothing more than a single LED can blink an error code to indicate where the code detected a problem. It can seem counter-intuitive to intentionally crash the system in a consistency check to issue an error code, but as you eliminate the problems the overall system reliability goes up rapidly.

We also pay special attention to memory allocation and memory management. Memory leaks, and code that continues to use a memory block after it was freed can lead to mysterious failures in systems that have otherwise been running normally for lengthy periods of time.

An excellent example of this was a data collection and control system that was integral to the operations of a large manufacturing facility. This system had been running flawlessly for several years and it suddenly started crashing several times a day. We were brought in to find out why.

Since the obvious symptom of the failure was that the memory pool was exhausted, we instrumented the memory allocation routines. This led to the discovery that an error condition handler was attempting to free a memory block twice. The error was ultimately traced back to the fact that a data communications cable was resting against the housing of a large electric motor which created a communications error every time it started up. We fixed the programming errors, but also suggested that the factory relocate the cable to fix the problem immediately without having to wait for a new code release.

Optimization of Software Performance

This is usually done as a follow-on to the reliability enhancement process, and focuses on making the device do its job faster. It can also focus on reducing the code size to provide the space to implement additional features, or to allow the use of a smaller/cheaper microcontroller.

This process begins with analyzing and profiling the code to understand what routines are most critical and where the most benefit will be realized. Once the bottlenecks have been identified, those routines will be modified or rewritten. If ultimate performance and smallest possible code size is required, specific routines may be rewritten in assembly language. Processors such as the 8051 that are poorly suited to the C or C++ languages realize the greatest benefit from assembly language coding.

Code that interacts with mass-storage devices such as hard disks, CD-ROM drives or tape drives may improve dramatically if it can be rewritten to keep up with the native data rate of the device and minimize rotational delays or seeking.

Data Communications & Networking

This is a core skill of Quiet Software's engineering team. We have experience with multiple communications protocols and hardware, including:

RS-232, RS-422 & RS-485 including multidrop.
Modbus & Modbus+
GE Superbus
IEEE 802.3 / Ethernet
IEEE 802.11 / WiFi
Universal Serial Bus / USB
Multiple proprietary digital radio transceivers from TI/Chipcon, Micrel & Atmel

Networking & communications protocols include:

Internet Protocol Suite (TCP/IP)
Serial Line Internet Protocol (SLIP) & Point-to-Point Protocol (PPP)
Simple Network Management Protocol (SNMP v1, v2 & V3)
Simple Mail Transport Protocol (SMTP)
Post Office Protocol (POP3) & Internet Message Access Protocol (IMAP3)
Modbus / Modbus+

Wireless Communications & Networking

Quiet Software has been developing wireless technology for over five years, focusing on using low-cost digital transceivers operating in the ISM (Industrial/Scientific/Medical) Bands under the FCC Part 15.247 rules. We've developed systems for both the 900MHz and the worldwide standard 2.4GHz bands. We have achieved ranges of up to 1.5 miles (using 900MHz) and built systems for both point-to-point and multipoint wireless networks.

Remote Telemetry / Monitoring / Data Collection

Quiet Software has taken the basic wireless technology it developed and adapted it for the following applications:

Monitoring and control of primary & emergency lighting systems.
Pipe flow & pressure monitoring for oil wells
Tank level monitoring
Status monitoring for Duncan parking meters and remote parking purchases
Broadcast Advertising messages for shopping carts
Mobile panic button system with location information
Wire-replacement applications for a variety of different communication protocols

Distributed Systems

Industrial Controls

Designing with Safety in Mind