Hi, a geek used PC104 hardware to build
a high altitude glider, and set up his
choice on C for software, but he considered Ada.
Does someone know about a usable GNAT/PC104-DOS cross?
What Language / Platform?
Initially I started out with a "white-paper" attitude, looking for the
platform with the best reputation for developing reliable, real time
systems. Over time I came to realize that there is a tension here
between prestige and practical performance.
An Ada / Unix based system would seem to be the ideal - the most
virtuous. But Ada's structure and design-for-reliability approach is
burdened by poor support on "civilian" platforms, and in particular a
very large instruction set that, in the view of many experts in the
field, hinders its in-practice suitability for reliable systems, no
matter what its reputation is. Unix, as well, is not very available for
16-bit embedded systems, and 32-bit systems are too battery-hungry.
What I settled on was using an old language, C, in a rigorous way. C++
was put aside almost immediately, as a language extension that just
isn't defined, clear or stable enough for a high-reliability system to
be worth its benefits. The operating system used is nominally DOS at
both ends, as I have no faith in the stability of Windows. As the
industrial PC-104 uses a dos-rom operating system, that also provides
machine-code level compatibility between the software modules and data
structures both in the aircraft and on the ground.
This would also put a higher burden on the practices used, instead of
reliance on the reputation of a language to provide quality. It turns
out that many established high-reliability system developers take this
approach, where reliability largely rests on programmer practices and
rigorous static-checking. Automatically-verifiable standards have been
developed, such as MISRA-C, to ensure reliable, fail-safe end products
with the C language. The book Safer C - Developing Software for
High-Integrity and Safety-Critical Systems, has also been a great help,
as have numerous websites (most of which I've since lost track of), on
developing good programming practices.