Dec 26, 2024  
College Catalog 2024-2025 
    
College Catalog 2024-2025
Add to Favorites (opens a new window)

ITCS 1300 - Embedded C Programming for Automotive Systems

Credit Hours: 4.00


Prerequisites: None

Automobiles have transitioned from using mechanical controls to electromechanical systems that are controlled by computers and software. Automotive manufacturers and their suppliers need technicians who can write the software programs for the various microcontrollers on vehicles. C is the major language used for programming automotive microcontrollers. This introductory course will provide the basic skills needed by a graduating vehicle engineering technician.

Billable Contact Hours: 4

Search for Sections
Transfer Possibilities
Michigan Transfer Network (MiTransfer) - Utilize this website to easily search how your credits transfer to colleges and universities.
OUTCOMES AND OBJECTIVES
Outcome 1:  Upon completion of this course, students will be able to explain the difference between Embedded programing and Business programming.

 Objectives:

  1. Understand the definition of an embedded system
  2. Give examples of other programing languages used to program embedded systems
  3. Describe where embedded C programing is used
  4. Articulate the main components of an Embedded systems

Outcome 2. Upon completion of this course, students will be able to explain embedded system components.

 Objectives:

  1. Discuss what memory, peripherals, and software are relative to embedded programing
  2. Give examples of dos and don’ts in embedded programing
  3. Be able to describe the embedded system components
  4. Define functional constraints and timing constraints

Outcome 3: Upon completion of this course, students will be able to identify factors that are important in selecting a language for an embedded system.

 Objectives:

  1. Give examples of the different types of memory
  2. Describe the term “ease of maintenance” and portability
  3. Articulate how an embedded system language is selected

Outcome 4: Upon completion of this course, students will be able to summarize the different stages of the software development process.

 Objectives:

  1. Give examples of customer, system, and software requirements
  2. Describe the software verification and validation process
  3. Describe unit testing
  4. Articulate what some of the different software development methodologies are

Outcome 5: Upon completion of this course students will be able to explain the basics of ASPICE.

 Objectives:

  1. Use best practices for systems, software and project management, change management, and problem resolution management
  2. Describe process capability and determination
  3. Describe process reference model and performance indicators
  4. Describe capability levels and process attributes

Outcome 6: Upon completion of this course, students will be able to summarize the MISRA coding standards and compliance.

 Objectives:

  1. Give examples of coding rules
  2. Describe the fundamental elements of compliance
  3. Describe the roll of deviations and guidelines for re-categorization.

Outcome 7: Upon completion of this course, students will be able to employ the basics of Unit Testing Concepts and the tools used.

 Objectives:

  1. Use of at least one Embedded software testing tool
  2. Describe the difference between testing single unit code and testing at an integration level
  3. Articulate what Static Analysis is
  4. Articulate what Helix QAC is

Outcome 8: Upon completion of this course, students will be able to explain the basics of ISO26262 and functional Safety.

 Objectives:

  1. Give examples of functional safety goals
  2. Describe the differences in ASIL levels
  3. Describe Management functional safety
  4. Articulate how this standard provides guidance on automotive safety

Outcome 9: Upon completion of this course, students will be able to create simple programs that use simple data types, control structures, and interactive and file I/O.

 Objectives:

  1. Explain the difference between C and C++ languages
  2. Explain the basic structure of C++ programs, the compiler and linking process
  3. Use built-in data types in programs
  4. Create programs using interactive and file I/O
  5. Create programs using control structures
  6. Create programs using Functions
  7. Create programs using pointers

Outcome 10: Upon completion of this course, the student will be able to use Microcontrollers in Automotive applications.

 Objectives:

  1. Describe the basic structure of a microcontroller
  2. Describe the function of a microcontroller
  3. Give examples of the various microcontrollers
  4. Articulate concerns about RAM, ROM/Flash, and Runtime and their impact on each other
  5. Understand the use of external peripherals
  6. Create basic programs for microcontrollers
  7. Use scripting for problem solving and issue reproduction
  8. Use debugging techniques to debug in embedded software environment
  9. Use the MISRA checker to remove warnings
  10. Use scripting for problem solving and issue reproduction
  11. Use debugging techniques to debug embedded software environment
  12. Use MISRA checker to remove warnings

COMMON DEGREE OUTCOMES (CDO)
  • Communication: The graduate can communicate effectively for the intended purpose and audience.
  • Critical Thinking: The graduate can make informed decisions after analyzing information or evidence related to the issue.
  • Global Literacy: The graduate can analyze human behavior or experiences through cultural, social, political, or economic perspectives.
  • Information Literacy: The graduate can responsibly use information gathered from a variety of formats in order to complete a task.
  • Quantitative Reasoning: The graduate can apply quantitative methods or evidence to solve problems or make judgments.
  • Scientific Literacy: The graduate can produce or interpret scientific information presented in a variety of formats.
CDO marked YES apply to this course:
Communication: YES
Global Literacy: YES
Information Literacy: YES
Quantitative Reasoning: YES
Scientific Literacy: YES

COURSE CONTENT OUTLINE
Programming Automotive Embedded Systems with Embedded C:

Week 1. Introduction to Embedded systems

The student will understand the difference between embedded programing and PC programing, and how building and loading programs differ from desktop or server computers.

Week 2. Programming Embedded Systems

