0% found this document useful (0 votes)
96 views4 pages

EN 5013-002 Advanced Embedded Software Development

This course provides students with fundamentals of embedded operating systems including configuring and deploying Linux kernels and RTOS. Students will learn software tools, design patterns and development methods to create applications and enhance operating systems. Key topics include Linux system calls, kernels, processes, communication, and device drivers. Students will also learn about FreeRTOS file structure, tasks, messaging, and debugging. The course aims to help students understand concurrent software design for embedded systems. Assessment includes assignments, projects, quizzes, exams, and class participation.

Uploaded by

Mehul Patel
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
96 views4 pages

EN 5013-002 Advanced Embedded Software Development

This course provides students with fundamentals of embedded operating systems including configuring and deploying Linux kernels and RTOS. Students will learn software tools, design patterns and development methods to create applications and enhance operating systems. Key topics include Linux system calls, kernels, processes, communication, and device drivers. Students will also learn about FreeRTOS file structure, tasks, messaging, and debugging. The course aims to help students understand concurrent software design for embedded systems. Assessment includes assignments, projects, quizzes, exams, and class participation.

Uploaded by

Mehul Patel
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 4

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...

 Understand fundamentals of an embedded operating system


 Configure, build and deploy your own Linux kernel, as well as understand how to create your own
device driver, kernel module and system calls
 Write software for inter-thread and inter-process communication using message queues, sockets,
conditions, events and signals
 Utilize concurrent software design patterns such as threading pools, and producer consumer
models as well as others such as, Finite State Machines (FSM) and client-server systems as a
method for implementing embedded software solutions
 Implement software projects using binary trees, linked lists, and stack data structures
 Design concurrent embedded applications using FreeRTOS Operating system
 Debug concurrent software applications with command line GDB, Valgrind, sTrace and other
software tools
 Apply key concepts of software maintainability, robustness, reliability, etc. to their own work

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

Lecture: T/Th, 9:30-10:45am @ ECCR105

Projects: Requires purchase of parts kit, checkout of dev kits

Contact:

 Rick Heidebrecht <richard.heidebrecht@ colorado.edu>


o Office hours: ECEE 124 - T/Th 11am-12noon, and by appointment
 SA1: Nikhil.Divekar@ colorado.edu
o Office hours: Wednesday 1 pm to 3 pm, and Friday 3 pm to 5 pm
 SA2: Aaskash.Kumar@ colorado.edu
o Office hours: Monday 1 pm to 3 pm, and Thursday 5 pm to 7 pm

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:

 Homework, Quizzes, and Class Participation: 25%


 Course Project 1 : 10%
 Course Project 2: 25%
 Mid-term Exam: 20%
 Final Exam: 20%

Course Materials
Course materials include textbooks, papers, lecture slides, project guides, and other online materials.

Textbooks (CU Bookstore/Online)


 Mastering Embedded Linux Programming (2nd Edition), Chris Simmonds (ISBN
9781787283282 )
 Linux Kernel Development (Third Edition) - Robert Love (ISBN 9781787283282)

Additional Reference Material


 Linux Device Drivers (Latest Edition) - Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman
o http://www.oreilly.com/openbook/linuxdrive3/book/
 Real Time Embedded Components and Systems with Linux and RTOS (Latest Edition) - Sam
Siewart and John Pratt

Course Website
Course lectures, assignments, grades, quizzes, and announcements will use Canvas

Other online materials

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.

Made with the new Google Sites, an effortless way to create beautiful sites.

You might also like