Home
ESRG 2012-07-01 - Leicester Research Archive
Contents
1. Problem How will you decide which form of time triggered scheduler should you use for your application Background TT schedulers that we can use can take two forms Co operative and Pre emptive Both of these types of schedulers provide various options some of these options are given below 1 Co operative Schedulers a Super loop b TTC Dispatch 2 Pre emptive Schedulers a Full Pre emption i TTRM Scheduler b Limited Pre emption i TTH Scheduler In co operative scheduling tasks co operate with each other and wait for their turn to execute until the currently running task finishes execution In pre emptive scheduling a task of higher priority which is ready to execute can pre empt a currently running task of lower priority Overview of TT Schedulers TTC SL Scheduler The simplest way of implementing a TTC scheduler is by means of a Super Loop or Endless loop e g Pont 2001 Kurian and Pont 2007 A possible implementation of such a scheduler is illustrated in Listing 3 ESRG 2012 07 01 Version 1 0 Page 12 int main void while 1 TaskA Delay 6ms TaskB Delay 6ms TaskC Delay 6ms Should never reach her return 1 Listing 3 Illustrating a TTC Super Loop Scheduler Applications based on a TTC SL SCHEDULER have extremely small resource requirements Systems based on such a pattern if used appropriately can be both reliable and safe because the
2. solve the long task short response time problem then you can maintain the core co operative scheduler and add only the limited degree of pre emption that is required to meet the needs of your application For example in the case of our ECG system we can use time triggered hybrid architecture In this case we allow a single pre empting task to operate in our ECG system this task will be used for data acquisition This is a time triggered task and such tasks will generally be implemented as a function call from the timer ISR which is used to drive the core TTC scheduler As we have discussed in detail elsewhere Pont 2001 Chapter 17 this architecture is extremely easy to implement and can operate with very high reliability As such it is one of a number of architectures based on a TTC scheduler which are cooperatively based but also provide a controlled degree of pre emption ESRG 2012 07 01 Version 1 0 Page 16 When to use TTRM If both TTC and TTH architectures are not appropriate for your application and full pre emption is a necessary then TTRM architecture may match your requirements Overall it has been claimed that the main advantage of TTRM scheduling is flexibility during design or maintenance phases and that such flexibility can reduce the total life cost of the system Locke 1992 Bate 1998 The schedulability of the system can be determined based on the total CPU utilisation of the task set as a result whe
3. ET and TT architectures have been compared in previous studies Kopetz 1991 Albert and Bosch GmbH 2004 Scarlett and Brennan 2006 Scheler and Schroder Preikschat 2006 Co operative schedulers have a number of desirable features particularly for use in safety related systems Buttazzo 1997 Kopetz 1997 Pont 2001 Compared to a pre emptive scheduler co operative schedulers can be identified as being simpler having lower overheads being easier to test and having greater support from certification authorities Bate 1998 Liu 2000 Resource sharing in co operative schedulers is also a straightforward process requiring no special design considerations as is the case with pre emptive systems Cottet Delacroix et al 2002 The simplicity may suggest better predictability while simultaneously necessitating a careful design to realise the theoretical predictions in practice One of the simplest implementations of a co operative scheduler is a cyclic executive Baker and Shaw 1988 Locke 1992 Burns and Wellings 1994 this is one form of a broad class of time triggered co operative TTC architectures With appropriate implementations TTC architectures are a good match for a wide range of applications such as automotive applications Ayavoo Pont et al 2005 Ayavoo 2006 wireless ECG monitoring systems Phatrapornnant and Pont 2006 various control applications Schlindwein Smith et al 1988 data acquisition systems washi
4. Pattern Context e You are developing an embedded system using a computer system with CPU and or memory resources which are compared with typical desktop designs rather limited e Your system employs a single CPU e Your system employs a TT SCHEDULER see Pont et al this conference e Your system supports task pre emption e Your tasks may have nested shared resources e Predictable system behaviour is a key design requirement in particular predictable task timing is a concern Problem How can we ensure that the shared resources are mutually exclusive and that priority inversion deadlock and blocking chains are avoided Background For background information about shared resources please refer to the abstract pattern CRITICAL SECTION Solution The pattern is intended to help you answer the question How can we ensure that the shared resources are mutually exclusive and that priority inversion deadlock and blocking chains are avoided Nested resource locks are the underlying cause of deadlock and blocking chains Therefore the simplest solution is to avoid nested resource locks at the design stage indeed some operating systems do not allow use of nested locks Sha Rajkumar et al 1990 presented an alternative solution to the priority inheritance protocol this was the priority ceiling protocol PCP However this original priority ceiling protocol is expensive to implement A simplified version
5. System executing two functions using timer ISR According to Listing 1 function Do _X will be executed every 10ms Similarly function Do_Y will be executed every 10 ms after Do _X completes For many resource constrained applications for example control systems this architecture may be appropriate However in some cases the risk of jitter in the start times of function Do_Y may cause problems Such jitter will arise if there is any variation in the duration of function Do_X In Figure 32 the jitter is reflected in differences between the values of ty and ty2 for example ph 5 1 1 Time Figure 32 The impact of variations in the duration of Do_X on the release jitter of Do_Y Solution A SANDWICH DELAY can be used to solve this type of problem More specifically a SANDWICH DELAY provides a simple but highly effective means of ensuring that a particular piece of code always takes the same period of time to execute this is done using two timer operations to sandwich the activity you need to perform Please refer to code segment in Listing 7 ESRG 2012 07 01 Version 1 0 Page 51 ISR invoked by timer overflow every 10ms void Timer ISR void Execute Do X in a Sandwich Delay BEGIN Set_Sandwich Timer overflow 5 Set timer to overflow after 5 ms Do X Execute Do X WCET approx 4 0ms Wait_Sandwich Timer Overflow Wait for timer to overflow Execu
6. has duration greater than the system tick and so is missing the next tick intervals Figure 14 A schematic representation of the problems caused by sending a long character string on an embedded system In this case sending the massage takes 42 ms while the System tick interval is 10 ms ESRG 2012 07 01 Version 1 0 Page 24 Perhaps the most obvious way of addressing this issue is to increase the baud rate however this is not always possible and even with very high baud rates long messages or irregular bursts of data can still cause difficulties More generally the underlying problem here is that the data transfer operation has a duration which depends on the length of the string which we wish to submit As such the worst case execution time WCET of the data transfer task is highly variable and in a general case may vary depending on conditions at run time In a TTC design we need to know all WCET data for all tasks at design time We require a different system design As Gergeleit and Nett 2002 have noted Nearly all known real time scheduling approaches rely on the knowledge of WCETs for all tasks of the system The known WCET of tasks will be helpful for developers in designing the offline schedule and preventing task overrun Solution Convert a long data transfer task which is called infrequently and may have a variable duration into a periodic task which is called comparatively frequently and which has a
7. main lt gt Dispatch rro Figure 43 Task Guardian mechanism ESRG 2012 07 01 Version 1 0 Page 66 Detection of task overrun In order for the update task function to know that an overrun has occurred and take appropriate action a simple and reliable method is required to detect overruns Modifying the code in Dispatch where the tasks are launched enables this to be achieved Using a variable such as Taskover the task ID can be stored before the task is executed Listing 15 When the task complete Taskover is assigned a value of 255 a reserved ID to indicate successful task completion Taskover Index Store task ID SCH_ tasks G Index pTask Run the task Taskover 255 Task completed Listing 15 Detection of task overrun in dispatch Returning from update If a task overrun has occurred then Update must alter its return address so that instead of returning to the overrunning task it returns to End_ Task see Figure 43 Please note that the End_Task function is required because Update is an FIQ Fast Interrupt Request ISR which in the ARM architecture used here has a separate stack and hence a different set of frames unlike Update End_Task runs in User mode and therefore has access to the stack and frames used by the overrunning task It is the job of End_Task to back trace and rewind the function calls until the return address to Dispatch is located The end task function then returns
8. 01 Version 1 0 Page 56 TAKE A NAP Pattern Context e You are using the pattern BALANCED SYSTEM e You are using a system which is extremely power constrained Problem How would you ensure the WCET of your application code sections involving loop and decision structures remains constant with negligible increase in power consumption Background SANDWICH DELAY and SINGLE PATH DELAY provide ways to achieve fixed execution time In systems where power consumption is a concern neither a SANDWICH DELAY nor a SINGLE PATH DELAY is an attractive solution because to achieve balanced code we need to run the CPU at full power at all times For such systems we need to find out a way to achieve balanced code without any extra power consumption Solution For systems which are extremely resource constrained especially power TAKE A NAP provides a way to achieve balanced code with reduced power consumption Create balanced code by putting the control flow statement within a Sandwich Delay see pattern SANDWICH DELAY This will ensure that the particular piece of code will always have a constant execution time For example consider the code segment given in Listing 11 for i 0 i lt x itt body of the loop Listing 11 Simple For Loop The execution time of the loop is dependent on the value of the variable x Let MAX be equal to the maximum number of iterations the loop can execute Let Time x be equ
9. 2002 In this case the blocking time of Tasky will not exceed the duration of the critical section C of Task Priority Normal Code Critical Section PraskH Figure 19 Operation Sequences of TaskH and TaskL Priority e Blocked Normal Code e Critical Section PraskH Figure 20 Bounded Priority Inversion We further suppose that Tasky with medium priority pre empts Task when Tasky is blocked by Task the owner of the shared resource at this time Tasky then has to wait until Tasky relinquishes control of the processor and Task completes the critical section For example see Figure 21 here at t4 Task pre empts Task ESRG 2012 07 01 Version 1 0 Page 31 Priority Bl Blocked Normal Code el Critical Section PraskH Praskm Figure 21 Unbounded Priority Inversion In these circumstances the worst case waiting time for Tasky is the sum of the worst case execution times of Tasky and the critical section of Task This is called unbounded priority inversion Renwick 2004 If Tasky runs for a long time or for ever Tasky is likely to may miss its deadline with potentially serious consequences shown as a system reset in Figure 21 Unbounded priority inversion can be particularly problematic For example in 1997 the Mars Pathfinder mission nearly failed because of an undetected unbounded priority inversion Jones 1997 What is deadlock As noted above a locking mechanism may lead to p
10. Industrial Technology Ramachandran B K Fujiwara et al 2006 Business process transformation patterns amp the business process transformation wizard Proceedings of the 38th conference on Winter Simulation Monterey California Renwick K 2004 How to use priority inheritance from http www embedded com showArticle jhtml article ID 20600062 Rising L Ed 2001 Design Patterns in Communication Software Cambridge University Press Scarlett J J and R W Brennan 2006 Re evaluating Event Triggered and Time Triggered Systems IEEE conference on Emerging technologies and factory automation 655 661 Scheler F and W Schroder Preikschat 2006 Time triggered vs event triggered A matter of configuration MMB Workshop Proceedings GI ITG Workshop on Non Functional Properties of Embedded Systems Nuremberg Berlin VDE Verlag Schlindwein F S M J Smith et al 1988 Spectral analysis of doppler signals an computations of the normalized first moment in real time using a digital siganl processor Medical and Biological Engineering amp Computing 26 228 232 Sha L R Rajkumar et al 1990 Priority Inheritance Protocols an approach to real time synchronization IEEE Transactions on Computers 39 9 1175 1185 Simon D E 2001 An Embedded Software Premier Addison Wesley ACM Press Tindell K W A Burns et al 1994 An Extendible Approach for Analyzing Fixed Priority Hard Real time Tasks Real Tim
11. does not fully guarantee the system predictability as there are a number of other factors which could make a TT system unpredictable The parameters of tasks which are running under a TT architecture such as release time execution time finish time and deadline are required to be known in advance The prior knowledge of these parameters plays an important role in guaranteeing the overall predictability of the system However systems that run in practice generally show considerable variations in these parameters These variations are termed as jitter Jitter in tasks To understand the concept of jitter more clearly consider the different instances of a task Task A as shown in Figure 31 For tasks in TT systems release time can be considered as the point at which we would ideally expect a task to start its execution In actual practice this is delayed due to factors such as scheduler overhead and variable interrupt response times Liu 2000 Maaita and Pont 2005 The actual start time of a task is always deviated from its pre determined release time and we can say that tasks always suffer from release jitter see unequal values of x1 x2 and x3 in Figure 31 ESRG 2012 07 01 Version 1 0 Page 48 Figure 31 Illustration of jitter in different calls of a periodic task In real time systems one important parameter is the upper bound of the execution time for a task known as worst case execution time WCET Unfortunately determining WCET o
12. of the original PCP is widely used Locke 2002 In this pattern we refer to this as the Improved Priority Ceiling Protocol IPCP In IPCP each task has an assigned static priority each resource has also been assigned a priority which is the highest priority of tasks that need access it 1 e its priority ceiling Burns and Wellings 1997 When a task acquires a shared resource the task is raised to its ceiling priority 4 IPCP is often referred to incorrectly as the priority ceiling protocol What we refer to as IPCP here is also known as the Priority Ceiling Emulation in Real Time Java Priority Protect Protocol in POSIX and as the Immediate Ceiling Priority Protocol Burns and Wellings 1997 ESRG 2012 07 01 Version 1 0 Page 44 Therefore the task will not be pre empted by any other tasks attempting to access the same resource with the same priority When the task releases the resource the task is returned to its original priority The deadlock case shown in Figure 23 is illustrated in Figure 27 to explain how IPCP works Tasky and Task access both resources C1 and C2 Thereby the ceiling priorities of C1 Pe and C2 Py are the priority of Tasky Prasun Task runs first At t it needs to access C2 according to IPCP it will be raised to the ceiling priority of C1 which equals to Prasxy At t2 Tasky is ready to run However its priority is the same as the dynamic priority of Task It will not able to pre emp
13. state every time Power saving mode or sleep idle mode is available in almost all embedded processor for example ARM7 and 8051 family of processors We are naming the extra timer used for this purpose as PP timer being use for PLANNED PRE EMPTION To set the overflow value of the PP timer it is important to know the WCET in advance so that the processor can have enough time to go to sleep mode before the scheduler timer interrupt occurs PLANNED PRE EMPTION will reduce the tick jitter as the time required to leave the sleep ESRG 2012 07 01 Version 1 0 Page 60 mode and pursue normal execution is a static value Martin 2005 Figure 39 illustrates the implementation of PLANNED PRE EMPTION Interrupt Time ms El Pre emptive task E Co operative task Interrupt Time ms Interrupt Service non variable service time Processor in Sleep mode Figure 39 Operation of Planned pre emption All interrupts occur when the processor is in sleep mode while 1 C Dispatch Dispatch Co op tasks void C_Dispatch void Go through the task array Execute Co operative tasks as required The scheduler may enter idle mode at this point Sleep void P Dispatch ISR void ITimer Start idle timer P Task Dispatch pre emptive task void Idle Timer ISR void Sleep Listing 14 TTH PP Scheduler Reliability and safety implications Designers have to be careful
14. suite your application requirements Pattern TT SCHEDULER provides comprehensive details To summarise Choose Co operative architecture if your system requirements could be met without any pre emption involved All the tasks in the system will be co operative For details see pattern CO OPERATIVE SCHEDULER Choose HYBRID SCHEDULER if limited pre emption only a single pre emptive task can fulfil the requirements of the system All the other tasks in the system will be co operative Details about implementing such architecture are documented in pattern Choose PRE EMPTIVE Scheduler for full pre emption in the system Related patterns and alternative solutions The PTTES collection The PTTES collection Pont 2001 describes in detail a range of techniques which can be used to implement embedded systems with TTC architecture This book can now be downloaded free of charge from the following WWW site http www tte systems com books pttes TT Schedulers The pattern TT SCHEDULER provides relevant background information and the situations in which it may be appropriate to use a TT scheduler in your application Reliability and safety implications When compared to pre emptive schedulers co operative schedulers have a number of desirable features particularly for use in safety related systems Allworth 1981 Ward 1991 Nissanke 1997 Bate 2000 For example Nissanke 1997 p 237 notes Pre emptive schedules carry
15. task timing is a concern Problem What is the simplest way of ensuring safe access to shared resources in your system Background We provide some relevant background material in this section What is a shared resource For background information about shared resources please refer to the abstract pattern CRITICAL SECTION The role of interrupts in TT systems In general an interrupt is a signal that is used to inform the processor that an event has occurred Such an event may include a timer overflow completion of an A D conversion or arrival of data in a serial port In TT systems we only have a single interrupt source linked to a timer overflow Solution This pattern is intended to describe the simplest way of avoiding conflicts over shared resources in a TT system which involves task pre emption As noted in Background only a single interrupt is enabled in a time triggered system This interrupt will be used to drive the scheduler Pont 2001 If we disable this interrupt the scheduler will be disabled This gives us a simple mechanism to avoid conflicts over resources as follows e When a task accesses a shared resource it disables the timer interrupt e When the task has finished with the resource it re enables the timer interrupt e During the time that our task is using the shared resource the scheduler is disabled This means that no context switch can occur and no other task can attempt to gain access to t
16. tasks in your application in a manner which is compatible with TTC architecture Background We illustrate the need for the present pattern with an example Suppose we wish to transfer data to a PC at a standard 9600 baud Transmitting each byte of data plus stop and start bits involves the transmission of 10 bits of information assuming a single stop bit is used As a result each byte takes approximately 1 ms to transmit Now suppose we wish to send this information to the PC Current core temperature is 36 678 degrees If we use a standard function such as some form of printf the task sending these 42 characters will take more than 40 milliseconds to complete In a system supporting task pre emption we may be able to treat this as a low priority task and let it run as required This approach is not without difficulties for example if a high priority task requires access to the same communication interface while the low priority task is running However with appropriate system design we will be able to make this operate correctly under most circumstances Now consider the equivalent TTC design We can t support task pre emption and a long data transmission task around 40 ms is likely to cause significant problems More specifically if this time is greater than the system tick interval often 1 ms rarely greater than 10 ms then this is likely to present a problem as shown in Figure 14 The RS 232 task is a long task
17. the pattern BALANCED SYSTEM e You have decided to balance sections of code involving loops and decision structures implemented within the application tasks Problem How would you ensure that the execution time of your application code sections involving loop and decision structures will remain fixed every time they run Background Variable execution times of tasks can lead to unpredictable behaviour in systems To understand this more clearly consider a system running tasks A B and C as shown in Figure 35 System ticks Time Figure 35 Tasks scheduled to be run in a TT system If for any reason task A takes a longer time to run than expected task C will run before task B if it has higher priority than task B and task B will not be able to finish within the system tick as shown in Figure 36 System tick Time Figure 36 Illustration of overall change in system behaviour if the execution time of task A takes longer than expected The point to be noted here is if task A varies in duration it will affect the overall system behaviour Tasks involving loops and decision structures e g if else switch etc are more likely to have variable execution times If such tasks can be balanced we can achieve more stable and predictable system behaviour Solution SINGLE PATH helps to achieve fixed execution time for tasks involving decision structures and loop statements The single path programming approach was intro
18. timer interrupt to occur after duration Time MAX x Set Timer Intterrupt Time MAX x safety margin Put processor to sleep Processor Sleep Listing 12 Balancing of sections with reduced power consumption It must be noted that the for loop in code segment above must run at least once for the value of Time MAX x to be determined Furthermore a small safety margin has been added to the calculated time to ensure that there is sufficient time for the processor to enter sleep mode even when the loop is executed for the maximum number of iterations TAKE A NAP may also be applied to other control flow and conditional branching statements such as while if else and switch Overall strengths and weaknesses A simple technique for improving system reliability by providing an additional layer of predictability is described here Ensures fixed execution time for each task in the system along with reduced power consumption The maximum number of iterations of the control flow statement i e the value of MAX must be known in advance Requires exclusive access to a hardware timer ESRG 2012 07 01 Version 1 0 Page 58 PLANNED PRE EMPTION Pattern Context e You are using the pattern BALANCED SYSTEM e Your system is based on a time triggered scheduler specifically on TTH architecture Problem How would you ensure the predictable scheduler behaviour in TTH designs Background Some bac
19. while using the second timer The timer should overflow after most of the interval between pre emptive ticks has elapsed A more efficient implementation in terms of the hardware utilised is to use a second match register on the original scheduler timer For example ARM7TDMI supports multiple match registers per timer UM10211 2009 Overall strengths and weaknesses Produces a more predictable TTH system Provides a simple way of getting non variable timer interrupt response times which reduce the tick jitter ESRG 2012 07 01 Version 1 0 Page 61 Makes use of exclusive hardware timer Slight increase in memory requirements because of increased code size than normal TTH scheduler ESRG 2012 07 01 Version 1 0 Page 62 SYSTEM MONITOR Abstract pattern Context e You are in the process of creating or upgrading an embedded system based on a single processor e Because predictable and highly reliable system operation is a key design requirement you have opted to employ a time triggered system architecture in your system Problem How will you make sure that your system will not hang and will keep on functioning despite unfavourable conditions Background If your application is to be reliable you need to be able to guarantee that the system should be capable of handling situations which could possibly hang the system Some of such possibilities are e Incorrect initialisation of hardware pe
20. 2 for storing the results of expr1 and expr2 respectively The conditional move instruction movt copies the value of temp1 to the variable result if the test condition evaluates to true otherwise processor performs a no operation NOP instruction On the other hand if the test condition evaluates to false mov will copy the value of temp2 to result otherwise NOP instruction will be executed In this way the translation basically generates a sequential code as shown in the right hand side code segment in Listing 8 if cond templ exprl temp2 expr2 result exprl test cond else movt result templ result expr2 movf result temp2 Listing 8 Sequential code generated from a branching statement using if conversion adapted from Puschner 2003 Translation of loops Consider a while loop as shown in Listing 9 which executes a set of statements based on two conditions being true a pre condition cond old and a condition cond new precondition cond old while cond new do max expr times ESRG 2012 07 01 Version 1 0 Page 55 stmts Listing 9 Original while loop adapted from Puschner 2003 To translate this loop to have a single path of execution a boolean variable finished is introduced this variable stores information as to whether the original loop has executed the current iteration or has already terminated The while loop shown in Listing 9 above can be translated a
21. C in all ticks Changing the offset of Task C can help to keep the jitter value constant in all the ticks see Table 4 and Figure 11 Table 3 Task offset that can cause varied jitter in Task C Task WCET ms Deadline ms Period ms Offset ticks A 1 5 5 0 B 1 5 20 20 0 C 1 10 10 0 ESRG 2012 07 01 Version 1 0 Page 20 Table 4 Changing the offset of Task C to 1 can make the jitter constant for all task instances 10 10 15 15 20 20 Time ms Time ms Time ms Figure 10 Illustrating Tasks shown in Table 4 above Task WCET ms Deadline ms Period ms Offset ticks A 1 5 5 0 B 1 5 20 20 0 C 1 10 10 1 10 10 15 20 20 15 20 Time ms Time ms Time ms Figure 11 Changing of task offset can keep the jitter constant Choosing correct task order Task order can also affect jitter It is important to consider the task order for jitter sensitive tasks For example consider the schedule given in Table 5 and Figure 12 ES RG 2012 07 01 Version 1 0 Page 21 Table 5 Example of incorrect order of task set which can cause varied jitter in task C Task WCET ms Deadline ms Period ms Offset ticks A 2 10 10 0 B 3 20 20 0 C 4 30 30 0 Time ms 20 Time ms 20 Time ms Figure 12 Task C showing variations in jitter because of inco
22. ESRG 2012 07 01 Version 1 0 Page 46 Priority El Blocked ex Critical Section1 le Critical Section2 Normal Code PraskH tl t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 Figure 30 Operational sequences of three tasks with IPCP Alternative solutions Combining tasks Finally it is worth noting that the problems caused when several tasks use the same resource can sometimes be solved most simply by combining the different tasks into a single task Renwick 2004 Reliability and safety implications IPCP is an attractive choice when there may be nested locks among tasks Preventing deadlock and blocking chains can increase the stability of a system Compared with DISABLE TIMER INTERRUPT IPCP is more difficult to implement and test An appropriate software architecture design is needed that avoids unnecessary coupling between tasks through shared resources Locke 2002 and avoids nested resources if possible Overall strengths and weaknesses Prevents priority inversion Prevents deadlock and blocking chains Has better worst case performance than PIP The worst case wait time for a high priority task waiting for a shared resource is limited to the longest critical section of any lower priority tasks that accesses the shared resource S Difficult to implement Requires static analysis of a system to find the priority ceiling of each critical section amp Average case performance is worse than PIP IPCP
23. OUTPUT When to use TTH For systems where TTC is not an appropriate choice avoid jumping to fully pre emptive architectures as they incur higher overheads because of context switching involved during task pre emption Check for TTH solution which provides a limited level of pre emption For example consider a wireless electrocardiogram ECG system An ECG is an electrical recording of the heart that is used for investigating heart disease In a hospital environment ECGs normally have 12 leads standard leads augmented limb leads and precordial leads and can plot 250 sample points per second at minimum In the portable ECG system considered here three standard leads Lead I Lead II and Lead III were recorded at 500 Hz The electrical signal were sampled using a 12 bit ADC and after compression the data were passed to a Bluetooth module for transmission to a notebook PC for analysis by a clinician see Phatrapornnant and Pont 2006 In one version of this system we are required to perform the following tasks e Sample the data continuously at a rate of 500 Hz Sampling takes less than 0 1 ms e When we have 10 samples that is every 20 ms compress and transmit the data a process which takes a total of 6 7 ms In this case we will assume that the compression task cannot be neatly decomposed into a sequence of shorter tasks and we therefore cannot employ a pure TTC architecture However even if you cannot cleanly
24. RG 2012 07 01 Version 1 0 Page 26 POLLED INPUT Pattern Context e You are applying the pattern EVENTS To TIME e You need to make your system responsive to external inputs through interface like switches Problem How do you build a time triggered TT system which is equivalent of your event triggered ET system such that it can respond to all external internal input interfaces Background Designing a TT system requires more planning efforts In a time triggered co operative TTC design the possible occurrence and the execution times of all the tasks needs to be known in advance The designer has to plan a task schedule which must execute all the tasks periodically at their allocated time intervals This effort makes the system more predictable In contrast to this in an event triggered system the scheduler executes the tasks dynamically as the events arrive thus no guarantee that they meet any timeliness constraints This is the reason that ET designs are not recommended for safety critical applications The event triggered behaviour in systems is achieved through the use of interrupts To support these interrupts Interrupt Service Routines ISRs are provided Whenever an interrupt occurs it stops the currently running task and ISR executes to respond to the interrupt This context switching is an overhead that sometimes raised serious complications in systems The abstract pattern EVENTS TO TIME provides more relevant
25. Related patterns and alternative solutions In situations where you have more than two levels of task priority and you use a lock you will generally need to use an appropriate locking protocol to avoid problems with priority inversion ESRG 2012 07 01 Version 1 0 Page 37 deadlock and chained blocking CRITICAL SECTION provides background information on these topics The patterns PRIORITY INHERITANCE PROTOCOL and IMPROVED PRIORITY CEILING PROTOCOL describe solutions to some of the problems caused by use of resource locks in systems with more than 2 levels of task priority Reliability and safety implications As discussed in CRITICAL SECTION this paper use of a resource lock can give rise to problems of priority inversion The patterns PRIORITY INHERITANCE PROTOCOL and IMPROVED PRIORITY CEILING PROTOCOL provide partial solutions to this problem Overall strengths and weaknesses Easy to implement May give rise to priority inversion if not implemented with care ESRG 2012 07 01 Version 1 0 Page 38 DISABLE TIMER INTERRUPT Pattern Context e You are developing an embedded system using a computer system with CPU and or memory resources which are compared with typical desktop designs rather limited e Your system employs a single CPU e Your system employs a TT SCHEDULER e Your system supports task pre emption e Predictable system behaviour is a key design requirement in particular predictable
26. SABLE TIMER INTERRUPTS Solution The pattern is intended to help you answer the question How can you implement a resource lock for your embedded system A lock appears at first inspection very easy to implement Before entering the critical section of code we lock the associated resource when we have finished with the resource we unlock it While locked no other process may enter the critical section This is one way we might try to achieve this Task A checks the lock for Port X it wishes to access If the section is locked Task A waits When the port is unlocked Task A sets the lock and then uses the port When Task A has finished with the port it leaves the critical section and unlocks the port E tae Implementing this algorithm in code also seems straightforward as illustrated in Listing 5 ESRG 2012 07 01 Version 1 0 Page 36 define UNLOCKED 0 define LOCKED Al bit Lock Global lock flag TD aws Ready to enter critical section Wait for lock to become clear FOR SIMPLICITY NO TIMEOUT CAPABILITY IS SHOWN while Lock LOCKED Lock is clear Enter critical section Set the lock Lock LOCKED CRITICAL CODE HERE Ready to leave critical section Release the lock Lock UNLOCKED PI ora Listing 5 Attempting to implement a simple locking mechanism in a pre emptive scheduler However the above code cannot be guaranteed to work correctl
27. Supporting the migration between event triggered and time triggered software architectures A small pattern collection intended for use by the developers of reliable embedded systems Farah Lakhani Huiyan Wang and Michael J Pont Embedded Systems Research Group University of Leicester University Road Leicester LE1 7RH UK Technical report ESRG 2012 07 01 Version 1 0 EX University of v Leicester Table of Contents gt E e 5 tro dC A si 2 Desion Patol 2 EF and ec AAA A A A A ON 3 small patera Coco E E da dE A Aaa 4 TIME FOR TIA ait areas see Rehan Saute na ea ca tae NO alae ee oat eae hat 6 EVENTS TO TIME Sit A 8 TIAS CAEN UREA di 12 CHOOSING TASK PARAMETERS 30000 ai ea 18 BUFFERED OQUTPUT haeso D ae e E A ci 24 POE A A A OAA EEA E A 27 CRITICAL SECTION e 29 RESOURCE LOCK rrer eaae aE E en 36 DISABLE TIMER INTERRUPT ooer deuien a E ET a A E ETE 39 PRIORITY INHERITANCE PROTOCOL ri 41 IMPROVED PRIORITY CEILING PROTOCOL ooocococncnccncconnncnnnocoro enna eee occ rn nn naar ocaso 44 BALANCED VS TEM ue lunar Decadencia 47 SANDWICH DELAY e een e de 51 SINGLE PAT as 54 TAREA NAP St ia A Ada 57 PLANNED PRE EMPTION 2 ses E as oe arene A co eae eed as 59 SA MR A cont Od ate a OR eRe oe OS LU cc seo 63 TASK GUARDIAN gies Na A a 65 References criada aaa aida 69 ESRG 2012 07 01 Version 1 0 Page 1 1 Introduction Many complex embedded systems in areas such as aerospace and defence for examp
28. a single processor e Because predictable and highly reliable system operation is a key design requirement you have opted to employ a time triggered system architecture in your system if this proves practical Problem How can you choose your tasks parameters such as offset and task order to allow effective use of a TT Scheduler as the basis of your embedded system Background Whether a TTC or TTH implementation is used a number of key scheduler task parameters must be determined including the tick interval task order and initial delay or phase of each task Inappropriate choices may mean that a given task set cannot be scheduled at all or inappropriate decisions may still lead to unnecessarily high levels of task jitter The following parameters are used to characterise each task Liu and Layland 1973 Tindell Burns et al 1994 Buttazzo 1997 1 Period pj is the time interval after which task T should be repeated in other words it is the length of time between every two invocations 2 Offset 0 is the time measured from the start of the system power on after which the first period of task T starts 3 Start time s This is the time at which task starts its execution 4 Release time r is the time measured from the start of the task period after which task T becomes ready to run 5 Finish time f This is the time at which task completes its execution 6 Deadline dj is the time before whi
29. al 1977 Alexander 1979 between 1975 and 1979 that laid the foundation of use of patterns in the field of architecture He defines a pattern as a three part rule which expresses a relation between a certain context a problem and a solution The general nature of this concept makes design patterns a useful tool beyond the architecture In particular Alexander s techniques have been adopted by the software engineering community Ward Cunningham and Kent Beck introduced the first software pattern language Cunningham 1987 which consisted of 5 design patterns intended to be used by Smalltalk programmers who were designing graphical user interfaces The pattern collection by Gamma et al Gamma Helm et al 1995 for object oriented programming and has been very influential Examples of patterns for telecommunication includes the work of Hanmer Hanmer and Stymfal 2000 Hanmer 2007 which focuses on fault tolerant software systems and the work of Linda Rising Rising 2001 There are examples of organisational patterns by Cain Coplien and Harrison Cain Coplien et al 1996 these seek to document best practice for productive software development from successful organisations There have also been patterns produced which describe how to introduce new ideas into an organisation Ramachandran Fujiwara et al 2006 In the field of embedded systems most previous work with design patterns has focused on the process of system constru
30. al to the time spent in executing x iterations The value of Time x may be measured using hardware timers Therefore the time spent in performing MAX x iterations may be calculated using the value of Time x as follows Time MAX x MAX x Time x x 1 Once the for loop executes x number of times the processor is put to sleep for a duration equal to Time MAX x A timer interrupt may be generated when the hardware timer count reaches ESRG 2012 07 01 Version 1 0 Page 57 the value Time MAX x and this can be used to awaken the processor Using this technique code segment in Listing 6 is ensured to always irrespective of the value of x have a constant execution time equal to the value of Time MAX 1 e the time spent in executing MAX number of iterations of the for loop Thus in addition to enabling a power saving mode of the processor the resulting balanced code with the SANDWICH DELAY incorporated provides an additional layer of predictability to the real time system The balanced version of the code segment in Listing 11 may be written as shown in Listing 12 start the timer Timer Start for i 0 i lt x itt body of the loop stop the timer Timer Stop Store timer count value after x iterations Time x Timer Count Value Determine value of Time MAX x Time MAX x MAX x Time x x Reset the timer Timer Reset Set the
31. an be scheduled by this algorithm Task T1 is executed periodically at the fastest rate every 10 ms and is determined to be the highest priority in this scheduling policy while task T2 and T3 which are run every 20 and 40 ms respectively have lower priority levels according to their rates A task scheduled by the TTRM algorithm can be pre empted by a higher priority task As illustrated in Figure5 task T3 which is running is pre empted by task T1 is at time 10 it carries on after the completion of task T1 TTH architectures Where a TTC architecture is not found to be suitable for a particular system use of a TTRM design may not be necessary For example a single time triggered pre empting task can be added to a TTC architecture to give what we have called a time triggered hybrid TTH scheduler Pont 2001 Maaita and Pont 2005 and others have called a multi rate executive with interrupts Kalinsky 2001 Use of a TTH SCHEDULER allows the system designer to create a static schedule made up of i a collection of tasks which operate co operatively and 11 a single short pre empting task see Figure 6 In many of the systems employing a TTH architecture the pre empting task will be used for periodic data acquisition typically through an analogue to digital converter or similar device Such requirements are common in for example control systems Buttazzo 2005 and applications which involve data sampling and Fas
32. any task overrun in the system should be detected and handled so that system can continue functioning properly Background Despite many advantages a pure TTC architecture has a failure mode which has the potential to greatly impair system performance this failure mode relates to the possibility of task overruns see Figure 40 z E a E t 0 1 2 3 4 5 E 5 b ee t 0 1 2 3 4 5 Figure 40 Illustrating the impact of task overrun on TTC based system Figure 40 a illustrates a TTCS design running two tasks A and B Task A runs every millisecond and Task B runs every 5ms This system operates as required since the duration of Task A never exceeds 0 4 ms Figure 40 b illustrates the problems that result when Task A overruns in this case we assume that the duration of Task A increases to approximately 5 5ms The co operative nature of the scheduling in this architecture means that this task overrun has very serious consequences In practice the situation may be even more extreme in this example if Task A never completes then Task B will never run again During normal operation of the TTC architecture described by Pont 2001 the first function to be run after the startup code is Main Main calls Dispatch which in turn launches any tasks which are currently scheduled to execute Once these tasks are completed Dispatch calls Sleep placing the processor into a suitable idle mode A timer based interrupt occurs ev
33. askH E E a A E Critical Section2 PraskM les Critical Section tl t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 Figure 28 Operational sequences of three tasks with two shared resources Priority El Blocked les Critical Section1 lel Critical Section2 Normal Code PraskH tl t2 t3 t4 ts t6 t7 t8 t9 t10 t11 t12 Figure 29 Operational sequences of three tasks with PCP Figure 29 illustrates how PCP works in a specific example Three tasks are intend to run as shown in Figure 28 At t2 Tasky pre empts Task at t3 Tasky is attempting to lock the resource C1 However due to the fact that its dynamic priority Prasxm is not higher than the ceiling priority of C2 Po Praskm Which is currently locked by Task it cannot lock C1 and is blocked by Task Task inherits Tasky priority due to it blocking Tasky and continues running at a higher priority At t4 Tasky starts to run and at t5 it is attempting to lock C1 because its priority is higher than P gt it successfully locks C1 and runs to completion After Task releases C2 and returns to its original priority at t8 Taskm locks C1 and runs to completion The behaviour obtained using IPCP in this case is illustrated in Figure 30 From Figure 28 and Figure 29 it is seen that there are 6 context switches using PCP and 4 times context switches when using IPCP In addition PCP needs to check blocking information for a task s dynamic priority this makes PCP is more difficult to implement
34. background information Solution A POLLED INPUT should meet the following specification e It should include a periodic task which polls for the occurrence of the event e The period of the above task should be set to some value less than or equal to minimum inter arrival time of the event in question e The interrupt associated with this event should not be enabled In fact only one interrupt associated with the timer responsible for generating system ticks should be enabled l In ET systems the exact arrival time of events is not known so we assume a minimum distance between the arrivals of two consecutive events ESRG 2012 07 01 Version 1 0 Page 27 Hardware resource implications Different interfaces have different implications under various circumstances Reading a switch input imposes minimal loads on CPU and memory resources whereas scanning the keypad interface imposes both a CPU and memory load Reliability and safety issues One major concern here in migrating from event triggered to time triggered is to make systems more predictable Characteristic for the time triggered architecture is the treatment of physical real time as a first order quantity Kopetz and Bauer 2002 this implies to the fact that time triggered systems must be very carefully designed the task activation rates must be fixed according to the system dynamics 1 e how frequent an input needs to be polled Portability This technique is generic an
35. ch task T should be completed Deadline can be measured from the start of the system power on in which case it is called absolute deadline Alternatively it can be measured from the start of the task period in which case it is called relative deadline 7 Worst case execution time WCET This is the longest time taken by the processor to complete the execution of a task Tj 8 Best case execution time BCET This is the shortest time taken by the processor to finish task Ti These parameters are shown in Figure 7 ESRG 2012 07 01 Version 1 0 Page 18 o i i Time Figure 7 Illustrating task parameters Another important parameter is the order of tasks in which they are added to the schedule Inappropriate choice of these parameters may lead to high values of jitter increased power consumption or a task set which cannot be scheduled at all Solution Choosing the correct offset A task offset specifies when a task should start or more precisely it specifies the first tick at which the first instance of a task is ready to run For a task set given with WCET period and deadline start scheduling all the tasks with offset 0 if the sum of execution times of all the tasks is less than or equal to the length of tick interval While assigning task offsets you can take care of the following situations For example the tasks in Table 1 can be scheduled if a tick interval of 3 ms is used and the tasks will meet their deadlines as wel
36. changes a task s priority when it requires a resource regardless of whether there is contention for the resource or not resulting in higher overhead and many unnecessary context switches and blocking in unrelated tasks Locke 2002 ESRG 2012 07 01 Version 1 0 Page 47 BALANCED SYSTEM Abstract pattern Context e You are developing an embedded system e You have decided to move to or are already working with TT architectures e Predictable timing behaviour is the key requirement Problem How can you ensure that your TT system has minimum possible jitter Background To get a guaranteed predictable system choice of appropriate architecture on top of the application is extremely important In applications which are based on an ET architecture tasks run sporadically in response to interrupts whereas in a TT system tasks are periodic However there is a single interrupt which generates ticks to control the task periods To achieve certification standards it is advisable to avoid the use of arbitrary interrupts in running the tasks because of the increased difficulty in attaining sufficient test coverage One particular reason is arbitrary interruptions lead to a vast increase in the potential paths within software when compared to code with no interruptions Bate 1998 From the predictability point of view this would make TT architecture an appropriate choice for a number of applications Only choosing TT architecture
37. chniques are not trivial to implement and are beyond the scope of the present paper 2 Planned pre emption Adi and Pont 2005 have described an approach called planned pre emption which avoids the need for locking mechanisms in TTH scheduler designs Related patterns and alternative solutions This pattern is an abstract pattern which provides background knowledge related to shared resources in embedded systems The following patterns describe some solutions to avoid shared resources conflicts and priority inversion DISABLE TIMER INTERRUPT Disable interrupt is the simplest and fastest approach considered in this paper However it may affect the response times of all other tasks in the system 2 It can be argued that any form of static schedule e g most TTC schedules could be described as a pre runtime schedules However this phrase is usually used to refer to static designs involving pre emption for which a detailed modelling process is carried out prior to program execution ESRG 2012 07 01 Version 1 0 Page 34 RESOURCE Lock Lock is the most common way to protect shared resources because it affects only those tasks that need to take the same semaphore However basic use of locking mechanisms can give rise to problems of priority inversion PRIORITY INHERITANCE PROTOCOL The Priority Inheritance Protocol is intended to address problems with priority inversion IMPROVED PRIORITY CEILING PROTOCOL The Improv
38. cked and the low priority task can continue executing its critical section until it releases the resource Then its priority returns to the original and the high priority task starts to run This process is illustrated in Figure 26 In this example the priority of Task is raised to the priority of Tasky once the higher priority task tries to access the critical section at t3 If an medium priority Tasky pre empts Task while executing the critical section due to the fact that the priority of Task has been raised to the priority of Tasky Tasky has to wait until Tasky completes and Task finishes the critical section Therefore the highest priority task Tasky is not pre empted by the medium priority Task ESRG 2012 07 01 Version 1 0 Page 41 Priority ol Blocked Normal Code e Critical Section tl t2 t3 t4 t5 t6 t7 Figure 26 Priority Inheritance Protocol Related patterns and alternative solutions The pattern CRITICAL SECTION provides general background material on mechanisms for dealing with shared resources in TT systems which involve task pre emption The following patterns describe some alternative ways of handling conflicts over shared resources e DISABLE TIMER INTERRUPT e RESOURCE LOCK e IMPROVED PRIORITY CEILING PROTOCOL Reliability and safety implications Use of priority inheritance protocol avoids priority inversion increases the stability of a system Most of commercial real time operating system support thi
39. control to Dispatch Update must determine how the return address is stored and check if the address lies outside the critical code labels indicating that the task has not returned before setting the taskover variable The original Update return address is stored so that End_Task can determine where the task overruns The Update return address is then replaced with the start address of End_ Task Shutting down the task Having detected a task overrun in Update and changed the return address control is transferred to End_Task which must shut down the overrunning task End_Task determines whether the overrunning task was a leaf function or a function containing sub functions with frames in the stack The frame pointer fp register is compared with the saved fp register value in Dispatch if these values are equal this indicates that the overrunning task is a leaf function If the values are different then the function calls are back traced using the ATPCS standard until the frame stored fp register is equal to the fp register value saved in Dispatch The current processor fp register is then made equal to the stored fp register End Task is then able to check if any registers contents were stored on the stack when the task was called The store instruction is found by looking at the contents of the address referred to by the frame pointer which identifies the first line of code in the function By subtracting 12 from this address locating it a
40. ction see for example Pont 2001 In this report we present a small pattern collection which is intended to support the process of system migration Our particular concern is to explore ways in which we may be able to help developers of embedded systems to improve system reliability by migrating between event triggered ET architectures and ESRG 2012 07 01 Version 1 0 Page 2 equivalent time triggered TT architectures characteristics of these different architectures are summarised in the next section 3 ET and TT architectures In the majority of embedded systems some form of scheduler will be employed to decide when tasks should be executed These decisions may be made in an event triggered fashion 1 e in response to sporadic events Kopetz 1991 or in a time triggered fashion 1 e in response to pre determined lapses in time Kopetz 1997 When a task is due to execute the scheduler can pre empt the currently executing task or wait for the executing task to relinquish control co operatively There are links between the algorithms used to schedule task execution and the choice between co operative and pre emptive task execution for example in most but not all cases event triggered task scheduling is associated with task pre emption while many but not all time triggered designs employ co operative tasks In this paper it will be assumed that the event triggered designs involve task pre emption
41. d affects only those tasks that need to take the same semaphore Simon 2001 The main drawback is that it causes priority inversion in a priority based system Sha Rajkumar et al 1990 Burns and Wellings 1997 Renwick 2004 ESRG 2012 07 01 Version 1 0 Page 30 What is priority inversion In a priority based system each task is assigned a priority In a TTC design the scheduler will when deciding which task to run next always run the task with the highest priority and this task will then run to completion In a pre emptive system a high priority task may interrupt a lower priority task while it is executing Priority inversion can occur in pre emptive designs when resource locks are used For example suppose that a low priority task is using a resource The resource will be locked If a high priority task is then scheduled to run and use the resource it will not be able to do so in effect the low priority task will be given greater priority than the high priority task For example Figure 19 shows an intended operation sequence for two tasks Tasky and Task sharing a critical section C Figure 20 shows how the priority inversion takes place When Task owns C and Tasky attempts to access it at t3 Tasky is blocked and has to wait until time ty before it can run Please note that this is sometimes called bounded priority inversion Burns 2001 Renwick 2004 or controlled priority inversion Locke
42. d highly portable Overall strengths and weaknesses A flexible technique programmer can easily do changes in code for example if auto repeat is required Itis simple and cheap to implement Provides no protection against out of range inputs or electrostatic discharge ESD More processor utilisation in polling for tasks ESRG 2012 07 01 Version 1 0 Page 28 CRITICAL SECTION Abstract pattern Context e You are developing an embedded system using a computer system with CPU and or memory resources which are compared with typical desktop designs rather limited e Your system employs a single CPU e Your system employs a TT SCHEDULER e Your system supports task pre emption e Predictable system behaviour is a key design requirement in particular predictable task timing is a concern Problem How can you avoid conflicts over shared resources during the execution of critical sections Background We provide some relevant background material in this section Scheduling and TT architectures For general background information about scheduling and scheduling of time triggered systems in particular please refer to the pattern TT SCHEDULER TT SCHEDULER provides background information on key concepts such as TTC TTH and TTRM scheduling Shared resources and critical sections Our focus in this pattern will be on TTH and TTRM and related designs in which task pre emption can occur Our particular co
43. date to End Task requires care ESRG 2012 07 01 Version 1 0 Page 68 5 References Albert A and R Bosch GmbH 2004 Comparison of Event Triggered and Time Triggered Concepts with regard to Distributed Control Systems Embedded World Nurnberg 235 252 Alexander C 1979 The Timeless Way of Building Oxford University Press Alexander C S Ishikawa et al 1977 A Pattern Language Oxford University Press Alexander C M Silverstein et al 1975 The Oregon Experiment Oxford University Press Allworth S T 1981 Introduction to Real Time Software Design Macmillan Audsley N C A Burns et al 1991 Hard Real time Scheduling The Deadline Monotonic Approach Eight IEEE Workshop on Real time operating Systems and Softwares Atlanta USA Ayavoo D 2006 The Development of reliable X by Wire Systems Assessing The Effectiveness of a Simulation First Approach Department of Engineering University of Leicester PhD Thesis Ayavoo D M J Pont et al 2005 A Hardware in the Loop testbed representing the operation of a cruise control system in a passenger car Proceedings of the Second UK Embedded Forum Birmingham UK University of Newcastle upon Tyne Baker T P and A Shaw 1988 The Cyclic Executive Model and Ada Real Time Systems Springer Netherlands 1 1 7 25 Bate I J 1998 Scheduling and timing analysis for safety critical real time systems Department of Computer Science Universit
44. duced by Peter Puschner Puschner 2003 as part of his extensive research on WCET analysis According to single path programming paradigm programs that involve loops and decision structures e g if else will have a single ESRG 2012 07 01 Version 1 0 Page 54 execution path This could be achieved at the expense of higher but fixed and predictable execution time as compared to traditional programming Single path can be achieved by replacing input data dependencies in the control flow by predicated code instead of branched code Thus the instructions are associated with predicates and get executed if the predicate evaluates to true In other case if instruction evaluates to false the microprocessor replaces the instruction with a NOP no operation instruction Translation of Conditionals Consider a piece of code where the developer is using an if statement to check whether or not a particular condition is true as shown in the left hand side code segment in Listing 3 If the condition being evaluated cond is true the value of the variable result is set to expr1 otherwise the value of result is set to expr2 As we cannot be sure which of the two expressions expr1 or expr2 will be calculated or in other words which execution path the code will follow it becomes difficult to predict the execution time of the section of the task with the conditional statement Using SINGLE PATH DELAY we assign temporary variables temp1 and temp
45. e employed to reduce system power consumption ESRG 2012 07 01 Version 1 0 Page 13 void main void Set up the scheduler SCH Init T2 Init tasks TaskA Init TaskB Init Add tasks 10 ms ticks Parameters are filename offset ticks period ticks SCH Add Task TaskA 0 3 SCH Add Task TaskB 1 3 SCH Add Task TaskC 2 3 Start the scheduler SCH Start while 1 SCH Dispatch Tasks SCH_Go_To Sleep Listing 4 TTC Implementation TTRM architectures Where a TTC architecture is not found to be suitable for use in a particular resource constrained embedded systems fixed priority scheduling has been proposed as the most attractive alternative Audsley Burns et al 1991 Bate 1998 Time triggered rate monotonic TTRM is a well known fixed priority scheduling algorithm that was introduced by Liu and Layland 1973 in 1973 Technically TTRM is a pre emptive scheduling algorithm which is based on a fixed priority assignment Kopetz 1997 In particular the priorities are assigned to periodic tasks accord to their occurrence rate or in other words priorities are inversely proportional to their period and they do not change through out of the operation because their periods are constant Figure 5 Illustrating TTRM architecture ESRG 2012 07 01 Version 1 0 Page 14 To illustrate the use of TTRM scheduling Figure 5 above shows how a set of periodic tasks c
46. e 7 EVENTS TO TIME Abstract pattern Context e You and or your development team have programming or design experience with event triggered and or pre emptive ET P system architectures that is architectures which may involve use of conventional real time operating system RTOS and or multiple interrupt service routines linked to different interrupt sources and or task pre emption e You are in the process of creating or upgrading an embedded system based on a single processor e You already have at least a design or prototype for your system based on some form of ET P architecture e Because predictable and highly reliable system operation is a key design requirement you have opted to employ a time triggered system architecture in your system if this proves practical Problem How can you convert event triggered pre emptive designs and code and mindsets to allow effective use of a TT SCHEDULER as the basis of your embedded system Background If we were forced to sum up the difference between embedded and desktop systems in a single word we d say interrupts Event triggered behaviour in systems is usually achieved through the use of such interrupts The system is designed to handle interrupts associated with a range of sources e g switch inputs CAN interface RS 232 analogue inputs etc Each interrupt source will have an associated priority Each interrupt source will also requi
47. e Systems 6 133 151 UM10211 2009 LPC 23XX User manual Rev 03 ESRG 2012 07 01 Version 1 0 Page 70 Ward N J 1991 The static analysis of safety critical avionics control system in Air Transport Safety Safety and Reliability Spring Conference Yodaiken V 2002 Against Priority Inheritance from http www linuxdevices com articles AT7168794919 html ESRG 2012 07 01 Version 1 0 Page 71
48. e potential issues of which you should be aware 1 You need to know the duration WCET of the functions to be sandwiched If you underestimate this value the timer will already have reached its overflow value when your function s complete and the level of jitter will not be reduced indeed the Sandwich Delay is likely to slightly increase the jitter in this case You must check the code carefully because the wait function may never terminate if the timer is incorrectly set up In these circumstances a monitoring technique may help to rescue the system See patterns SYSTEM MONITORS WATCHDOG LOOP TIMEOUT and TASK GUARDIAN You will rarely manage to remove all jitter using such an approach because the system cannot react instantly when the timer reaches its maximum value at the machine code level the code used to poll the timer flag is more complex than it may appear and the time taken to react to the flag change will vary slightly A useful rule of thumb is that jitter levels of around microsecond will still be seen using a SANDWICH DELAY Overall strengths and weaknesses A simple way of ensuring that the WCET of a block of code is highly predictable Requires non exclusive access to a timer Will only rarely provide a jitter free solution variations in code duration of around 1 microsecond are representative ESRG 2012 07 01 Version 1 0 Page 53 SINGLE PATH Pattern Context e You are using
49. ed Priority Ceiling Protocol is intended to address problems with priority inversion deadlock and chained blocking Reliability and safety implications If a TT system is to allow task pre emption appropriate use of the techniques discussed in this pattern can help to make the behaviour of the system more predictable Overall strengths and weaknesses Being aware of the need to safeguard critical sections can help to increase system reliability amp Inappropriate use of locking mechanisms and related techniques may increase system complexity without increasing reliability ESRG 2012 07 01 Version 1 0 Page 35 RESOURCE LOCK Pattern Context e You are developing an embedded system using a computer system with CPU and or memory resources which are compared with typical desktop designs rather limited e Your system employs a single CPU e Your system employs a TT SCHEDULER e Your system supports task pre emption e Predictable system behaviour is a key design requirement in particular predictable task timing is a concern Problem How can you implement a resource lock for your embedded system Background We provide some relevant background material in this section What is a shared resource For background information about shared resources please refer to the abstract pattern CRITICAL SECTION The role of interrupts in TT systems For background information about interrupts in TT systems please see DI
50. ery millisecond in most implementations which wakes the processor up from the idle state and invokes the ISR Update Update identifies tasks which are due to be launched during the next execution of Dispatch The ESRG 2012 07 01 Version 1 0 Page 65 function calls return all the way back to Main and Dispatch is called again The cycle thereby continues Figure 41 Update CNS cl O pino A Figure 41 Function call tree for TTC architecture normal operation If a task overrun occurs then instead of Sleep being interrupted by the ISR the overrunning task is interrupted Figure 42 Figure 42 Function call tree for TTC architecture task overrun If Task keeps running then in the standard TTCS scheduler it will be periodically very briefly interrupted by Update However 1t cannot be shut down Solution The TASK GUARDIAN approach is proposed in Hughes and Pont 2004 implemented mainly in a revised version of Update is required to shut down any task which is found to be executing when the Update ISR is invoked This will be carried out as follows see Figure 43 e The Update ISR will detect the task overrun e Update will return control to End_Task rather than to the problematic task End_ Task will be responsible for unwinding the stack as required to locate the return address to Dispatch e Control will then be returned to Dispatch and as far as possible normal program operation will continue lt
51. f tasks is rarely straightforward Puschner 2002b Puschner 2003 This is because the program code of a task may contain conditional branches and or loops and each may take different times to execute Liu 2000 The decision between one branch and the other during task execution is dependent on the input data This makes predicting a branch prior to execution a very difficult task All these factors lead to variable execution time of a task and this is known as execution jitter see imbalanced values of yl y2 and y3 in Figure 31 The cascading effects of release and execution jitter will result in the deviation of task finish time shown as z1 z2 and z3 in Figure 31 Ideally a predictable system should be jitter free Considering Figure 31 once again we can say that in a zero jitter system xl x2 x3 yl y2 y3 zl z2 z3 Some hardware features such as variations in the frequencies of oscillator and use of cache memories Kirner and Puschner 2003 also contribute to jitter in tasks For some applications such as data speech or music playback for example these variations may make no measurable difference to the system However for applications in real time control systems which involve sampling computation and actuation such delays in operations are very risky for the overall performance of the system The presence of jitter can have a degrading impact on the performance of real time systems or can even lead to critical failure Mart
52. greater runtime overheads because of the need for context switching storage and retrieval of partially computed results Co operative algorithms do not incur such overheads Other advantages of co operative algorithms include their better understandability greater predictability ease of testing and their inherent capability for guaranteeing exclusive access to any shared resource or data Allworth 1981 pp 53 54 also notes Significant advantages are obtained when using this co operative technique Since the processes are not interruptable poor synchronisation does not give ESRG 2012 07 01 Version 1 0 Page 9 rise to the problem of shared data Shared subroutines can be implemented without producing re entrant code or implementing lock and unlock mechanisms Although not the main focus of this pattern the advantages of a TT approach also apply in distributed systems see for example Scarlett and Brennan 2006 Overall strengths and weaknesses Use of TT architecture tends to result in a system with highly predictable patterns of behaviour amp Inappropriate system design using this approach can result in applications which have a comparatively slow response to external events Examples To illustrate part of the translation process consider a simple ET system Listing 1 running two interrupts as a result two tasks X and Y will execute These tasks are invoked by separate interrupts and implemented by ass
53. he input or output e Data output systems for example music players video playback head up displays are required to generate output signals at precise times for example CD quality sound will be played back at 44 400 samples per second Any jitter in the playback will result in degradation of the music quality It is important to appreciate that in many of these cases use of a TT solution allows the system to perform the above periodic activities and also perform other functions such as reading switches updating displays receiving data over serial communication links performing calculations etc without interfering in any way with the processing outlined in the above examples It is the ability to perform multiple tasks and still guarantee that critical tasks will always execute as required that makes a TT solution so attractive to developers of high integrity safety related and safety critical systems ESRG 2012 07 01 Version 1 0 Page 6 Clearly not all systems fall into the periodic sampling playback category In particular if your system must respond only to events which may occur at random times 1t may not be a good match for this architecture For example consider a simple radio transmitter which is used to open your garage doors a few times a week We could use TT architecture to poll the switch on this system every 20 ms just in case the switch has been pressed However while such a s
54. he resource 3 It is possible using a Super Loop to create very simple TTC designs which involve no interrupts at all Such architectures are not suitable for use with pre emptive task sets and are not considered in this set of patterns see Kurian and Pont 2007 for further details ESRG 2012 07 01 Version 1 0 Page 39 Overall this is a very simple and fast way of dealing with issues of shared resources in a TT design However it may have an impact on all the tasks in the system Therefore interrupts should be disabled as infrequently as possible and for a very short period of time Related patterns and alternative solutions The pattern CRITICAL SECTION provides general background material on mechanisms for dealing with shared resources in TT systems which involve task pre emption The following patterns describe some alternative ways of handling conflicts over shared resources e RESOURCE LOCK e PRIORITY INHERITANCE PROTOCOL e IMPROVED PRIORITY CEILING PROTOCOL Reliability and safety implications Disabling the interrupt of a system affects the response times of the interrupt routine and of all other tasks in the system It is not safe if it keeps interrupts disabled for long time However if the critical section is very short e g we wish to access a single global variable it is a fast and easy solution Overall strengths and weaknesses Easy to implement Faster than other protection mechanisms such a
55. ical section Figure 18 A _ _ A _ _ _ _ _ _ E ti t5 Time Figure 18 Two tasks scheduled in a pre emptive system Assume that the shared resource in the above example is some shared data for example numerical data stored in an array The two tasks write and read the data in the critical section Task pre empts Task at tl while it is reading the data we will assume that Task has read from half of the array at the time it is interrupted We will further assume that Taskg Taskp updates all of the data values in the array After Taskp finishes Task then continues reading the remaining values from the second half of the array it then processes a combination of new and old data possibly leading to erroneous results e g see Kalinsky 2001 In general tasks must share data and or hardware resources However the system designer must ensure that each task has exclusive access to the shared resources to avoid conflicts data corruption or hanging tasks Labrosse 2000 Pont 2001 Laplante 2004 What is a resource lock A lock is the most common way to protect shared resources Before entering a critical section a semaphore is checked If it is clear the resource is available The task then sets the semaphore and uses the resource When the task finishes with the resource the semaphore is cleared Resource locking in this way requires care but is comparatively straightforward to implement an
56. in 2005 Solution A BALANCED SYSTEM is one which has minimum values for all types of jitters One way we can address the challenges discussed in the previous section is to tackle them directly For example rather than hoping that we can predict the WCET for example through static code analysis or measurement we can set out from the start to ensure that our code is balanced and that the WCET and BCET best case execution time are always fixed and equal Once we have balanced the code it becomes comparatively easy to determine during system testing and during system execution whether the system tasks actually have a fixed execution time ESRG 2012 07 01 Version 1 0 Page 49 Related patterns In a task balancing can be required at different levels For example we may need to balance the whole task or just sections for example areas with loops and conditional code In some cases the goal may be to fix the timing of an activity in the task relative to the start of the task for example we may wish to ensure that exactly 0 2 ms after the start of a task a sample is taken from a data source e SANDWICH DELAY provides a simple solution to balance a task through exclusive use of a hardware timer e SINGLE PATH DELAY is a programming approach to ensure that blocks of code involving loops or decision structures will have a single execution path e TAKEA NAP is an alternative to achieving balanced code for power constrained sys
57. kground material related to this pattern is already presented in the introduction of this report see section TTH design During normal operation of the systems using the TTH Scheduler architecture function main runs an endless while loop see Listing 13 from which the function C_ Dispatch is called this in turn launches the co operative task s currently scheduled to execute Once these tasks are completed C_Dispatch calls Sleep placing the processor into a suitable idle mode while 1 C Dispatch Dispatch Co op tasks void C_Dispatch void Go through the task array Execute Co operative tasks as required The scheduler may enter idle mode at this point Sleep void P Dispatch ISR void P Task Listing 13 TTH Scheduler A hybrid scheduler provides limited multi tasking capabilities to the system Such systems could exhibit unpredictable behaviour because of two reasons Maaita 2008 Existence of unbalanced code branches in the timer ISR which leads to variable ISR execution times This in turn leads to unpredictable scheduler behaviour represented by the appearance of task starting jitter 1 The existence of CPU instructions with different execution times i e in terms of CPU cycles required to execute the instruction This leads to variable timer interrupt response times as each of the periodic timer interrupts which take place throughout the life cycle of the ap
58. ky while Tasky is waiting for a resource held by Task and so on Figure 24 Tasky needs to sequentially access resources C3 and C2 Tasky accesses C2 with nested C1 and Task accesses Cl Priority e Critical Section3 PraskH A rr el as PraskM el Critical Section1 Normal Code tl t2 t3 t4 tS t t7 t8 t9 t10 Figure 24 Operation Sequences of Three Tasks Figure 25 shows that Tasky is blocked by Task at t4 when it requires access to C1 which is locked by Task Tasky is blocked by Tasky at t7 when it requires access to C2 which is locked by Taskm Therefore Tasky is blocked for the duration of two critical sections it has to wait for Task to release C1 and then wait for Tasky to release C2 As a result a blocking chain is formed Sha Rajkumar et al 1990 Priority p Blocked el cen scion cs Section2 el Critical Section3 LN norma Code tl t2 t3 t4 t5 t t7 t8 t9 t10 tlli tl2 Figure 25 A blocking chain Operation Sequences of Three Tasks without priority protocols ESRG 2012 07 01 Version 1 0 Page 33 Solution This pattern is intended to help answer the question How can you avoid conflicts over shared resources during the execution of critical sections In general the answer to this question is straightforward you need to ensure that only one task attempts to access each shared resource at any time There are two common ways of achieving this in a TT system architecture 1 As noted in Backgr
59. l Table 1 Task specifications for a system in which task offsets are appropriate all the tasks will meet their deadlines Task WCET ms Deadline ms Period ms Offset ticks A 0 5 3 3 0 B 0 75 3 6 0 C 1 5 3 6 0 On the contrary task set in Table 2 can be scheduled with a tick interval of 5ms but Task C will missed its deadline as shown in Figures Table 2 Task specifications for a system in which task offsets are in appropriate Task C will not be able to meet its deadline Task WCET ms Deadline ms Period ms Offset ticks A 1 5 5 0 B 1 5 5 10 0 C 3 5 10 0 ESRG 2012 07 01 Version 1 0 Page 19 Time ms Time ms 15 20 Time ms 20 30 Figure 8 Task C missed deadline because of incorrect offset By changing the offset to 1 Task C will meet its deadline as shown in Figure 9 Time ms 20 Time ms 10 15 20 Time ms 15 20 Figure 9 Task C will meet deadline after changing offset to 1 Inappropriate assignment of task offsets can also increase the jitter value in task For example consider the task set given in Table 3 With the given set of parameters Task C will run after Task A and Task B in some ticks and just after Task A in some other ticks see Figure 10 This kind of situation poses a kind of unpredictability in system behaviour This can be adjusted by keeping the jitter constant in Task
60. le have a long service life typically measured in decades During this life planned product maintenance and upgrades will inevitably require software changes Changes to available hardware platforms are also very common over the lifetime of such systems this too will force some degree of software change In addition software for future versions of systems and new products will very rarely be created from scratch instead existing software will be adapted to match new requirements such as a higher Safety Integrity Level In this report we introduce a small collection of patterns which is intended to support the migration of existing software designs to a time triggered architecture in order to make the system behaviour more predictable and therefore support test and verification activities The overall goal is to support improvements in system reliability and where appropriate reduce certification effort In the next section we explain briefly the meaning of the phrase design pattern We then summarise the features of the two software architectures event triggered and time triggered which lie at the heart of this pattern collection 2 Design patterns The concept of design patterns first emerged from the work of an architect Christopher Alexander during the 1960s and 1970s Alexander and his colleagues published three pioneering texts Alexander Silverstein et al 1975 Alexander Ishikawa et
61. n new functionalities are added to the system it is only necessary to recalculate the new utilisation values In addition unlike a TTC design there is no need to break up long individual tasks in order to meet the length limitations of the minor cycle The need to employ harmonic frequency relationships among periodic tasks is also avoided Finally the scheduling behaviour can be predicted and analysed using a task model proposed by Liu and Layland 1973 However the scheduling overheads of TTRM schedulers tend to be larger than those of TTC schedulers because of the additional complexity associated with the context switches when saving and restoring task state Locke 1992 This is a concern in embedded systems with limited resources Locking mechanisms If you use any architecture which involves pre emption TTH or TTRM you need to consider ways of preventing more than one task from accessing critical resources at the same time See pattern CRITICAL SECTION and related patterns for more details Overall strengths and weaknesses Use of a TT scheduler tends to result in a system with highly predictable patterns of behaviour Inappropriate system design using this approach can result in applications which have a comparatively slow response to external events ESRG 2012 07 01 Version 1 0 Page 17 CHOOSING TASK PARAMETERS Pattern Context e You are in the process of creating or upgrading an embedded system based on
62. ncern will be with the issue of resources which may be accessed by more than one task at the same time Such shared resources may for example include areas of memory for example two tasks need to access the same global variable or hardware for example two tasks need to access the same analogue to digital converter The code which accesses such shared resources is referred to as a critical section Suppose that there are two tasks Task and Taskg in a system which are illustrated in Figure 16 There is one shared resource and N represents the normal section and C represents the critical section that is the section which involves access to a shared resource From tl to t4 Task and Taskg are attempting to run simultaneously N Normal Code e Critical Section Figure 16 Two Tasks with a shared resource ESRG 2012 07 01 Version 1 0 Page 29 In a TTC system a task cannot be pre empted by another task and the two tasks shown in Figure 16 are scheduled as shown in Figure 17 As in this example there are no conflicts caused by the shared resources in TTC systems K_ _ _J_____JJJ _ _ Time Figure 17 Two tasks scheduled using a TTC scheduler However if the same tasks are scheduled in a pre emptive system there may be conflicts For example suppose the priority of Taskg is higher than that of Taska Taskg will then pre empt Task at time tl while it is running the crit
63. nd comparing the contents with the instruction number for a block transfer function a store instruction can be identified The store block transfer instruction is then decoded to recover important settings such as the names of registers which were stored on the stack and whether the stack is ascending or descending The required bits of the store instruction are modified to convert it to a load instruction The new ESRG 2012 07 01 Version 1 0 Page 67 instruction is then pointed to by the address in r13 which is loaded into the program counter The microprocessor then runs this instruction from RAM this initiates the return sequence to Dispatch with the saved registers restored Note that all the important registers are stored before and after the task is called to add an extra level of security from register corruption If the overrunning task is a leaf function then the end task function simply returns where the r14 link register which contains the return address of the dispatch task function is loaded into the PC program counter register When a task is to be shutdown a flag is set in Update so that Dispatch will loop through the task array again this avoids the possibility of a tick offset error Overall strengths and weaknesses Task guardians provides a way of detecting and handling task overrun in the system Addition of task guardians adds to the complexity of the code amp Controlling the transfer of control from Up
64. ng machine control and monitoring of liquid flow rates Pont 2002 Figure 1 illustrates the operation of TTC scheduler running two tasks A and B with 1 ms tick interval b v Time ms Figure 1 Illustrating the operation of a typical TTC scheduler ESRG 2012 07 01 Version 1 0 Page 3 In applications where a TTC architecture is not found to be appropriate a TT hybrid TTH design Pont 2001 may be an effective alternative see Figure 2 A TTH design consists of a set of co operative C tasks all of the same priority and a single short pre empting P task of higher priority than the C tasks In many systems the short P task can be used for periodic data acquisition through an analogue to digital converter or similar device Buttazzo C 2003 5 Time ms 0 1 2 3 4 5 Time ms Figure 2 Illustrating the operation of a typical TTH scheduler 4 A small pattern collection Our goal in this report is to present a small pattern collection which is intended to assist developers in the migration of systems from ET to equivalent systems with a TTC or TTH architecture In doing this our expectation is that provided such a migration is appropriate and carried out correctly we should be able to improve system reliability The pattern association map is shown in Figure 3 The hierarchy of patterns is divided into abstract patterns and patterns Kurian and Pont 2005 The remaini
65. ng part of this report will present most of these patterns Please note that the patterns CO OPERATIVE SCHEDULER HYBRID SCHEDULER LOOP TIMEOUT and WATCHDOG Timer are part of pattern collection described in Pont 2001 and are not included here However they can be downloaded in the form of a complete book from this link http www tte systems com books pttes ESRG 2012 07 01 Version 1 0 Page 4 PATTERNS FOR MIGRATION tn TIME FOR TT EVENTS TO TIME C Pattern O New patterns documented TT SCHEDULER during the research PRE EMPTIVE CO OPERATIVE HYBRID SCHEDULER l I I l SCHEDULER SCHEDULER I I I CHOOSING TASK I I I I I I PARAMETERS l POLLED INPUT BUFFERED OUTPUT RESOURCE LOCK A Resource Lock IMPROVED PRIORITY CEILING PROTOCOL DISABLE TIMER INTERRUPT PRIORITY INHERITANCE PROTOCOL SYSTEM MONITORS Loop TIMEOUT TASK GUARDIAN PATTERNS FOR OPTIMISATION BALANCED SYSTEM SANDWICH DELAY TAKE A NAP SINGLE PATH PLANNED WATCHDOG DELAY PRE EMPTION Figure 3 Pattern association map ESRG 2012 07 01 Version 1 0 Page 5 TIME FOR TT Abstract pattern Context e You already have at least a design or prototype for your system based on some form of Event triggered architecture e You are in the process of creating or upgrading an embedded sy
66. ociated ISRs void X_ISR void interrupt IElndexl void Y ISR void interrupt IElndex2 void main void X init Y init EA 1 Enable all interrupts while 1 PCON 0x01 Listing 1 Possible ET design There are various possibilities to convert ET designs to TT designs with any of the possible TT architectures listed in the solution One possible design using TTC scheduler is illustrated in Listing 2 void main void SCH Init Set up the scheduler and tasks X Init ESRG 2012 07 01 Version 1 0 Page 10 Y Init Add tasks to scheduler SCH _ Add Task X Update 0 100 SCH Add Task Y Update 20 200 Start the scheduler SCH_Start while 1 SCH Dispatch Tasks Listing 2 Possible TT design P lease note that X and Y are two separate tasks created in separate c files with their init and update functions ESRG 2012 07 01 Version 1 0 Page 11 TT SCHEDULER Abstract pattern Context e You already have at least a design or prototype for your system based on some form of ET P architecture e You and or your development team are using pattern EVENTS TO TIME e You are in the process of creating or upgrading an embedded system based on a single processor e Because predictable and highly reliable system operation is a key design requirement you have opted to employ a time triggered system architecture in your system
67. ocke D 1992 Software Architectures for Hard Real time Applications Cyclic Executives vs Fixed Priority Executives Real Time Systems 4 1 37 53 Locke D 2002 Priority Inheritance The Real Story from http www linuxdevices com articles AT5698775833 html Maaita A 2008 Techniques for enhancing the temporal predictability of real time embedded systems employing a time triggered software architecture Department of Engineering University of Leicester PhD Thesis Maaita A and M J Pont 2005 Using planned pre emption to reduce levels of task Jitter in a time triggered hybrid scheduler Second UK Embedded Forum Birmingham UK 18 35 Martin T 2005 The insider s guide to the Philips ARM7 Based microcontrollers Coventry Hitex UK Ltd Nissanke N 1997 Real time Systems Prentice Hall Phatrapornnant T and M J Pont 2006 Reducing Jitter in embedded systems employing a time triggered software architecture and dynamic voltage scaling IEEE Transactions on Computers 55 2 113 124 Pont M J 2001 Patterns for Time Triggered Embedded Systems ACM press Pont M J 2002 Embedded C Addison Wesley Puschner P 2002b Is WCET Analysis a non problem Towards new Software and Hardware architectures 2nd International Workshop on Worst Case Execution Time Analysis Vienna Austria Puschner P 2003 The single path approach towards WCET analysable software IEEE International Conference on
68. olution would undoubtedly work it would be likely to have a shorter battery life than a simple event triggered design which operates in power down mode except when the switch on the unit was pressed As there are not likely to be safety concerns with this system and the number of tasks is probably very small an ET solution will probably be more appropriate in this situation In between these two extremes there are many systems which involve both periodic tasks and the handling of random events Such designs are typically characterised by the use of multiple interrupt service routines ISRs In these situations it may not be practical or necessary to create a pure TT single interrupt solution However it may well be practical to create a more TT solution which reduces the number of interrupts to a level at which it becomes possible to predict the system behaviour sufficiently accurately to meet the needs of the application Related patterns To describe what architectural changes will be required in moving to a TT design patterns EVENTS TO TIME and TT SCHEDULER provide further details Overall strengths and weaknesses Use of a TT architecture tends to result in a system with highly predictable patterns of behaviour Inappropriate system design using this approach can result in applications which have a comparatively slow response to external events and or shorter battery life ESRG 2012 07 01 Version 1 0 Pag
69. ound you can avoid conflicts over shared resources in a time triggered system if you use a TTC scheduler This solution avoids the need for any of the mechanisms outlined in Related patterns and alternative solutions 2 You can disable interrupts and or using a locking mechanism probably in conjunction with a protocol that will help you avoid priority inversions These solutions are outlined in Related patterns and alternative solutions Of these solutions the first is the simplest and generally the most effective No matter what you do in a pre emptive design to protect your shared resources they will still be shared and only one task can use them at a time As such any form of protection mechanism provides only a partial solution to the problems caused by multi tasking Consider an example If the purpose of Task A is to read from an ADC and Task B has locked the ADC when the Task A is invoked then Task A cannot carry out its required activity Use of locks or any other mechanism will not solve this problem however they may prevent the system from crashing Please note that there may in some circumstances be two further options for you to consider 1 Pre runtime scheduling e g Xu and Parnas 1990 Use of a pre run time schedule design may allow you to adapt your pre emptive system schedule in order to ensure that even with pre emption there are never conflicts over shared resources Such te
70. overall architecture is extremely simple and easy to understand and no aspect of the underlying hardware is hidden from the original developer or from the person who subsequently has to maintain the system TTC Dispatch Scheduler The TTC scheduler implementation referred to here as a TTC Dispatch scheduler provides a more flexible alternative see Listing 4 The type of TTC scheduler implementation discussed in this pattern is usually implemented using a hardware timer which is set to generate interrupts on a periodic basis with tick intervals of around 1 ms being typical In most cases the tasks will be executed from a dispatcher function invoked after every scheduler tick The dispatcher examines each task in its list and executes in priority order any tasks which are due to run in this tick interval see Figure 4 The scheduler then places the processor into an idle power saving mode where it will remain until the next tick A Task A 4 i This Ten l 5 2 Timo ms Figure 4 Illustrating TTC design Provided that an appropriate implementation is used a time triggered co operative TTC architecture is a good match for a wide range of low cost resource constrained applications TTC architectures also demonstrate very low levels of task jitter Locke 1992 and can maintain their low jitter characteristics even when techniques such as dynamic voltage scaling DVS ar
71. plication can occur while the CPU is in one of the two different states The CPU may ESRG 2012 07 01 Version 1 0 Page 59 either be running in sleep idle mode shown in Figure 37 or while it is running an instruction and where the interrupt is only serviced once the currently executing instruction is finished shown in Figure 38 Interrupt Time ms Pre emptive task O Co operative task Interrupt Time ms r 1 n Interrupt Service non variable service time Interrupt p Processor in Sleep mode Figure 37 Timer Interrupt when CPU is in sleep mode Interrupt Time ms Pre emptive task GB Co operative task Interrupt oT Time ms Interrupt Service 7 O as non variable service time Figure 38 Timer Interrupt during an instruction execution The possible occurrences of timer interrupts could lead to variable timer ISR response times which translates in to task release jitter In TTH design this release jitter has the largest impact on tasks which regularly execute after a timer tick has occurred and is therefore referred to as tick jitter Solution By keeping the processor in the same state as all interrupts takes place would be likely to reduce the tick jitter Maaita and Pont 2005 PLANNED PRE EMPTION makes use of another hardware timer to put the processor to power saving mode before the scheduler timer interrupt occurs thus keeping the processor in the same
72. re the creation of a corresponding interrupt service routine ISR this can be viewed as a short task which is triggered immediately when the corresponding interrupt is generated Creating such ET P systems is on the surface at least straightforward However challenges often begin to arise in non trivial designs at the testing stage It is generally impossible to determine what state the system will be in when any interrupt occurs which makes comprehensive testing almost impossible A time triggered system also requires an understanding of interrupts but the operation is fundamentally different At the heart of a TT system is a scheduler which determines when the tasks in the system will be executed In such a system there is only a single interrupt source usually a periodic timer tick is used to drive the scheduler ESRG 2012 07 01 Version 1 0 Page 8 Solution Here s what you need to do to migrate to a TT design e You need to ensure that only a single periodic timer interrupt is enabled all other interrupt sources will be converted to flags which will be polled as required e You have to determine an appropriate tick interval for your system that is you need to determine how frequently the timer interrupt need to take place e You have to convert any ET event triggered ISRs into periodic tasks and add these to the schedule e You need to decide which TT architecture will best
73. riority inversion However this is not the only problem which is introduced by the use of locking mechanisms For example suppose that Tasky is waiting for a resource held by Task while Task is simultaneously waiting for a resource held by Tasky neither task is able to proceed and as a result a deadlock is formed As an example Figure 22 shows two tasks Tasky and Task which share two resources via C1 and C2 in this case it is assumed that C1 is nested within C2 in Task and that C2 is nested within Cl in Tasky Priority Normal Code el Critical Section2 PraskH g Critical Section1 tl t2 t3 t4 t5 t6 t7 Figure 22 Operation Sequences of TaskH and TaskL In Figure 23 at ti Task locks C2 at t2 Tasky pre empts Task and starts to run locks C1 at tz then requires C2 at t4 Due to the fact that Task has locked C2 Tasky is blocked and Task resumes running at t4 At ts Task requires C2 which is locked by Tasky and both tasks are blocked ESRG 2012 07 01 Version 1 0 Page 32 Priority Bl Blocked Critical Section1 lal Critical Section2 Normal Code Require C2 locked by TaskL Require C1 locked by TaskH tl t2 t3 t4 t5 t6 t7 Figure 23 Deadlock Operation Sequences of Tasks without Priority Protocols What is chained blocking Locking mechanisms can also cause a phenomenon known as chained blocking This is best explained by means of an example Suppose that Tasky is waiting for a resource held by Tas
74. ripherals or variables associated with hardware for example ADC or DAC e Hardware devices may be subjected to an excessive input voltage and may not work at all e Task overrun in the system i e if a task exceeds its estimated execution time it will disturb the entire schedule Solution In order to ensure the system reliability SYSTEM MONITORS can be implemented to keep an eye on system functionality They act like guards to be responsible to make sure that system is working fine and can take appropriate actions if anything unexpected is detected with the system Such SYSTEM MONITORS can be implemented with use of hardware for example timers see pattern WATCHDOG or a separate software task can be design for this purpose see pattern TASK GUARDIAN Also there are some good programming practices which could help to avoid possibilities of hanging system see pattern LOOP TIMEOUT Related patterns and alternative solutions e WATCHDOG e Loop TIMEOUT e TASK GUARDIANS ESRG 2012 07 01 Version 1 0 Page 63 Overall strengths and weaknesses System monitors provide a way of ensuring system reliability Require use of additional hardware or code to implement monitoring techniques amp Implementing such techniques requires care ESRG 2012 07 01 Version 1 0 Page 64 TASK GUARDIAN Pattern Context e You are using the pattern SYSTEM MONITORS e Your application is based on simple TTC design Problem How would you ensure that
75. rrect task order Changing the task order can keep the jitter constant in Task C The new order of tasks is shown in Table 6 and Figure 13 Table 6 Rearrangement of the task order to keep the jitter constant in task C Task WCET ms Deadline ms Period ms Offset ticks A 2 10 10 0 C 4 30 30 0 B 3 20 20 0 Figure 13 Rearrangement of task order will make task C run after task A every time 20 20 20 30 Time ms Time ms Time ms ESRG 2012 07 01 Version 1 0 Page 22 Reliability and safety implications Inappropriate selection of task parameters can make the system unreliable Overall strengths and weaknesses Uses of appropriate task parameters will result in stable system with all the tasks meet their deadlines and reduced constant values of jitter Inappropriate system design using this approach can result in applications which have a comparatively slow response to external events ESRG 2012 07 01 Version 1 0 Page 23 BUFFERED OUTPUT Pattern Context e You are applying the pattern EVENTS To TIME TTC e You need to deal cleanly with a long task that is a task which may have an execution time greater than your chosen tick interval e You need to send a significant amount of data between your processor system and an external device the data transfer process will take some time Problem How can you structure the data transfer
76. s feature or as additional package such as uC OS II eCOS FreeRTOS and RTLinux etc Although priority inheritance protocol is generally found to be an effective and powerful technique to prevent priority inversion it is not without its critics e g see Yodaiken 2002 Of particular concern is that this protocol cannot avoid deadlock and blocking chains when tasks have nested shared resources Therefore to use PIP safely an appropriate software architecture design is needed that avoids unnecessary coupling between tasks through shared resources Locke 1992 and it is important to avoid nested resources in applications Overall strengths and weaknesses Prevents priority inversion Has better average case performance than the Priority Ceiling Protocol When a critical section is not contended priorities do not change there is no context switch and no additional overhead E Difficult to implement when compared with DISABLE TIMER INTERRUPT see this paper 6 Does not prevent deadlock and blocking chains Wastes processor time if there are not immediate tasks ready to run during the time that a higher priority task is blocked by a lower priority task ESRG 2012 07 01 Version 1 0 Page 42 Worst case performance is lower than the worst case performance for the Priority Ceiling Protocol since nested resource locks increase the wait time ESRG 2012 07 01 Version 1 0 Page 43 IMPROVED PRIORITY CEILING PROTOCOL
77. s follows Puschner 2003 1 First the loop is translated to a simple counting loop e g a or loop with the iteration count set to be equal to the maximum iteration count of the original loop in this case expr The pre condition cond 01d is used to build a new branching statement inside the new loop A new conditional statement that has been generated from the old loop condition cond new is transformed into a conditional assignment using the newly introduced boolean variable finished with constant execution time As a result the entire loop executes in constant time This new conditional statement is placed around the body of the original loop and simulates the data dependent termination of the original loop in the newly generated counting loop finished false for i 1 to expr do begin if not cond new then finished true if cond old and not finished then stmts end Listing 10 while loop with a constant execution count adapted from Puschner 2003 Overall strengths and weaknesses Helps to produce constant execution time for code sections involving loops and conditional statements Its use is limited to hardware which supports conditional move or similar instructions It is likely to increase the power consumption because the CPU will always execute the single path code for a fixed maximum period During this time the processor will be in full power mode ESRG 2012 07
78. s locks Increases interrupt latency May decrease system s ability to respond to external events 6000 Need to carefully recognise the situation in which interrupts should be disabled ESRG 2012 07 01 Version 1 0 Page 40 PRIORITY INHERITANCE PROTOCOL Pattern Context e You are developing an embedded system using a computer system with CPU and or memory resources which are compared with typical desktop designs rather limited e Your system employs a single CPU e Your system employs a TT SCHEDULER e Your system supports task pre emption e Predictable system behaviour is a key design requirement in particular predictable task timing is a concern Problem How can you ensure that access to shared resources in your system is mutually exclusive and avoids priority inversion Background For background information about shared resources please refer to the abstract pattern CRITICAL SECTION Solution The pattern is intended to help you answer the question How can you ensure that access to shared resources in your system is mutually exclusive and avoids priority inversion To avoid unbounded priority inversion Sha et al 1990 introduced the priority inheritance protocol In the priority inheritance protocol a low priority task inherits the priority of a high priority task if the high priority task requires access to the shared resource owned by the low priority task The high priority task is blo
79. stem based on a single processor e Reliable system operation is a key design requirement Problem Should you use a TT architecture in your system Solution Some systems are obvious candidates for TT architectures These systems involve periodic data sampling or data playback or other periodic activities Some simple examples e Data acquisition and sensing systems for example environmental systems for temperature monitoring usually involve making data samples on a periodic basis Some cases high frequency systems may involve making millions of samples per second other cases e g temperature monitoring at a weather station may involve making one sample per hour Whatever the rate a TT architecture will usually be used in order to guarantee high quality jitter free data sampling at a known signal to noise ratio e Control systems for example primary flight control in a aircraft or helicopter cruise control in a passenger car temperature control in an industrial furnace control of a hard disk in a computer Such systems all involve three core periodic activities measuring some aspect of the system to be controlled e g the furnace temperature calculating changes required to the control system e g calculating new gas burner settings and applying the changes to the control system e g updating the settings on the gas burner Use of a TT architecture will ensure high quality control without jitter in t
80. t Fourier transforms FFTs or similar techniques gt Pre empting task Co operative task PE hhh A lla 1 Figure 6 Illustrating TTH design 4 3 3 pap 3 2 Time 025 Solution Here are the guidelines about choosing appropriate TT architecture When to use TTC Use TTC architecture where ever possible as first choice because of its simple and efficient design Of course this architecture is not always appropriate The main problem is that long tasks will have an impact on the responsiveness of the system This concern is succinctly summarised by Allworth The main drawback with this co operative approach is that while the current process is running ESRG 2012 07 01 Version 1 0 Page 15 the system is not responsive to changes in the environment Therefore system processes must be extremely brief if the real time response of the system is not to be impaired Allworth 1981 We can express this concern slightly more formally by noting that if the system must execute one of more tasks of duration X and also respond within an interval T to external events where T lt X a pure co operative scheduler will not generally be suitable In more simple words duration of a task execution time must be less than the tick interval of the system In practice it is sometimes assumed that a TTC architecture is inappropriate because some simple design options have been overlooked see pattern BUFFERED
81. t Task until Task completes the critical sections and returns to the original priority Therefore the deadlock is prevented Priority ES Critical Section1 El Critical Section2 Normal Code Figure 27 Operation Sequences of Tasks with IPCP Related patterns and alternative solutions Related patterns The pattern CRITICAL SECTION provides general background material on mechanisms for dealing with shared resources in TT systems which involve task pre emption The following patterns describe some alternative ways of handling conflicts over shared resources e DISABLE TIMER INTERRUPT e RESOURCE LOCK e PRIORITY INHERITANCE PROTOCOL Alternative solutions IPCP vs PCP It is helpful to understand the differences in behaviour obtained when using PCP and IPCP When using PCP each task has an assigned static priority each resource has also been assigned a priority which is the highest priority of tasks that need access it i e its priority ceiling IPCP operates in a similar same way but there are two differences The first difference is that each task s dynamic priority is the maximum of its own static priority and its inheritance priority due to it blocking higher priority tasks The second difference is that a task can only lock a resource if its dynamic priority is higher than the ceiling priority of any currently locked resource Burns and Wellings 1997 ESRG 2012 07 01 Version 1 0 Page 45 Priority Normal Code N N Pr
82. te Do X in a Sandwich Delay END Do Y WCET approx 4 0ms Listing 7 Pseudo code for SANDWICH DELAY The timer is set to overflow after 5 ms a period slightly longer than the WCET of Do_X We then start this timer before we run the function and after the function is complete we wait for the timer to reach 5 ms value In this way we ensure that as long as Do_X does not exceed a duration of 5 ms Do_Y runs with minimum jitter as shown in Figure 33 NI938 sw g gs ON3 sw s 0s AN3 sw s as o js T 3 a w m Q d System ticks 10 ms Figure 33 Reducing the impact of variations in the durations of Do_X on the release jitter of Do_Y through the use of SANDWICH DELAY Sandwich delays are also found to be useful for systems involving pre emption for example TTH designs In such designs controlling the execution jitter of a pre emptive task using a delay slightly bigger than the WCET of the pre emptive task showed considerable reduction in the period jitter of the co operative task see Figure 34 NI938 OS NI938 OS NI938 OS NI938 GS System ticks Figure 34 Reducing the impact of variations in the durations of pre emptive task on the release jitter of co operative tasks through the use of SANDWICH DELAY in TTH designs ESRG 2012 07 01 Version 1 0 Page 52 Reliability and safety implications Use of Sandwich Delay is generally straight forward but there are thre
83. tems e PLANNED PRE EMPTION provides a way of achieving balancing for pre emptive systems Reliability and safety implications Extra care is needed while selecting the tasks sections of code to be balanced This is because balancing makes use of additional hardware and software Devoting resources unnecessarily to balance tasks which are not critical could lead to a fatality rather than a predictable system Overall strengths and weaknesses A BALANCED SYSTEM is more robust against the presence of various types of jitters in the system Results in a more predictable timing behaviour of the system Requires non exclusive access to some hardware resources for example timers Balancing a system requires extra effort in writing code for balancing which in turn increases CPU utilisation ESRG 2012 07 01 Version 1 0 Page 50 SANDWICH DELAY Pattern Context e You are using the pattern BALANCED SYSTEM e In your application you are running two activities one after the other Problem How can you ensure that the execution time of the tasks is always predictable so that the release time of the two activities is known and fixed Background Suppose we have a system executing two functions periodically using a timer ISR as outlined in Listing 6 Interrupt service Routine ISR invoked by timer overflow every 10ms void Timer ISR void Do X WCET approx 4 0ms Do Y WCET approx 4 0ms Listing 6
84. tern Languages of Program Design 4 503 536 Hughes Z M and M J Pont 2004 Design and test of a task guardian for use in TTCS embedded systems UK Embedded Forum Published by University of Newcastle Jones M 1997 What really happened on Mars from http research microsoft com mbj Mars_Pathfinder Mars __Pathfinder html Kalinsky D 2001 Context Switch Embedded Systems Programming Kirner R and P Puschner 2003 Discussion of Misconceptions about WCET Analysis 3rd Euromicro International workshop on WCET Analysis ESRG 2012 07 01 Version 1 0 Page 69 Kopetz H 1991 Event Triggered versus Time Triggered Real Time Systems Workshop on Operating Systems of the 90s and Beyond Kopetz H 1997 Real Time Systems Design Principles for Distributed Embedded Applications Kluwer Academic Publishers Kurian S and M J Pont 2005 Building reliable embedded systems using Abstract Patterns Patterns and Pattern Implementation Examples Second UK Embedded Forum Birmingham UK Published by University of Newcastle upon Tyne Labrosse J J 2000 Embedded Systems Building Blocks Laplante P A 2004 Real Time Systems Design and Analysis IEEE Press Liu C L and J W Layland 1973 Scheduling Algorithms for Multiprogramming in a Hard Real Time Environment Journal of the ACM 20 1 46 61 Liu J W S 2000 Real Time Systems Prentice Hall L
85. to transmit we should schedule the data transmission task to check the buffer at an interval gt 0 15 ms If we do this the process of copying data from the software buffer to the CAN hardware will take very little time usually a small fraction of a millisecond For very small designs e g 8 bit systems the memory requirements for the software buffer can prove significant If you can t add external memory in these circumstances you will need to use a small buffer and send data as frequently as possible but see the comment above In some cases hardware support can help to reduce both memory requirements and processor load For example if using UART based data transmission UARTs often have 16 byte hardware buffers if you have these available it makes sense to employ them Portability This technique is generic and highly portable Reliability and Safety Issues e Special care must be taken while defining buffer length the data transfer should not cause any buffer overflow e Applications that involve high amount of data transfer like video and DSP applications or data acquisition systems the use of buffer might not be a viable solution Overall strengths and weaknesses Use of buffered output is an easy solution for faster data transfer from a task running in an embedded application One has to be very careful while defining the buffer length inappropriate buffer definitions may cause buffer overflow and data loss ES
86. very short and known duration A BUFFERED OUTPUT consists of three key components e A buffer usually just an array implemented in software e A function or small set of functions which can be used by the tasks in your system to write data to the array e A periodic scheduled task which checks the buffer and sends a block of data to the receiving device when there are data to send Figure 15 provides an overview of this system architecture All data to be sent are first moved to a software buffer a very fast operation The data is then shifted one block at a time to the relevant hardware buffer in the microcontroller e g 1 byte at a time for a UART 8 bytes at a time for CAN etc this software to hardware transfer is carried out every 1ms for example using a short periodic task Data to be sent All data copied to buffer text image etc XX operation Buffer character array etc Schedule a task to send one block of data from the buffer every 1 ms for example Receiving device PC display etc Qs Figure 15 An overview of the BUFFERED OUTPUT architecture ESRG 2012 07 01 Version 1 0 Page 25 Hardware resource implications In most cases the CPU requirements for BUFFERED OUTPUT are very limited provided we take reasonable care at the design stage For example if we are sending message over a CAN bus and we know that each message takes approximately 0 15 ms
87. y of York PhD Thesis Bate I J 2000 Introduction to Scheduling and Timing Analysis The use of Ada in Real Time System IEEE Burns A and A J Wellings 1994 HRT HOOD a structured design method for hard real time systems Real Time Systems 6 6 73 114 Burns A and B Wellings 1997 Real Time Systems and Programming Languages Addison Wesley Buttazzo C G 2003 Rate Monotonic vs EDF Judgement Day LNCS Springer 2855 2003 67 83 Buttazzo C G 1997 Hard Real Time Computing Systems Predictable Scheduling Algorithms and Applications Kluwer Academic Publishers Buttazzo G C 2005 Rate Monotonic vs EDF Judgement Day Real Time Systems 29 1 5 26 Cain B G J O Coplien et al 1996 Social patterns in productive software development organisations Annals of Software Engineering 2 1 Cottet F J Delacroix et al 2002 Scheduling in Real Time Systems John Wiley amp Sons Cunningham W 1987 The CHECKS pattern language of Information Integrity Addison Wesley Gamma E R Helm et al 1995 Design Patterns Elements of Reusable Object Oriented Software Addison Wesley Gergeleit M and E Nett 2002 Scheduling Transient Overload with the TAFT scheduler Fall meeting of GI ITG specialized group of operating systems Hanmer R 2007 Patterns for Fault Tolerant Software John Wiley amp Sons Ltd Hanmer S R and G Stymfal 2000 An Input and Output Pattern Language Pat
88. y under all circumstances Consider the part of the code labelled A in Listing 5 If our system is fully pre emptive then our task can reach this point at the same time as the scheduler performs a context switch and allows say Task B access to the CPU If Task B also requires access the Port X we can then have a situation as follows e Task A has check the lock for Port X and found that the port is not locked Task A has however not yet changed the lock flag e Task B is then switched in Task B checks the lock flag and it is still clear Task B sets the lock flag and begins to use Port X e Task A is switched in again As far as Task A is concerned the port is not locked this task therefore sets the flag and starts to use the port unaware that Task B is already doing so As we can see this simple lock code violates the principal of mutual exclusion that is it allows more than one task to access a critical code section The problem arises because it is possible for the context switch to occur after a task has checked the lock flag but before the task changes the lock flag In other words the lock check and set code designed to control access to a critical section of code is itself a critical section This problem can be solved For example because it takes little time to check and set the lock code we can disable timer interrupt for this period see DISABLE TIMER INTERRUPT see this paper
Download Pdf Manuals
Related Search
Related Contents
a How-To Install PDF Pinnacle Version 4.0.20 Sony ZS-2000 User's Manual Jensen JiSS-20 User's Manual Sistema de Home Theater Integrado com Blu Rockbox user manual Doro PhoneEasy 715 gsm 103g White Servolor 2 Nuevo Aroma - Distribuciones Zaragoza, SA Philips MX3291B TV Copyright © All rights reserved.
Failed to retrieve file