comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Raspberry Pi, Real-Time and Ada
Date: Fri, 7 Feb 2014 09:42:41 +0100
Date: 2014-02-07T09:42:41+01:00	[thread overview]
Message-ID: <hewmbvd4m8b8$.jigq59474gpu$.dlg@40tude.net> (raw)
In-Reply-To: bb054661-33ab-4a48-96c5-b7967ddbb4e5@googlegroups.com

On Thu, 6 Feb 2014 13:04:19 -0800 (PST), Rego, P. wrote:

>> Using the general definition, if your application has deadlines with
>> tolerances on the order of 0.1 seconds, then the answer is clearly
>> "yes".
> Very slow, but based on what?

I don't think that 10ms would be a problem even for ARM.

On an Intel board 200µs loops (read inputs, calculate, write outputs) are
doable.
 
>> For tighter tolerances, you'd have to measure the actual performance,
>> and possibly use an enhanced kernel as you discussed.

> Measuring could be excelent. Do you know some tools that I could use for
> measuring the RPi performance?

Ada has everything you need for that.

The main problem is how good the RT clock is. Windows and VxWorks typically
have miserable RT clock services on x86. x86 Linux has a decent one.

Regarding ARM Linux, I didn't tested its clock, so I cannot tell. The
primary test is to call Ada.Real_Time.Clock twice and to compare if the
reading is same. If they are you should look for an alternative
implementation of. The second test is to measure how close delay 1.0 is to
1 second using Ada.Real_Time.Clock. The deviation from 1s tells how coarse
OS programmable timer services are. There are OS means to attune that (on
the performance cost).

Once you have Ada.Real_Time.Clock it is no problem to measure the control
loop your system does. Usually you would measure several thousands of
cycles to get min, max and average times. If you have background services
to run, you do measures under load (with other services) and without load.

The OS latencies (in the driver etc) is a more difficult stuff. If the OS
does not have means to measure these times (VxWorks has), you still can
estimate these by subtracting known durations from the whole cycle time.
You can also use digital outputs which are considerably faster than
analogue ones and the oscilloscope, etc. You can calibrate digital output
times by measuring many thousands of write-cycles and taking the mean.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de


  parent reply	other threads:[~2014-02-07  8:42 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-06  0:53 Raspberry Pi, Real-Time and Ada Rego, P.
2014-02-06  7:50 ` Stephen Leake
2014-02-06  8:44   ` Dmitry A. Kazakov
2014-02-06 13:16     ` Simon Clubley
2014-02-06 21:12       ` Rego, P.
2014-02-07  0:26         ` Simon Clubley
2014-02-07 11:44           ` Rego, P.
2014-02-06 21:09     ` Rego, P.
2014-02-06 21:04   ` Rego, P.
2014-02-07  8:28     ` Stephen Leake
2014-02-07 12:09       ` Rego, P.
2014-02-08  8:28         ` Stephen Leake
2014-02-08  9:06           ` Dmitry A. Kazakov
2014-02-10 18:18           ` Rego, P.
2014-02-13 15:23             ` Stephen Leake
2014-02-07  8:42     ` Dmitry A. Kazakov [this message]
2014-02-07 12:34       ` Rego, P.
2014-02-07 12:59         ` Dmitry A. Kazakov
2014-02-07 13:25           ` Rego, P.
2014-02-07 23:11       ` Rego, P.
2014-02-08  8:56         ` Dmitry A. Kazakov
2014-02-10 18:29           ` Rego, P.
2014-02-10 20:38             ` Dmitry A. Kazakov
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox