EN 5013-002 Advanced Embedded Software Development
EN 5013-002 Advanced Embedded Software Development
Spring 2019
Course Objective:
This course provides students with the fundamentals of embedded operating systems including the the
working understanding of how to configure and deploy a Linux kernel and an RTOS. Further they will gain
expertise in software tools, design patterns and development methods to create applications and enhance
operating systems' services (e.g. syscalls, device drivers) to construct embedded system prototypes and
products.
Outcomes
This course will focus heavily on designing concurrent software for embedded systems applications using
the Linux and FreeRTOS operating systems. At the end of this course, students will be able to...
Logistics
PLEASE NOTE: All content on this page is subject to change until February 2019 .
3 Credit Hours
Workload: 12-15 hours per week for work including Lectures, Programming Assignments, Course
Projects, Readings, and Quizzes
Contact:
Prerequisite(s)
ECEN5813 - Principles of Embedded Software
Knowledge of assembly and C Programming, Digital Logic Design, and embedded computer
architecture.
Working knowledge of Linux command line operations, shell programming, Git, makefiles
Experience with lab instruments - DVM, Logic Analyzer and Oscilloscope
Experience using a microcontroller Integrated Development Environment (IDE) and its associated
tools including its debugger and register views.
Course Topics
Linux Operating System
System Calls
Kernel Space vs User Space
Kernel Modules
Processes, Threads, pThreads
IPC Mechanisms & Communication
Process Synchronization
Interrupts
Scheduling
Device Drivers
Virtual Memory
Remote Debugging using GDB
freeRTOS
File Structure
Building freeRTOS
Creating Tasks
IPC and Messaging
Interrupts, Synchronization
Debugging techniques and using TI Code Composer Studio (CCS)
Software Engineering and Programming Topics
Data structures (Linked List, Trees, Stacks)
Design Patterns – e.g Concurrency, Finite State Machines (FSMs), producer/consumer
Maintainability, robustness, etc.
Grading
The course grade will be based on in-class participation, homework assignments, quizzes, 2 course
projects, and 2 exams. The grade proportions are as follows:
Course Materials
Course materials include textbooks, papers, lecture slides, project guides, and other online materials.
Course Website
Course lectures, assignments, grades, quizzes, and announcements will use Canvas
o GNU Manual
o GNU Make Manual
o ARM information center
o BeagleBone Green Development Board
o BeagleBone Development Resources
o Tiva C Series Connected LaunchPad Development Board
Honor code
A complete description of the honor code can be found here .
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."
Academic Integrity
Any suspected violations of the Honor Code will be submitted to our Honor Code Office. Students found
responsible for any violation by our faculty and the Honor Code Office will earn an automatic F in
the course. We take these issues seriously and have a responsibility to all students who uphold the
Honor Code, and to the highest industry standards for which we are preparing students. If you have any
questions whatsoever regarding what collaboration is permissible in the course, consult your instructor
directly before proceeding. By default, you are expected to turn in your own original work and cite any and
all portions you did not create. All aspects of the Honor Code apply.