vishnu wrote:
tell me what useful/practical avionics software is ever going to need to run on hundreds or thousands of cores?
Avionics loves 440/460 (e.g. used in M346 aircraft) and it's mono core, while
e500
(PowerPC by Freescale) is 4 cores, currently used in Moto GP (Valentino Rossi has it in its motorcycle) and F1 (I worked with RedBull).
News & rumors: it will replaced by an 8 cores in FOM (formula one management), and still supported by
Windriver/VxWorks
, you have to pay 20K euro of license to have a "trusted compiler& ecosystem, including their Eclipse builder and code checker" (Green Hills costs 50K euro in licenses, including their QAC)
but it's not the point!
The point is that
Avionics is mission critical, and due to the HW constrains, strongly uses the "
shared memory model
" in their equipment
,
which is completely unsupported by the C language
MISRA does not help, and you have to fix the hot jam (in low level ={ BSP, IBSP, drivers, CBIT, BIT, .. } everything else is written in higher language -> ADA) with a lot of
#PRAGMA
and ugly tricks ---> you have to handle extra testing activities in order to check if everything is ok within "normal" and "abnormal" working conditions.
That means you have the same problem because you have a lot of devices (with "redundancy" -> e.g. MTC=mission tactical computers) that want to read/write data under different real time OSes
e.g. you might have
-
VxWorks/OS
running on boardA
-
interfaced to
Integrity/OS
running on boardB
-
which might want to talk with
Velocy/OS
running on boardC
because all of these boards are installed in the same chassis, and they talk each other through shared memory (boardD)
and trust me: it's very hard human power! Thousand hours requested, thousand money involved, and very frustrating job (I say that in first person)
vishnu wrote:
pthreads
pthread
does not offer nothing in term of "
safety
" when you have to deal with safe-concurrency, I have articles about that, and again, you depend on
#PRAGMA
--> you depend on the C compiler implementation,
GNU/GCC
isNotEqual To
DIAB/C
, isNotEqual To
GreenHills/C
----> say bye bye to the C portability and be prepared for a lot of troubles (and extra homework)
vishnu wrote:
The Linux SMP code
Who cares ? Linux is not certifiable as
DO178A
level
E
-
Level-A
, Failure condition is
Catastrophic
, Failure may cause a crash. Error or loss of critical function required to safely fly and land aircraft
-
Level-B
, Failure condition is
Hazardous
, Failure has a large negative impact on safety or performance, or reduces the ability of the crew to operate the aircraft due to physical distress or a higher workload, or causes serious or fatal injuries among the passengers. (Safety-significant)
-
Level-C
, Failure condition is
Major
, Failure is significant, but has a lesser impact than a Hazardous failure (for example, leads to passenger discomfort rather than injuries) or significantly increases crew workload (safety related)
-
Level-D
, Failure condition is
Minor
, Failure is noticeable, but has a lesser impact than a Major failure (for example, causing passenger inconvenience or a routine flight plan change)
-
Level-E
, Failure condition is
No Effect
, Failure has no impact on safety, aircraft operation, or crew workload
Concurrency model, offered by ADA as "language feature"
a few Interesting Articles
Interesting language and book
Concurrent-Euclid is also known as "
ConEuc
", it is a concurrent descendant of the
Euclid programming language
designed by James Cordy and Ric Holt, then at the University of Toronto, in 1980.
I guess that
ConEuc
can really teach good things to the next generation of the C standard
It was designed for
-
concurrent
-
high performance
-
highly reliable
system software, and proved to be low level enough: the "TUNIS" Operating System is a Unix variant!