In this module the student will get an overview of embedded system components, i.e. Microprocessor, Microcontroller, DSP (Digital Signal Processor), CPLP (complex Programmable Logic Device), and FPGA (Field Programmable Gated Array) and will learn about Real Time Systems

     Memory

     Peripherals

     Software

     Functional constraints

     Timing Constraints

     Do’s and don’ts in embedded programing

Week 3. Factors for Selecting the Programming Language for an Embedded System

In this module the students will learn what factors are important when selecting the programming language for and Embedded System, including the different types of memory, and optimizing embedded software for size, speed, and power consumption. The following are few of those factors:

Memory Size

Speed

Portability

Ease of Maintenance

Readability

Week 4. Introduction to the Embedded C Programing Language

 

In this module the student will get a brief history of the C programming Language developed by Dennis Ritchie in the late 1960’s. And why and how Embedded C programing was developed as an extension of the C programing Language.

 

The student will also learn the difference between C, C++, and Embedded C programing. Students will also learn about timing constraints and do’s and don’ts in embedded programing.

Week 5Systems and SW Process concepts: ASPICE, MISRA, and ISO26262

 

Students will learn about the different stages of the Software development process and different SW development methodologies, such as waterfall, Agile, etc.

 

Considerations of Customer requirements - system requirements -Software requirements (what makes a good requirement)

Architecture-> detailed design-> code-> Unit testing

Verification and validation testing concepts, i.e., what makes a good test, what makes a good test plan, expected vs actual results.

Week 6. Automotive ASPICE

 

In this module students will gain an understanding of what ASPICE is and its base practices for systems, software and project management, change management, problem resolution management. The following concepts will be reviewed:

 

          Introduction; scope, Terminology, and Abbreviations

          Process capability and determination

          Process reference model and performance indicators

          Process capability levels and process attributes

 

 

Week 7. An Overview of the MISRA standards, and compliance

 

Students will gain an Understanding of the MISRA coding rules, topics to be covered are:

 

Fundamental elements of Compliance

The roll of deviations

The guidelines to re-categorization

Adopted code

Static Analysis

Helix QAC and MISRA

 

 

Week 8. Other Unit Testing Concepts

 

In this module students will learn about Unit testing concepts and the tools form Helix QAC, Tessy, eggplant, and others. These embedded software test tools are designed for doing static analysis, security vulnerabilities, and complexity testing of code in single unit code as well as testing at an integration level.

Week 9.  Overview of ISO26262 and Functional Safety

 

In this module students will receive an overview of ISO26262.  ISO26262, “Road vehicles - Functional safety” is a functional safety standard that covers electrical and electronic automotive systems and their development process, including requirements specification, design, implementation, integration, verification, validation, and configuration. The standard provides guidance on automotive safety lifecycle activities by specifying requirements at the software and hardware level. A deeper review of the following topics will follow the overview:

 

Management of functional Safety

Product development at the software level

Automotive Safety Integrity Level (ASIL) and the differences in AISL level

Examples of functional safety goals and different work products needed in Functional Safety Management (FSM).

 

Week 10. Basics of Embedded C programing

In this module the student will learn about compilers, keywords and data types associated with compilers and will have a review of the Keil C Compilers, Macro Assemblers, Debuggers, Real-time Kernels, and Single-board Computers.

 

Will also learn about Embedded Configurable Operating System (eCos), and Task synchronization with real-time systems

 

Week 11. Basic Structure and Components of Embedded C Programing

 

In this module the student will learn about the basic structure of Embedded C programing, the standard C keywords in embedded C programing, and data types in Embedded C. These will help the student understand how an Embedded C program is written. The students will do practice exercises in embedded C coding.

 

   Comments

   Preprocessor Directive

   Global Variables

   Local Variables

   Main Function

 

Week 12. Basics of Microcontrollers

 

In this module the student will get an overview of microcontrollers, they will learn:

 

   The basics of a microcontroller

   Basic structure of a microcontroller

   The function of a microcontroller?

   Resource concerns in RAM, ROM/FLASH, Runtime, and impact each other

   Interrupts, and monitoring and control of on-chip, and external peripherals

 

 

Week 13. Basic Embedded C Program Example Circuit Diagrams and Related Code

 

In this module the student will learn about Circuit Diagrams using an 8051 microcontrollers and other components.

 

Students will also learn how to determine if there are real-time requirements and whether the OS and application can meet the requirements. Will learn about Task synchronization with real time Embedded OS systems.

 

 

Week 14. Basic Embedded C Programing Exercise

 

In this module the students will learn how to write an Embedded C program based on a provided circuit diagram with an 8051 microcontroller and other components, will learn how to use a Keil C Compiler, and will learn how to load the program into the microcontrollers.

 

 

Week 15. Basic Embedded C Programing Exercises

 

In this module the students will learn how to write and Embedded C program and will how to use scripting to help problem solving, issue reproduction, and learn basic debugging techniques to debug an embedded software environment. Students will learn how to use the MISRA checker to remove warnings.


Primary Faculty
Schleis, George
Secondary Faculty

Associate Dean
Evans-Mach, Patrick
Dean
Balsamo, Michael



Primary Syllabus - Macomb Community College, 14500 E 12 Mile Road, Warren, MI 48088



Add to Favorites (opens a new window)