ITCS 1300 - Embedded C Programming for Automotive Systems
Credit Hours: 4.00
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
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.
- Understand the definition of an embedded system
- Give examples of other programing languages used to program embedded systems
- Describe where embedded C programing is used
- Articulate the main components of an Embedded systems
Outcome 2. Upon completion of this course, students will be able to explain embedded system components.
- Discuss what memory, peripherals, and software are relative to embedded programing
- Give examples of dos and don’ts in embedded programing
- Be able to describe the embedded system components
- 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.
- Give examples of the different types of memory
- Describe the term “ease of maintenance” and portability
- 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.
- Give examples of customer, system, and software requirements
- Describe the software verification and validation process
- Describe unit testing
- 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.
- Use best practices for systems, software and project management, change management, and problem resolution management
- Describe process capability and determination
- Describe process reference model and performance indicators
- 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.
- Give examples of coding rules
- Describe the fundamental elements of compliance
- 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.
- Use of at least one Embedded software testing tool
- Describe the difference between testing single unit code and testing at an integration level
- Articulate what Static Analysis is
- 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.
- Give examples of functional safety goals
- Describe the differences in ASIL levels
- Describe Management functional safety
- 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.
- Explain the difference between C and C++ languages
- Explain the basic structure of C++ programs, the compiler and linking process
- Use built-in data types in programs
- Create programs using interactive and file I/O
- Create programs using control structures
- Create programs using Functions
- Create programs using pointers
Outcome 10: Upon completion of this course, the student will be able to use Microcontrollers in Automotive applications.
- Describe the basic structure of a microcontroller
- Describe the function of a microcontroller
- Give examples of the various microcontrollers
- Articulate concerns about RAM, ROM/Flash, and Runtime and their impact on each other
- Understand the use of external peripherals
- Create basic programs for microcontrollers
- Use scripting for problem solving and issue reproduction
- Use debugging techniques to debug in embedded software environment
- Use the MISRA checker to remove warnings
- Use scripting for problem solving and issue reproduction
- Use debugging techniques to debug embedded software environment
- Use MISRA checker to remove warnings
COMMON DEGREE OUTCOMES (CDO)
CDO marked YES apply to this course:
- 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.
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
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:
Ease of Maintenance
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 5. Systems 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
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.
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 Syllabus - Macomb Community College, 14500 E 12 Mile Road, Warren, MI 48088
Add to Favorites (opens a new window)