Embedded software is found in most electronic devices designed today. Embedded software controls our cell phones, microwaves, network routers, automobiles, and industrial controls. Each of these embedded systems is unique and highly customized to the specific application. As a result, embedded systems development is a widely varying field that can take years to master.
This course will overview some of the basic principles of writing software for embedded systems. The course will survey the issues and discuss the various techniques for dealing with them. In particular, the course discusses approaches to the appropriate use of the real-time operating systems upon which much embedded software is based. In addition to explaining what these systems do, this course provides guidance on how you can use them most effectively.
The information in this course is not specific to any microprocessor or real-time operating system, nor is it oriented toward any particular software design methodology. The principles are the same, regardless of which microprocessor, which real-time operating system, and which software design methodology you use. We will concentrate on principles that you can apply to almost any embedded system project.
The material in this course will provide the necessary information to understand the embedded systems development cycle and the specialized aspects of developing and testing software in this environment. This course will also discuss the design considerations unique to embedded systems. The course will cover the key methods and technologies for each phase of the development process: specification, partition, design, integration, validation, and maintenance and upgrade.
Course Topics Will Include:
- What is an embedded system?
- What is a real-time system?
- Examples of embedded and real-time systems
Hardware Fundamentals for the Software Engineer
- Embedded processors
- Digital signal processors
- Interfacing to the real world; basic peripherals
- Multicore processors (heterogeneous and homogeneous)
Embedded Software Development
- The partitioning decision
- The embedded design life cycle
- Embedded software development using Agile
- Programming and implementation guidelines
- Real-time building blocks
Modeling Embedded Systems
- Modeling real-time embedded systems
- Specifying behavior using sequence enumeration
- Embedded software and interrupts
Embedded Software Architectures
- Software architectures—round robin/cyclic executive, function-queue, and real-time operating systems
- Multicore software architectures for embedded systems
- SMP and AMP software architectures
Operating Systems for Embedded Systems
- Real-time operating systems (task and task states, system services, messages, timers, events)
- Overview of scheduling policies
- Rate Monotonic Analysis
- Priority inversion
- Case study on priority inversion
- Linux for embedded systems
Embedded Software Development Tools
- Host and target machines
- Linker/locators for embedded software
- Simulators, IDEs, code generation
- Development tools for multicore systems
Optimizing Embedded Code
- Goals of optimization
- Performance optimization
- Memory optimization
- Power optimization
Testing and Debugging Embedded Systems
- Debug in embedded systems
- Testing techniques for embedded systems
- Debugging multicore embedded processors
Embedded Software Application Areas
- Safety critical systems
- Embedded systems for automotive
- Networking systems for embedded
- Multicore case study
Rob Oshana has 30 years of experience in the software industry, primarily focused on embedded and real-time systems for the defense and semiconductor industries. He holds BSEE, MSEE, MSCS, and MBA degrees and is a Senior Member of IEEE. Rob has been heavily involved in the development of both the CSDA and CSDP Assessment courses and is a member of several Advisory Boards including the Embedded Systems Group, where he is also an international speaker. He has over 100 presentations and publications in various technology fields and has written a book on embedded software technology for signal processing. Rob is an adjunct professor at Southern Methodist University, where he teaches graduate software engineering courses. Rob also has extensive international teaching experience. He is a Distinguished Member of Technical Staff and Director of Global Software R&D for Networking and Multimedia at Freescale Semiconductor.
Tuition and Available Discounts
IEEE CS Member: $595
Non IEEE CS Member: $695
Early Bird Discount: $100 off for payments received by 21 September, 2012
Group discounts and custom on-site presentations available for three or more. Call +866 681-7613 for more information or email email@example.com.
- Computer Magazine - 12 issues
- 4,300 + online courses
- 600 Safari Books Online titles
- Best discounts on:
- Products and services
- Free local IEEE Computer Society chapter membership