140 likes | 235 Vues
Explore the development of tools enhancing embedded systems in specific domains like communication protocols and device drivers. Learn about real-time programming languages such as Esterel and the future of optimizing code for customized hardware and network interfaces.
E N D
Research Areas Stephen A. Edwards
Embedded Systems • Computers Masquerading as Something Else Casio Camera Watch Sony Playstation 2 Nokia 7110 Browser Phone Philips TiVo Recorder Philips DVD player
Long-term Goal • Developing tools to speed the development of embedded systems
Domain-Specific Languages • Little languages that fit the problem • More succinct description • Quicker to create • Easier to get right • More opportunities for optimization • General-purpose languages hindered by undecidability • Domain-specific languages much simpler M. C. Escher, Tower of Babel
Real-time languages: Esterel Big Ben • Synchronous language developed by Gerard Berry in France • Basic idea: use global clock for synchronization in software • Challenge: How to combine concurrency, synchronization, and instantaneous communication
Esterel Restart when RESET present every RESET do loop await A; emit B; if C emit D; pause end || loop if B emit C; pause end end Infinite loop Wait for next cycle with A present Run concurrently Same-cycle bidirectional communication
Esterel • Previous work • Compiler that gave 100x speedup on certain large programs • Has limitations • Owned by former employer • Current Projects • New, open compiler infrastructure designed for future research • Based on SUIF2 system
Esterel Compilation Plans • Apply discrete-event simulation techniques • Apply Program Dependence Graph representation • Concurrent representation used in optimizing compilers • Apply “localized partial interpretation” to expand parts of the system into finite-state machines • Techniques will point the way for other synchronous, concurrent languages
Languages for Device Drivers • Device drivers are those pieces of software that you absolutely need that never seem to work • Tedious, difficult-to-write • Ever more important as systems incorporate customized hardware
Best To Date • Thibault, Marlet, and Consel • IEEE Transactions Software Engineering, 1999 • Developed the Graphics Adaptor Language for writing XFree86 video card drivers • Report GAL drivers are 1/9th the size of their C counterparts • No performance penalty
GAL S3 driver (fragment) chipsets S3_911, S3_924; What driver supports port svga index := 0x3d4; Write address, then data port misc := 0x3cc, 0x3c2; register ChipID := sva(0x30); Logical register serial begin Access sequence for register misc[3..2] <= (3,- , -, -, -) W; seq(0x12) <=> (-, PLL1, -, -, -) R/W; end; identification begin Rules for identifying card 1: ChipID[7..4] => (0x8 => step 2, 0x 9 => S3_928); 2: ChipID[1..0] => (0x1 => S3_911, 0x2 => S3_924);
Future work • Develop language for network card drivers under Linux • Study many existing implementations • Develop prototype language, compiler • Explore challenge of porting to other OSes • Apply lessons to other classes of drivers
Languages for Communication Protocols • Many optimizations for implementing protocol code • Fast-path optimization • Collapsing layers • Tedious to implement manually • Tend to obfuscate code • Too high-level to be applied to, say, C code • Domain-specific language would allow these optimizations to be automated
Summary • Applying domain-specific languages to solve problems in embedded system design • New Esterel infrastructure for real-time programming • Languages for device drivers: network interfaces • Languages for implementing communication protocols