ECEN 5823
Spring 2024
Internet of Things Embedded Firmware
University of Colorado, Boulder
The objective of this course is to convey how wireless infrastructure, longevity, security, and the mission critical nature of the end application, affect the design architecture, the design considerations, and the design techniques used when developing IoT end-node devices. Through weekly programming assignments the course will explore event driven firmware design concepts, Bluetooth Low Energy (Bluetooth Smart), custom peripheral GATT services and profiles, as well as Bluetooth Mesh node implementations.
Class style: 3 credit hour lecture course with C programming assignments
Effort: Average of 15-20 hours per week
Last edited: December 19, 2023
Important: For on-campus students: Please plan to be on campus and ready to attend the first day of class in person. I distribute the development boards we use during the first week of class. Your ability to complete the first programming assignment in week 1 depends on having one of these development boards in your possession. A late arrival to campus is not allowed.
At the end of this course, students will be able to:
Develop event based firmware to extend the battery life of Internet of Things applications
Debug low level / machine centric firmware
Develop custom Bluetooth Smart profiles and services
Develop an interoperable Bluetooth Mesh network
Develop an interoperable Bluetooth Smart product
Select the wireless protocol that best addresses the end application requirements
Match the appropriate memory technology to an end application
Extend flash data retention to 10+ years to meet the requirements of industrial applications
Logistics
Lectures: Tuesday and Thursday, 9:30-10:45am, ECCS 1B14
Class modality: In-person. A zoom meeting will be provided for distance section students to attend
Instructor office hours: Tue/Thurs 3-4pm, via Zoom, Zoom meeting info posted in Canavs
Instructor's Contact Information: Dave Sluiter David.Sluiter@colorado.edu
Prerequisite Knowledge
For this course, prerequisites are crucial to your sucess. This is not an introductory course. This is an advanced, and very cool, course. You will learn techniques that are used in industry to design and build embedded systems. Be cognizant of the hours of effort per week listed above. If you take this course plus another ESE core course plus work 1 or 2 jobs, you may struggle to keep up with completing the weekly programming assignments.
Knowledge of digital logic design. You know what a flip-flop and an AND gate are. You know what clocks are and what they do. You know what a truth table is and how to turn that table into an implementation. You won’t be performing logic design in this course, but understanding logic design is crucial.
Knowledge of CPU and computer architecture. You know what the PC is and what general purpose registers are used for. You know what an ALU is. You know what exceptions and interrupts are. You understand what load, arithmetic, and store instructions do. You know what an address map is.
Knowledge of C programming and assembly language. You have successfully completed at least 2 C programming courses with a B- or better letter grade. You can describe the C compilation process. You know what the C pre-processor, compiler, assembler, linker and loader do. You know what a symbol table is. You know what the heap and the stack are and what they are used for. You know the difference between global and local variables and where they live in memory.
Experience with an Integrated Development Environment (IDE). You know how to use its debugger and view CPU registers.
Recommended Prerequisite Courses
ECEN 5613 Embedded System Design (ESD) is highly recommended. This course is roughly 50% hardware focused and 50% software focused.
Either of the following courses are a good choice as a prerequisite, as both have a strong software focus. Select 1 of these as your prerequisite:
ECEN 5813 Principles of Embedded Software (PES)
ECEN 5803 Mastering Embedded Systems Architecture (MESA)
Having 2+ years of industry experience developing embedded systems is equivalent to the recommended prerequistes courses listed above.
Sometimes students wish to take ECEN 5823 simultaneously with one of these prerequisites courses. This is not recommended unless you have substantial C programming experience and/or industry experience. Please discuss this with your academic advisor prior to enrolling in both ECEN 5823 and one of these prerequisites. To be sucessful in this course, my recommendation is that you take ECEN 5823 in your second year so that you can build up your prerequisite knowledge and skills, as listed above.
Course Expectations
Lectures, Programming Assignments/Course Project, Readings, and Quizzes will require on average 15-20 hours per week of work.
Attendance
On campus students: Your best chance to "get in" is to enroll AND remain on the wait list. If you see a long wait list do not enroll in the distance section as this section is reserved for off-campus and specially designated students. If you are an on-campus student and you enroll in the distance section you will be administratively dropped - so stay on the wait list. Many students over-enroll and then later drop a class. This allows students on the wait list to naturally flow into the course in a fair and consistent manner. Attendance counts for 10% of your grade and starts on the first day of class.
For on campus students, class attendance is expected (does not apply to US based distance students). Please arrange to be on campus on the first day of class. For distant students, videos of class sessions will be available.
Our policy is:
Students enrolled but not engaging in an ESE course for the first week will be moved to the end of any existing wait list.
Students enrolled but not engaging in an ESE course for the first two weeks will be administratively dropped from the course.
The course cap (number of enrolled students, on-campus and distance students) is fixed. Don't ask me to change the course cap.
Course Description and Topics covered
This course covers how wireless infrastructure shapes the architecture of embedded applications and wireless RF designs of WiFi, BlueTooth, ZigBee, and Thread. It will also cover low-power design considerations and techniques for mobile applications that enable 10+ year product life cycles for mission critical and industrial equipment. Security attack surfaces (vulnerabilities) will be discussed and what is required to prevent security breaches. Economic models for Internet of Things solutions and services will be presented as these economic models affect product design. Topics:
Maximize the battery life of Internet of Things Applications
Analyze Internet of Things memory requirements
Overcome technical weaknesses of flash memory technology
Match the correct low power RF networking technology to the end application
Bluetooth Mesh Proxy, Node, Relay, Friend, and Low Power devices
Develop a Bluetooth Smart product
Additonally you will learn techniques for:
Design first, code second
Isolation of functionality
Building robust schemes to pass information from interrupt service routines to main code
Building robust software state machines
Course Materials
Course materials include textbooks, papers, lecture slides, project guides, and other online materials.
Required textbook: “Bluetooth Low Energy,” by Robin Heydon, ISBN: 9780132888363
PC Requirements: It is expected that you posess a working laptop. Windows 10 or Mac OS X 12.6.x, at least 1 USB-A port (see USB connector info here), 1+ GHz CPU, 8 GB memory, 15 GB of free disk space. View the full Simplicity Studio 5 OS and hardware requirements here.
Required development board*: Silicon Labs EFR32 Blue Gecko Bluetooth Starter Kit, part number SLWSTK6020B. Available from Silicon Labs, price $149 USD or at Mouser, price $99 USD.
Required for Distance students: A PC with a microphone, speakers and web camera; a reliable internet connection (minimum 5 megabits per second download speed).
Course will be administered on Canvas
Other online materials:
* Developement boards will be provided to on-campus students in Boulder, and shipped to US-based (United States and Canada) distance students only (i.e. Professional Certificate students and Distance Degree students).
Grading
The course grade will be based on in-class participation, homework assignments, quizzes, course project, and 2 exams. The grade proportions are as follows:
Attendance 10% (does not apply to US-based distance students)
Programming assignments 40%
Quizzes 10%
Midterm and Final exams 10%
Course project 30%
Honor code
A complete description of the honor code can be found here: http://honorcode.colorado.edu/
To summarize: Violations of the Honor Code are acts of academic dishonesty and include but are not limited to plagiarism, cheating, fabrication, aid of academic dishonesty, lying to course instructors, lying to representatives of the Honor Code, bribery or threats pertaining to academic matters, or an attempt to do any of the aforementioned violations. Violations can result in disciplinary action up to and including expulsion from the University.
Note to students: In past semesters our ESE program had a significant issue with students copying work from other students and submitting that work as their own. This behavior will not be tolerated.