Interdisciplinary Embedded Systems Design: Integrating Hardware-Oriented Embedded Systems Design with Software-Oriented Embedded Systems Development

The rapid proliferation of embedded systems designs has opened opportunities for both computer engineers and computer scientists in recent time, and promises to do so in the foreseeable future. With the advances in this field, however, the need for a more multidisciplinary approach to embedded systems education has arisen, as modern embedded systems design relies heavily on the integration of both hardware and software design. Due to the diverse backgrounds that are becoming not only recommended, but also required, providing students with an educational experience of the holistic design of a modern embedded system is becoming a bigger challenge. Both the Electrical and Computer Engineering curricula and the Computer Science curricula are filled to overflowing with required courses as well as upper-level technical electives to provide opportunities to explore the application of students’ knowledge in depth in particular fields. How then do we develop an Embedded Systems course that provides this holistic design in the limited amount of time afforded by a quarter or semester course? One approach that has been tested in Baylor University’s School of Engineering & Computer Science (ECS) is the integration of the Embedded Systems Design course taught in Electrical and Computer Engineering, with the Embedded Systems course taught in Computer Science. [1] This paper will document the original courses and their prerequisite coursework, the path toward integration of the group design project, the prototype testing of this approach conducted in 2017, an outline of the instruction provided to the students, and the assessment of the interdisciplinary approach to the project phase of both courses. Introduction Over the past decade computer technology has become ubiquitous in our everyday lives. From digital camera, to the embedded systems that make up current vehicles, to automated highways, to home security systems, to automated household appliances, to robotic manufacturing, to integrated medical devices, to communications systems, even the term “embedded systems” has transcended previous definitions to now embody any “engineering artifact involving computation that is subject to physical constraints. ” [2] These are examples of some of the implementations of embedded systems design that are pushing existing technology to its limits, and going past many existing applications, and forcing us to rethink our process of teaching this subject. In today’s automotive industry, as each new vehicle design receives yet another control unit, “software complexity escalates to the point that current development processes and tools can no longer ensure sufficiently reliable systems at affordable cost. ” [3] In this challenge lies an opportunity for the disciplines of computer science and electrical engineering to recognize the need for professionals who are able to bridge the divide between the disciplines and “integrate computation and physicality for the bottom up,” using non-traditional design methods. [4],[5] In Baylor University’s School of Engineering and Computer Science, two existing courses in embedded systems, each taught from differing perspectives, have joined to integrate software and hardware design and implementation in their group projects. This paper will discuss the existing courses, the design and development of multi-disciplinary group projects, implementation of these projects, and lessons learned in the beta test of this design. Research Goals The goal of this experiment was to determine whether the students involved in a multidisciplinary group project had a better, more enhanced experience than those not participating in a multi-disciplinary group, as measured by a pre-project survey and a post-project survey. ELC 4438, “Embedded Systems Design” ELC 4438, “Embedded Systems Design,” has been taught as a required upper-level course in Baylor University’s Department of Electrical Engineering, currently deployed in a 4-hour semester course. Although the focus is mainly on the design and implementation of embedded computer systems using microcontrollers, sensors and data conversion devices, actuators, visual display devices, timers, and applications specific circuits, it also includes some software design using microprocessor cross-development systems and real-time operating system principles. The main objective of the course is for students to learn to design and implement embedded computer solutions that meet specific system needs and/or requirements. In addition, during the course students are expected to: 1. Demonstrate understanding of embedded system design criteria 2. Design embedded systems and produce design rationale 3. Implement embedded system software solutions 4. Demonstrate understanding of real-time scheduling, priorities, and operating systems 5. Select hardware solutions that meet physical, computational, and interface requirements 6. Demonstrate a basic understanding of the Internet of Things (IoT) and distributed systems 7. Complete a final project that demonstrates the lifecycle of systems development The means to evaluating these objectives was a combination of homework (10%), a series of labs (30%), two midterm exams (30%), and a final project (30%). The homework and labs, in particular, provided hands-on opportunities to apply what was learned, leading up to the final project. Homework was assigned to cover topics including: • SysTick: intended to familiarize students with the SysTick Timer and begin to think about how to use it to control time in the labs • Digital Thermometer Design: intended to demonstrate knowledge and application of the design process • TWIM Diagrams: application of Two-Wire Interface Master (TWIM) protocol to communicate with the temperature sensor • Scheduling: application of various scheduling algorithms, dependencies, and the graphical representation of these schedules • Project Idea Submittal: research and compilation of various group project ideas The labs included a series of in-class demonstrations of the understanding and integration of: • Lab 1: Introduction to the Atmel SAM4L XPlained Pro – GPIO and Polling • Lab 2: LCD Light Sensor Lab LCD Control, Light Sensor Input, Serial I/O • Lab 3: Interrupt Driven Lab – Interrupt Priorities, Nested Interrupts • Lab 4: Digital Thermometer Lab – TWIM (IC) Temperature Sensor Interface/Integration • Lab 5: Static Scheduler – Real-Time Scheduling, Timer Counters • Linux Lab – Linux Refresher • BeagleBone Black Wireless (BBBw) Setup • BBBw Flashlight Lab GPIO • BBBw TMP36 Lab ADC • BBBw LED Dimmer Lab – DAC (PWM) • BBBw Motor Control Lab – Power Circuitry • BBBw IoT Network Lab – Network Sockets CSI 4v96, “Embedded Systems” CSI 4v96, “Embedded Systems,” is an upper-level computer science elective that was introduced in the fall of 2016. It is a variable-hour “Special Topics” course in the computer science curricula, currently deployed in a 3-hour semester course. Different than ELC 4438, the course introduces embedded systems from a computer science prospective using the BBBw embedded Linux platform. The course assumes mastery of systems programming, software design, algorithms, and a variety of operating systems. However, the course also expects students to • Review, understand, and apply basic circuits principles • Understand and demonstrate the scheduling of hardware resources • Demonstrate knowledge and application of hardware constraints when designing software for embedded systems • Demonstrate understanding of discrete components, use of transistors and FETs as switches, interconnection/interface to logic gates, and analog-to-digital conversion • Demonstrate application of control of BBBw general purpose input/output (GPIO) pins through software • Demonstrate application of cross-compilation and the Eclipse integrated development environment (IDE) • Demonstrate understanding of bus communication • Demonstrate understanding and application of the IoT using a variety of devices communicating through a variety of communication protocols Evaluation of these objectives was conducted through a variety of Labs and Assignments (30%), two midterm exams (40%), and a final project (30%). The purpose of the labs and assignments, in particular, prepared students to apply what they had learned in the application of their final projects. A series of homework assignments were assessed, including: • Assignment (A)1: Compare and contrast several current microcontrollers/small board computers against a wide variety of performance characteristics • A2: Implementation of a “die” object in Java Script, rolling the die 60,000 times, verifying the frequency distribution • A2Extra Credit: Creation of a binary clock in Java Script • A3: Circuits Exercises • A4: IoT Literature Search • A5: Use and application of the ThingSpeak API The labs provided an evaluation of student’s understanding of what they had learned through a variety of software and hardware interfaces: • Lab 1: Debian flashing and setup • Lab 2: Wifi setup, update packages, install ntpdate, add user account (primary, instead of “root”) • Lab 3: Updating packages • Lab 4: JavaScript lab, access to BBBw as a local server • Lab 5: TMP36 Sensor Lab • Lab 6: TMP36 Sensor Lab, Part II • Lab 7: LED Lab • Lab 8: Digital I/O • Lab 9: Analog I/O • Lab 10: Apache Web Server • Lab 11: TMP36 Web Pages • Lab 12: Java Lab • Lab 13: Virtualbox Eclipse Lab • Lab 14: Java VM • Lab 15: Switches and RBG LED • Lab 16: Light Sensor • Lab 17: ThingSpeak • Lab 18: Bluetooth • Lab 19: ADXL345 Accelerometer • Lab 20: RFID Lab Joint Group Project Design & Development The multidisciplinary group project in CSI 4v96 and ELC 4438 began right after midterm. Students from CSI 4v96 met with ELC 4438 during the simultaneously-scheduled regular lecture period for both courses. Both classes were introduced to the project phase, where they would decide on projects, with an overview of the evaluation artifacts: 1. Pro