200 likes | 323 Vues
This outline provides a comprehensive overview of control systems in embedded systems, focusing on key concepts such as open-loop versus closed-loop systems, sensors, actuators, and system performance optimization. It emphasizes the importance of profiling and iterative enhancements to eliminate bottlenecks, ensuring efficient design and operation. Key considerations include the use of assembly language for optimization, the significance of timing constraints, and the analysis of system performance to ensure adherence to user specifications. This is essential knowledge for anyone involved in the design of robotics and automation systems.
E N D
ELN5622Embedded SystemsClass 9Spring, 2003 Aaron Itskovichitskova@algonquincollege.com
Outline • Control systems/robotics • Sensors • Actuators • Feedback (Open loop vs. closed loop) • System performance • Profiling • Optimization • Speed vs. size • Bottlenecks • Stack depth • Iterative enhancements
Control systems introduction • What is control system?
Control systemsIntroduction • Control design specifications provided by the user usually come asa vague set of wants,e.g. • The door has to open before a person can walk into the glasspanel. • The train has to slow down enough to stop before theend of the track. • The same output power should be supplied to the transmittereven during changes in supply voltage. • Vibration of the read head of the CD reader due to a car drivingon a normal road should not cause the CD to lose track.
Open loop vs. Closed loop Open loop Closed loop
Control system example • House temperature control • Sensors • Temperature • Humidity • Actuators • Furnace on/off • Fan • Air conditioner on/off
Sensors • Temperature • Contact: Thermocouple, resistance based, thermistors • Non contact: Infrared specter, Optical specter • Distance (Infrared, ultrasound, radio) • Motion/position indication • Image recognition/machinevision • Force (etc pressure)
Actuators • DC motor control (PWM) • Step motor • Servo motor • Switches • MEMS
Optimization • Things to consider when programming : • Register, cache and main memory utilization • System timing constraints • Variable optimization • Number of branches and function calls • Stack depth • Resulting application size
Assembly may be required • In order to improve the run-time efficiency of some algorithms, it may be necessary to code them in assembly language • This practice may also be used in an effort to condense the space required to store the program data in the system memory
count1( unsigned char c) { unsigned char mask = 1; unsigned char count = 0; while (c) { if (c && mask) count++; mask = mask << 1; } return count; }
pshx ; allocate 2 byte auto variable des ; allocate 1 byte auto variable pshy ; Save stack frame tsy ; Set current stack frame ldx *ZD5 pshx ; pushed register *ZD5 ;;;END PROLOGUE ldab *ZD0+1 stab 2,y ; movqi: *ZD0 -> 2,y ldab #1 stab 3,y ; movqi: #1 -> 3,y ldab #0 stab 4,y ; movqi: #0 -> 4,y L2: ldab #0 stab *ZD5+1 ; movqi: #0 -> *ZD5 tst 2,y ; tstqi: MEM:2,y bne .+5 jmp L5 ; (beq) long branch ldab #1 stab *ZD5+1 ; movqi: #1 -> *ZD5 ; END L5: ldab *ZD5+1 ; tstqi: R:*ZD5 beq .+5 jmp L4 ; (bne) long branch jmp L3 L4: ldab #0 stab *ZD5+1 ; movqi: #0 -> *ZD5 tst 2,y ; tstqi: MEM:2,y bne .+5 jmp L7 ; (beq) long branch tst 3,y ; tstqi: MEM:3,y bne .+5 jmp L7 ; (beq) long branch ldab #1 stab *ZD5+1 ; movqi: #1 -> *ZD5 L7: ldab *ZD5+1 ; tstqi: R:*ZD5 bne .+5 jmp L6 ; (beq) long branch ldab 4,y addb #1 stab 4,y ; addqi3: 4,y by #1 -> 4,y
L6: ldab 3,y aslb stab 3,y ; ashlqi3: 3,y by #1 -> 3,y jmp L2 L3: ldab 3,y clra std *ZD5 ; zero_extendqihi2: 3,y -> *ZD5 ldd *ZD5 std *ZD0 ; movhi: *ZD5 -> *ZD0 jmp L1 jmp L1 jmp L8 jmp L1 L8: L1: ;;;EPILOGUE pulx ; Pulling register *ZD5 stx *ZD5 puly ; Restore stack frame pulx ; deallocate 2 byte auto variable ins ; deallocate 1 byte auto variable rts ; return from function ;;;----------------------------------
What to optimize • In order to enhance the performance of the system, we must first determine where it is deficient! • We get this information by performing tests on the system • The tests must be representative applications or kernels of the representative applications
Profiling • One method of finding the performance of the system is to profile its performance • In software, each instruction, instruction block, loop or function may be analyzed gather critical information • This information may include frequency of execution, execution time in a loop, or latencies associated with function calls • This information provides the designer with detailed information to perform application tuning
Bottleneck Analysis • One consequence of the Forced Flow Law is that the device utilization Ui is directly proportional to the service demand being placed on the device Di. • In more practical terms, if the memory system has the slowest service time but it has a high demand (large number of accesses) placed on it, it becomes the performance limiting factor for the entire system.
Iterative performance enhancement • In general, as you proceed to fix each bottleneck, you will undoubtedly discover new ones • Performance enhancements for embedded systems may become an iterative process • This is especially true if the system has to perform tasks within strict time bounds
Bottleneck elimination • As a general rule, the largest system bottleneck should be eliminated first • Once this is done, each newly discovered bottleneck must be recursively eliminated • Remember, sometimes a hardware bottleneck is caused by poor programming practices • The embedded system designer must be mindful of all system aspects (hardware and software)
Software optimisation • Speed vs. size • Lookup vs. search • Table based approach • Loop transformation • branching • Interrupt vs. Polling
Hardware optimizations • DMA (burst, cycle stealing, ..) • Buffers (FIFO) • Co-processors • Floating point Arithmetic • Communication