POSIX Based Embedded Development – Developing a unambiguous set of standards
POSIX.1 defines a C language source code-level application programming interface (API) to an operating system environment. In theory, embedded applications that are developed using POSIX APIs should be portable across POSIX-based platforms if the same set of POSIX features are available across the operating systems.
Benefits of POSIX Based Embedded Development
POSIX provides software developers with the opportunity for a significant reduction in cost and effort when porting applications to different platforms. Although there are clear benefits, there are some inconsistencies that stand in the way of re-using POSIX applications. The behavior of POSIX API embedded development is not always the same across OS platforms. One example of inconsistency is that a POSIX function call will suspend a calling thread when a higher priority thread is in the ready state. Embedded applications may require a calling thread to suspend when it sends a message or an event while a higher priority thread is waiting to receive the message. Conversely, an embedded application may not want the calling thread to suspend until its scheduling time slice is over.
Since POSIX API behavior is not always the same across OS platforms, it is difficult to consistently meet the multitude of application requirements. To maintain code portability, developers need a POSIX solution that strictly adheres to standards, meets embedded application needs in a non-intrusive manner (i.e. without breaking POSIX compliancy), and provides consistency in API behavior. For example, a solution suitable for telecom type applications might have a configuration option that allows all the POSIX threads to always run-to-completion before giving up control to the scheduler. A controller type application may require that a higher priority thread take control and run immediately when the suspension is lifted as opposed to allowing the current thread to finish its allotted CPU time slice. Mission critical applications may require that all the resources are statically pre-created to avoid failures during run-time (i.e. reserving memory, allocating control blocks up front, re-using threads from thread pools, etc.).
It takes more than just mimicking POSIX APIs to make embedded applications portable across OS platforms. The consistency of API behavior must also be considered. MapuSoft’s POSIX Interface for posix based embedded development is designed to meet the needs of various embedded applications with performance and full code portability in mind while allowing developers to add features without breaking POSIX compliancy.
Click here to view Mapusoft’s POSIX API support