Embedded Controller Programming with Embedded C
ECE-40291
This course teaches students Embedded C Programming skills
used to program Embedded Controllers. The course begins with a study of the Embedded C language, including the language syntax, data types, and control structures. The students will then use Embedded C to write and run code on real embedded controller hardware. The student will learn how embedded controller hardware maps onto Embedded C data and control structures. The student will also learn concepts such as HAL (Hardware Abstraction Layer) and how it makes writing Embedded C for many different types of embedded controllers possible. At the end of the course, the student will have written and run Embedded C to control real hardware features such as GPIO (General Purpose Input/Output), ADC (Analog to Digital Conversion), and Serial I/O.
Course Highlights:
- Embedded Software Stack
- Interfacing with Advanced Peripherals Using Hardware Communication Protocols
- Embedded Software Program Development and Optimization
- Relevant Case Studies on IoT Design Challenges
Course Learning Outcomes:
- Identify Embedded C software components and know how they are different from standard C software components
- Recognize and use important concepts such as HAL (Hardware Abstraction Layer) to write Embedded C code that is portable to different embedded controllers
- Utilize hardware/software signaling mechanism to implement effective communication between embedded software stack and hardware
- Comprehend hardware communication protocols for implementation with other peripheral hardware devices such as GPIO, ADC, and Serial I/O
- Understand embedded controller hardware and software stack and their respective differences from traditional software development
Hardware: STM32 IOT Discovery Node 915MHZ - Mfg. Part # B-L475E-IOT01A. Part can be purchased from MOUSER Electronics or Digi-Key Electronics or any other reputable electronics dealer. This microcontroller is used in all four required courses in this program.
Course Typically Offered: Online in Fall and Spring quarters.
Prerequisites: CSE-40476 C/C++ Programming II: Dynamic Memory and File I/O Concepts and ECE-40292 Embedded Systems Hardware Design or equivalent knowledge and experience.
Next Step: After completing this course, consider taking ECE-40097 Embedded Controller Programming for Real-Time Systems to continue learning.
Contact: For more information about this course, please email unexengr@ucsd.edu
Course Information
Course sessions
Section ID:
Class type:
This course is entirely web-based and to be completed asynchronously between the published course start and end dates. Synchronous attendance is NOT required.
You will have access to your online course on the published start date OR 1 business day after your enrollment is confirmed if you enroll on or after the published start date.
Textbooks:
No textbook required.
Policies:
- No refunds after: 9/30/2024
Schedule:
Instructor: Norman McEntire, M.S., MCSE
Founder, Servin Corporation
Norman McEntire founded Servin Corporation in 1995 to provide computer training, consulting, and software development with a focus on Android, iOS, Java, Embedded C, Linux, and Machine Learning. With 25+ years of experience, he has designed both hardware and software at all levels, from embedded Linux to enterprise software. His training clients include Dell, HP, IBM, Intel, NCR and Qualcomm.