Typically, the implementation phase of development involves programming for the software portion of an embedded system. Programming is a logical concept that is “wide open” in terms of techniques and styles. This differs from other such disciplines such as hardware design where there is typically a finite set of well-defined principles to implement a system. Programming can become an “art form” and if care is not taken a design can be poorly implemented which can decrease the probability of quality and reliability.
There are various styles of programming based on the software layer or component. The two most common are application and system level programming. Application programming is used to implement the business rules of a system. This type of programming is less concerned with machine focused concepts and is high-level in abstraction utilizing high-level languages. System level programming on the other hand requires an understanding of low-level machine and operating system concepts. For embedded systems reliability, performance, and quality are key aspects for a successful implementation. Thus, this requires disciplined techniques to promote safety in both application and system level programing. These techniques include concepts such as reducing or eliminating potential exceptions, accounting for real-time operating system issues such as dead-locks and resource starvation, and programing for maximum performance.
Ferguson Control Systems offers services to support or perform programing to implement a system design process. Our team members have years of experience from previous safety-critical programs and can use this experience to help achieve success. We can work embedded within your organization for support or perform the programming for the entire system or a subset.