Real-Time
Real time is being able to respond to an interrupt in a bounded maximum time.
An analysis by OMAC User Group showed that 95% of real-time applications require between 0.5ms to 10 ms respond time and could tolerate 10% variations, or 50µs to 1ms of jitter.
The important thing is to be able to respond with a sufficient amount of time to handle
the interrupt before exceeding the system’s required tolerances. And to be able to do
so consistently. Always responding within a bounded amount of time.
Real World Example
- A Microsoft partner wanted to know if Windows CE was ‘HARD’ real-time
- Wanted to know if CE was capable of running GSM radio and UI at the same with one CPU.
- They were concerned that CE was not HARD real-time enough to meet the requirements
- The requirements
- Run GSM cellular radio DSP
- Meet “tight” timing requirements
- Target CPU ARM9 250Mhz
- Full Windows CE UI
- And play video
Real World Timing Requirements
- So what where the actually requirements?
- Interrupt every 4.6 ms
- Allowable jitter of 0.5us
Windows CE Test Results
We did a quick test using the following configuration:
- Samsung SMDK2410 development board
- 200 MHz ARM with 16x16 cache
- Windows CE 5.0 with full UI
- Running a WMV video
Here’s what we got:
Value |
ISR starts |
IST starts |
Minimum |
1.2 |
31.7 |
Average |
3.3 |
67.2 |
Maximum |
13.3 |
103.0 |
Result
- In terms of the 0.5 ms Jitter alone
- Longest ISR response time was 13.3 μs or 2.6% of max jitter allowed
- Longest IST response time was 103 μs or 20.6% of max jitter allowed
- Conclusion
- Response time was well within the requirements.
- The project was approved and went ahead.
- Lesson
- What’s important is “Sufficient” time