Instructor: Office: Phone: Email: Webpage: Office Hours: Dr. Janusz Zalewski Holmes Hall 411 239-590-7317 zalewski@fgcu.edu http://www.fgcu.edu/zalewski/ Friday 8:00-9:00am & 12:15-4:15pm Others by appointment. CEN 3213 Embedded Systems Programming (CRN 10375) Florida Gulf Coast University – Online Course Computer Science and Software Engineering Programs, College of Engineering Spring 2013 Course Syllabus http://itech.fgcu.edu/faculty/zalewski/CEN3213/CEN3213.html 1. Catalog Description Programming of embedded computer systems, that is, computing devices that are parts of a larger installation, from watches and cell phones, to medical devices, cars, and space vehicles. Software design principles, specific implementation constructs, and operating system kernels will be taught, supported by the use of software development tools. 2. Course Objectives and Learning Outcomes Students will learn fundamental concepts of designing and programming embedded computer systems and – more broadly – cyberphysical systems, including requirements specifications, architectural and detailed design, and implementation, focusing on real-time aspects of programming languages, operating system kernels, and hardware architectures. Object-oriented software engineering approach, supported by software tools in the design and implementation process will be emphasized. A security component will be an important part of this course. Learning the concepts will be enforced by projects to design and develop software applications of practical importance. Specifically, after completing this course, the student will acquire: understanding of the specifics of embedded and cyberphysical computer systems the ability to design for and program selected hardware architectures the ability to understand design trade-offs and take design decisions the ability to present engineering designs in writing and verbally. 3. Prerequisites COP 2001 Programming Methodology for level UG with min. grade of C or Instructor’s consent. 4. Reading Materials In this edition, there is no required textbook for this class, however, the following Lab Manual is required: Jon Titus, The Hands-on XBee Lab Manual, Elsevier/Newnes, 2012, ISBN 978-0-12-391404-0 Recommended books are listed at the end of this syllabus. All class readings are based on materials available from electronic sources or provided by Instructor on a weekly basis. By special arrangement with several professional magazines: - Circuit Cellar, http://www.circuitcellar.com/ - Dr Dobb’s Journal, http://www.ddj.com/ - Embedded Systems Design, http://www.embedded.com/ - Linux Journal, http://www.linuxjournal.com/ students will have access to selected monthly issues throughout the year, on per need basis. 5. Class Meetings This is a web based course, so face-to-face lectures are replaced by web modules and Internet readings, however, project meetings are essential for reporting progress and can be scheduled individually. The Orientation Meeting is on Friday, January 11, 2:00-3:15pm, in Holmes 402. 6. Course Outline (security components will be added to selected modules) Week 1: Week 2: Week 3: Week 4: Week 5: Week 6: Week 7: Week 8: Week 9: Week 10: Week 11: Week 12: Week 13: Week 14: Week 15: Week 16: Introduction. Project Discussion. Case Studies. High-Level Design Principles & Tools Designing the Software Architecture – Static and Dynamic Descriptions Integrated Development Environments (with Eclipse) Programming Language Features for Embedded Applications: C/C++, Java, J2ME, exception handling, mixed language programming Advanced Programming: Real-Time Benchmark and Time-Triggered Systems Real-Time Kernels and Operating Systems (RTOS): tasks and threads, scheduling, intertask communication Midterm Project Verification Spring Break Advanced RTOS Concepts: pre-emption, re-entrancy, priority inversion, rate monotonic scheduling, device drivers External Hardware Devices, Computer Buses, Interrupts, Clocks/Timing Microcontrollers and FPGA’s Safety, Reliability and Fault Tolerance Neglected Topics & Comprehensive Test (offered via ANGEL) Extra week for project completion and discussions Project Finalization and Verification (with demos) 7. Administrative Issues Project: Software Development Projects are an essential part of this class. Assessment will be based on two different projects: one individual based on Arduino and XBee experiments and another, preferably twoperson team project, although individual projects are permissible, based on a different topic discussed with the Instructor. Detailed topics and schedule will be announced in due course. Readings and Assignments: Readings related to current topic will be assigned every week. Specific Programming Assignments and other Homework will be done throughout the semester, focusing on the concepts learned from these readings. In particular, a Lab Assignment will be given to remotely access a lab station and develop a program to control the station’s equipment via the web. Quizzes and Exams: Three to four Quizzes and a Comprehensive Test will be offered via ANGEL (on dates To Be Determined). Grading Policy: Projects 50%; Programming/Lab/Homework Assignments 25%; Quizzes and Comprehensive Test 25%. A: 90-100%; B: 80-89.9%; C: 70-79.9%; D: 60-69.9%; F: < 60%; plus/minus grades at the discretion of Instructor. Attendance: Since this is a web-based course, face-to-face lectures will not take place. However, the student is responsible for all assignments on a weekly basis, including meeting the Instructor, if requested, to report progress on the projects. No make-up will be given for missed quizzes, tests or assignments, unless a case is made in advance with Instructor’s approval. Ethic, Disabilities Act, and Observance of Religious Holidays. Instructor follows general university policies as spelled out, respectively, in: Academic Behavior Standards & Academic Dishonesty Policy in the Student Guidebook (sections on “Student Code of Conduct” and “Policies and Procedures”). See: http://studentservices.fgcu.edu/JudicialAffairs/ Americans with Disabilities Act of 1990 – services provided by Office of Adaptive Services See: http://studentservices.fgcu.edu/adaptive/ Policy 4.005 Student Observance of Religious Holidays See: http://www.fgcu.edu/generalcounsel/policies-view.asp Disclaimer: This syllabus has been prepared to the best of Instructor’s knowledge, but the right is reserved to modify or adjust it slightly depending on circumstances beyond Instructor’s control. Recommended Books on Embedded Systems M.A. Adamski et al. (Eds.), Design of Embedded Control Systems, Springer-Verlag, Berlin, 2013 B. Akesson, K. Goossens, Memory Controllers for Real-Time Embedded Systems, Springer-Verlag, Berlin, 2012 M. Asif, UDP/IP for Embedded Systems, Lambert Academic Publishing, 2010 P. Athanas, Embedded Systems Design with FPGAs, Springer-Verlag, Berlin, 2012 S. Ball, Analog Interfacing to Embedded Microprocessor Systems, Newness, 2003 M. Banzi, Getting Started with Arduino, O’Reilly, Sebastopol, Calif., 2009 R.H. Barnett et al., Embedded C Programming and the Atmel AVR, Thomson Delmar Learning, 2003 M. Barr, Programming Embedded Systems in C and C++, O’Reilly, 2002 A. Berger, Embedded Systems Design, CMP Books, 2002 I.C. Bertolotti, G. Manduchi, Real Time Embedded Systems Design and Analysis, CRC Press, Boca Raton, FL, 2012 R. Bishop, Learning with Labview 7 Express, Prentive-Hall, 2004 G. Borenstein, Making Things See: 3D Vision with Kinect, Processing, Arduino, and MakerBot, O’Reilly, 2012 J.F. Brown, Embedded Systems Programming, Van Nostrand Reinhold, 1993 R. Burdick, Essential Windows CE Application Programming, John Wiley & Sons, 1999 J. Campbell, C Programmer’s Guide to Serial Communications, SAMS, 1994 P.P. Chu, Embedded SOPC System with Altera NIOS-II Processor and VHDL Examples, John Wiley & Sons, 2011 P. Dibble, Real-Time Java Platform Programming, Prentice Hall, 2002 B.P. Douglass, Real-Time Design Patterns, Addison-Wesley, 2003 B.P. Douglass, Real-Time UML, Addison-Wesley, 2004 B.P. Douglass, Design Patterns for Embedded Systems in C, Elsevier/Newnes, Amsterdam, 2012 R. Dubey, Introduction to Embedded System Design Using Field Programmable Gate Arrays, Springer-Verlag, 2013 L. Edwards, Embedded System Design on a Shoestring, Newness, 2003 S.A. Edwards, Languages for Digital Embedded Systems, Springer-verlag, Berlin, 2013 F. Flammini, Dependability Assurance of Real-Time Embedded Control Systems, Nova Science Publishers, 2011 A. Forrai, Embedded Control System Design, Springer-Verlag, Berlin, 2012 D.V. Gadre, Programming the Parallel Port, R&D Books, 1998 B.O. Gallmeister, Posix.4: Programming for the Real World, O’Reilly, 1995 J. Ganssle, The Art of Designing Embedded Systems, Butterworth, 2002 N. Grattan, M. Brain, Windows CE 3.0 Programming, Prentice Hall, 2001 R. Grehan et al., Real-Time Programming, Addison-Wesley, 1998 S. Heath, Embedded Systems Design, Elsevier, 2003 T.F. Herbert, Linux TCP/IP Networking for Embedded Systems. Second Edition, Charles River, Boston, Mass., 2007 C. Hollabaugh, Embedded Linux: H/W, S/W, and Interfacing, Addison-Wesley, 2005 K. Iniewski, Embedded Systems: Hardware, Design and Implementation, John Wiley and Sons, 2012 M.T. Jones, TCP/IP Application Layer Protocols for Embedded Systems, Charles River, Boston, Mass., 2002 A. Kcholi, Pro Windows Embedded Compact 7: Producing Device Drivers, Apress, 2011 J.F. Kelly et al., LEGO Mindstorms: NXT One-Kit Wonders, No Starch Press, San Francisco, 2009 D. Kleidermacher, M. Kleidermacher, Embedded Systems Security, Elsevier/Newnes, Amsterdam, 2012 H. Kopetz, Real-Time Systems. Design Principles for Distributed Embedded Applications, Springer-Verlag, 2011 J.J. Labrosse, Embedded Systems Building Blocks, R&D Books, 1995 E.L. Lamie, Real-Time Embedded Multithreading: ThreadX & ARM, CMP Books, 2005 P. Laplante, Real-Time Systems Design and Analysis, IEEE Press, 2004 L. Lavagno et al., UML for Real: Design of Embedded Real-Time Systems, Kluwer, 2003 J. Ledin, Embedded Control Systems in C/C++, CMP Books, 2004 E. Lee et al., Introduction to Embedded Systems: A Cyber-Physical Systems Approach, Lulu Press, 2011 D.W. Lewis, Fundamentals of Embedded Software, Prentice hall, 2002 Q. Li, Real-Time Concepts for Embedded Systems, CMP Books, 2003 E. Lipiansky, Embedded Systems Hardware for Software Engineers, McGraw-Hill, New York, 2011 M. Margolis, Make an Arduino-Controlled Robot, O’Reilly, Sebastopol, Calif., 2013 P. Marwedel, Embedded Systems Design, Springer-Verlag, Berlin,, 2012 R. Miles, Start Here: Learn the Kinect API, O’Reilly, Sebastopol, Calif., 2012 T. Noergaard, Embedded Systems Architecture, Elsevier/Newnes, Amsterdam, 2012 T. Noergaard, Demystifying Embedded Systems Middleware, Elsevier/Newnes, Amsterdam, 2012 J. Orwant, Designing Embedded Hardware, O’Reilly, 2002 S. Pavlov, P. Belevsky, Windows Embedded CE 6.0 Fundamentals, Microsoft Press, Redmond, Wash., 2008 S. Phung, D. Jones, T. Joubert, Professional Windows Embedded Compact 7, John Wiley & Sons, 2011 K.H. Pries, J.M. Quigley, Testing Complex and Embedded Systems, CRC Press, Boca Raton, FL, 2011 M. Qiu, J. Li, Real-Time Embedded Systems, Optimization, Synthesis, and Networking, CRC Press, 2012 M. Samek, Practical UML Statecharts in C/C++, Elsevier/Newnes, Amsterdam, 2012 J. Sanchez, M.P. Canton, Embedded Systems Circuits and Programming, CRC Press, Boca Raton, FL, 2012 R.A. Santos, A.E. Block, Embedded Systems and Wireless Technology, CRC Press, Boca Raton, FL, 2012 M. Schimdt, Arduino: A Quick-Start Guide, The Pragmatic Bookshelf, 2011 B. Selic et al., Real-Time Object-Oriented Modeling, John Wiley and Sons, 1994 D. Simon, Embedded Software Primer, Addison-Wesley, 1999 M. Soto et al., Memory Allocation Problems in Embedded Systems, John Wiley and Sons, 2012 T. Stapko, Practical Embedded Security, Elsevier/Newnes, Amsterdam, 2008 J.A. Titus, The Hands-On XBeee Lab Manual, Elsevier/Newnes, Amsterdam, 2012 J.A. Titus, T.B. O’Hanlan, The Digital I/O Handbook, Sealevel Systems, 2004 R. Toulson, T. Wilmshurst, Fast and Effective Embedded Systems Design, Elsevier/Newnes, Amsterdam, 2012 F. Vahid, T. Givargis, Embedded System Design, John Wiley and Sons, 2002 F. Vahid, T. Givargis, B. Miller, Programming Embedded System Design, John Wiley and Sons, 2012 J. Valvano, Embedded Microcomputer Systems, Nelson Engineering, Florence, KY, 2011 T. Westcott, Applied Control Theory for Embedded Systems, Elsevier/Newnes, Amsterdam, 2013 E. White, Making Embedded Systems, O’Reilly, Sebastopol, Calif., 2012 T. Wilmshurst, Designing Embedded Systems with PIC Microcontrollers, Elsevier/Newnes, Amsterdam, 2013 J.Y. Wilson, Building Powerful Platforms with Windows CE, Addison-Wesley, 2001 W. Wolf, Computers as Components: Principles of Embedded Computing System Design , Morgan Kaufmann, 2012 K. Yaghmour, Building Embedded Linux Systems, O’Reilly, Sebastopol, Calif., 2003 M. Zurawski, Embedded Systems Handbook, CRC Press, 2005 K. Zurell, C Programming for Embedded Systems, R&D Books, 2000