|EECS388 Embedded Systems Fall 2021
Homework and Quizzes
- 08/23/2021 Birth of the EECS388 web page for Fall 2021.
- 08/29/2021 Lecture notes are released here before each class.
- 08/29/2021 Labs will be in session after the first week of the classes.
- 09/07/2021 midterm date is changed to October 7th.
- 09/20/2021 The link to the Informal Early Feedback is shared in Canvas. Please take the survery.
- 09/26/2021 Midterm Sample Questions uploaded.
- 09/30/2021 Midterm Sample Solution uploaded.
- 10/07/2021 Midterm solution uploaded.
- 10/19/2021 The deadline for midterm regrade request is end of day Thursday October 21st.
- 10/25/2021 The link to the excel sheet of final project teams is added. You have until end of the day of Friday October 29th to form your teams.
- 10/26/2021 Final project overview slides uploaded.
- 10/31/2021 Final project released. Please find final project description in final project section
- 10/31/2021 Final project teams released. Please check your team info in final project section
- 11/28/2021 Link for booking an appointment for extra credit demonstration added. Please check final project section
- 12/06/2021 Final sample questions uploaded.
- 12/07/2021 Final sample solution uploaded.
Prof. Mohammad Alian
Office Hours: Tu,Th 12:15 - 1:00 PM
Graduate Teaching Assistants (GTAs)
Office: EATN 3002
Office Hours: Wednesday 10:00 - 12:00 PM
Office: EATN 3002
Office Hours: Friday 11:00 - 1:00 PM
Supplimental Instructors (SIs) and Graders
Office: EATN 3002
Office Hours: Thursday and Friday 1:00 - 2:00 PM
Office: EATN 3002
Office Hours: TBD
Office: EATN 3002
Office Hours: Thursday 2:00 - 4:00 PM
Lecture time: Tu, Th 11:00 AM - 12:15 PM
Class: SLAW G192
An embedded system is a smart system with special-purpose computation capabilities. You can see examples of embedded systems every day in smart appliances, cars, medical devices, etc. In this course, you are going to learn about the hardware and software architecture of embedded systems. At the end of the course, you will learn how to program a microprocessor to interact with the physical world through sensors and actuators. This course is divided into two parts: lectures and labs. Lectures will teach you the theory about embedded systems, and in the labs you will implement what you learned during the lectures. Here is a (tentative) list of the topics that we will cover in the lectures:
- Introduction to embedded systems: what is an embedded system and the differences between embedded systems and general-purpose computers.
- Embedded software echo-system: Introduction to tools and environment for developing embedded software (build toolchain, GNU make, IDEs, git).
- C programming refresher: a brief introduction to C.
- RV32 ISA: a brief introduction to RISC-V assembly language.
- Microprocessor's memory address space.
- I/O (sensors and actuators): how to interact with the physical world using sensors and actuators.
- Interrupt: Difference between interrupt and polling, how to use them, and the implications of using them.
- Concurrency and threads: how to utilize the available parallelism in the hardware and develop concurrent embedded software.
- Scheduling: Real-time scheduling concepts in Linux.
- Networking: Ethernet and TCP/IP networking software stack.
- CPU and memory architecture: Learn how instructions get executed in the hardware. Studying the micro-architecture of a basic RISC-V, single-cycle processor.
Refer to the course syllabus for additional details
We use Canvas for discussion and course announcements. The lecture notes and other course materials will be uploaded to the course website.
You do not need to study any textbook for this course. However, here is a list of textbooks that you may find helpful to understand the topics better. Please consult with me to give you exact pointers for which chapters in these textbooks are relevant to which topic.
(PP) "Introduction to Computing Systems: From Bits and Gates to C and Beyond" by Y. Patt, S. Patel (any edition)
(MNN) "AVR Microcontroller and Embedded Systems: Using Assembly and C" by M. Mazidi, Sa. Naimi, Se. Naimi (any edition)
(PH) "Computer Organization and Design, a Hardware/Software Interface" by D. Patterson, J. Hennessy (any edition)
(AS) Introduction to Embedded Systems - A Cyber-Physical Systems Approach, by Edward Ashford Lee and Sanjit Arunkumar Seshia.
- Lecture 01: Introduction [PPT]
- Lecture 02: Embedded Software Development [PPT]
- Lecture 03: C Refresher [PPT][recommended reading: Ch2_PP, ApendixD_PP]
- Lecture 04: Computer Organization [PPT][recommended reading: Ch4_PP]
- Lecture 05: LC-3 [PPT][recommended reading: Ch5_PP]
- Lecture 06: LC-3 DataPath [PPT][recommended reading: Ch5_PP][ Class Notebook]
- Lecture 07: LC-3 Assembly [PPT][recommended reading: Ch7_PP]
- Lecture 08: LC-3 Assembly Instruction Set [PPT][recommended reading: Ch7_PP, AppendixA_PP]
- Lecture 09: Intro to Operating System [PPT][recommended reading: Ch9_PP]
- Lecture 10: Subroutines [PPT][recommended reading: Ch8_PP]
- Lecture 11: I/O [PPT][recommended reading: Ch9_PP]
- Lecture 12: System Call for I/O [PPT][recommended reading: Ch9_PP][Class Notebook]
- Lecture 13: Interrupt [PPT][recommended reading: Ch9_PP]
- Lecture 14: I/O Interfaces [PPT][recommended reading: Ch11_MNN]
- Lecture 15: I/O Devices: ADC/DAC [PPT][recommended reading: Ch13_MNN]
- Lecture 16: I/O Devices: DC Motors [PPT][recommended reading: Ch14_MNN and Ch16_MNN]
- Lecture 17: Introduction to Scheduling [PPT][recommended reading: Ch12_AS]
- Lecture 18: Realtime Scheduling [PPT][recommended reading: Ch12_AS]
- Lecture 19: RM Schedulability [PPT][recommended reading: Ch12_AS]
- Lecture 20: Mutual Exclusion and Scheduling [PPT][recommended reading: 12.4_AS and 11.2.3_AS]
Midterm exam is scheduled for Thursday October 7th from 11:00AM - 12:30PM. The midterm covers topics discussed before the class on October 5th.
Final exam is on Friday Dec 17th from 10:30AM - 1:00PM. The exam will cover all the topics discussed during the semester.
Midterm Sample Questions [PDF][Midterm Sample Solution PDF]
Midterm solution [version 1 PDF][version 2 PDF]
Final Sample Questions [PDF]
Final Sample Questions Solution [PDF]
Each student needs to attend one lab section every week. All students will be given access to a private GitLab repo . Before each lab, a branch with the name labXX (XX is the lab number) will be created within the repo that contains the lab instruction and files for that week's lab exercise.
To get started with the labs you need to first clone your repo (replace you KUOnlineID with your online ID):
$ git clone firstname.lastname@example.org:eecs388-Fa2021/student-repos/KUOnlineID.git
To fetch the branch correspondig to a week's Lab:
$ cd KUOnlineID
$ git fetch; git checkout labXX
To push your local modifications to the remote repository:
$ git add .
$ git commit -m "Final Commit-LabXX"
$ git push origin labXX
Final Project Teams [xlsx]
Final Project Overview [PPT]
Final Project Description [docx]
Please use the following link to book a time for demo. You only need to book a time if you have extra credit implementation. Only one student from each team should book. Final Project Extra Credit Demo Online Booking