Embedded Software
From street lights to disk players almost every electronic product today contains software. BCA has designed embedded software for a wide range products and applications — from complex systems with high–performance processors running Linux and prototyping application development on the iPhone, to inexpensive systems that perform simple tasks such reporting hardware sensor output.
Design
Embedded software design is a distinct skill that requires experience in the control of electronics as well as general programming knowledge. Embedded systems have timing and other constraints that must be taken into account to make sure that the system will operate robustly in the field. Programmers that are unfamiliar with interrupt level coding and real–time operating systems learn the hard way that embedded systems programming technique is different than coding a user interface on a PC.
From the beginning, our core business has been the design of embedded systems. You can be certain your product will benefit from our years of experience.
Diagnostics
In virtually all embedded systems there is a need for a significant level of diagnostics. While much of the focus is on the product features that the user will see, diagnostics are designed to catch software, hardware, or use errors and report them for analysis and resolution. Diagnostics help your company by detecting electronics errors at manufacturing time as well as by reporting appropriate information after shipment, thus reducing field service costs.
Our approach is to develop diagnostics and embedded software in parallel. This allows faster debugging of custom electronics prototypes as well as sharing of code between the diagnostics and system drivers. These drivers are necessary to interface with the hardware components.
Custom Royalty–Free Kernel
A kernel provides the foundation for the embedded operating system that allows you to make your embedded system feature rich or keep it spare and lean. BCA is familiar with a number of commercially available embedded operating systems. Most of these are royalty based.
Over the years BCA has refined a custom kernel based on finite state machine architecture. It has been thoroughly tested as we've been using this architecture in commercial, industrial, and medical products since 1990. The kernel includes a scheduler, queues, software timer, and event handler, and is easily ported to various hardware platforms and compilers.
Working with BCA provides our customers with a robust, royalty-free kernel, giving them a jumpstart on all phases of embedded software development.
In projects where hardware and embedded software are developed in parallel, BCA often uses a PC simulator to speed the delivery of embedded system code. Here are some of the benefits to using this technique.
- Development is easier because PC tools and debuggers are more powerful and easier to use.
- Development can begin early because because it does not depend on hardware that may not be available or may be in an unstable state.
- Well designed code can be ported to the target device with little or no modification.
- Usability can be refined earlier and with more accuracy due to the interactivity of the simulator and ease of use on a PC.
- Preliminary user interface testing can performed in parallel with development, thereby reducing the final verification phase.
- The customer can use a marketing tool in advance of product completion for investment and sales purposes.