Table of Contents

PGT302 - Embedded Software Technology

This course is Embedded Software Technology, offered by the Department of Electronics Engineering Technology.

Announcements

[20201018] Welcome to PGT302 202021S1!

[20201018] Please try to setup development environment required for this course on your own personal laptops. Video guides for this course are available on YouTube.

Lecture Slides

Lab Notes

Downloads

Assignments

Lab Project

Course Synopsis

This course introduces contemporary software technology for embedded systems. Students will be exposed to the requirements of embedded systems that frequently impose time and/or memory constraints. Among the topics that will be discussed are embedded systems, platform hardware, cross-compilations, barebone systems, peripheral interfacing and embedded operating system. Knowledge in this subject is important for electronics engineers who are interested in system development and integration.

Course Outcome

  1. Able to DESCRIBE the concept of embedded software.
  2. Able to EVALUATE embedded software implementations.
  3. Able to DEVELOP embedded software for specific applications.

Course Assessment

Examinations Course Work
Total Contribution 60% 40%
Assessment Final Exam Mid-Term Assignments Lab Assessments Lab Project
Contribution 40% 20% 10% 20% 10%
CMCO-Revised Assessment (Session 2020/21 S1)
Examinations Course Work
Revised Contribution 0% 100%
Assessment Exam Test Assignments Lab Assessments Lab Project
Contribution 0% 20% 20% 30% 30%

Course Syllabus

Week Lecture Laboratory Notes
Week 01
  • Course Introduction (Lecture Part 0)
  • Introduction to Embedded World (Lecture Part 1)
    • embedded systems
    • embedded software
    • hardware platform
    • software development
  • [DEVELOPMENT WORK]
  • my1barepi: t00_intro4u
  • my1barepi: t01_gpio
  • [VIDEO GUIDES]
  • install xcompiler
  • install code editor
  • install scm software
  • prepare my1barepi
  • prepare sd card
  • workflow demo
  • scm basics (git)
Week 02
  • Hardware Platform 1 (Lecture Part 2)
    • Board (Raspberry Pi) specifications
    • Microcontroller (BCM2835) details
  • [DEVELOPMENT WORK]
  • my1barepi: t02_timer
  • my1barepi: t03_interrupt
Week 03
  • Hardware Platform 1 (cont.) (Lecture Part 2)
    • Features: I/O, Timer, Interrupt
  • Lab Work 2 (cont.)
  • [DEVELOPMENT WORK]
  • my1barepi: t04_textlcd
  • my1barepi: t05_senstemp
  • my1barepi: t06_framebuffer
  • my1barepi: t07_video

Assignment 1 Queue

Week 04
  • Bare-metal Programming (Lecture Part 3)
    • single task, multi-tasking
    • event triggered
  • Lab Work 2 (cont.)
  • [DEVELOPMENT WORK]
  • my1barepi: t08_uart
  • my1barepi: t09_bluetooth
    • needs bluetooth terminal app
Week 05
  • Bare-metal on Raspberry Pi (Lecture Part 3)
    • Timer access
    • Interrupt Access
  • Lab Work 2 (cont.)
  • [DEVELOPMENT WORK]
  • my1barepi: t10_gsm
  • my1barepi: t11_gps
  • my1barepi: t12_rtc

Assignment 1 Due (5%)

Week 06
  • Simple Applications
    • traffic light control
    • temperature control
    • input signal detection/measurement
  • [DEVELOPMENT WORK]
  • practical programming:
  • detect edges
  • measure pulse width
  • measure frequency
  • generate pwm (single/periodic)

Lab Assessment 1 (10%)

Week 07
  • Hardware Platform 2 (Lecture Part 4)
    • Board (GTUC51B001) specifications
    • Mirocontroller (NXP P89V51RD2) details
  • Lab Work 3 (cont.)
  • [DEVELOPMENT WORK]
  • system integration

Mid-term Examination (20%)

Week 08
  • Hardware Platform 2 (cont.) (Lecture Part 4)
    • Features: I/O, Timer, Interrupt
  • Lab Work 3 (cont.)
  • [DEVELOPMENT WORK]
  • system integration

Assignment 2 Queue

Week 09
  • Embedded OS on Raspberry Pi
    • running Raspbian Linux
    • basic I/O access
  • [PREPARATION WORK]
  • prepare raspbian (pgt302pi image)
  • change hostname (make unique)
  • [DEVELOPMENT WORK]
  • my1linuxpi: gpio
Week 10
  • Embedded OS on Raspberry Pi
    • running Raspbian Linux
    • basic peripheral interface
  • Lab Work 4 (cont.)
  • [PREPARATION WORK]
  • make sure avahi/mdns is running on pi
  • make sure bonjour/avahi/mdns is available on host
  • [DEVELOPMENT WORK]
  • remote access using putty
  • my1codelib: run custom server
  • my1linuxpi: run gpio http server

Assignment 2 Due (5%)

Week 11
  • Setup/running simple data server
    • server side programming (C @ PHP)
  • Lab Project

Lab Assessment 2 (10%)

Week 12
  • Setup/running simple data server
    • client side programming (C @ HTML/CSS/JAVASCRIPT)
  • Lab Project (cont.)
Week 13
  • Practical Applications
    • requirements and considerations
  • Lab Project (cont.)
Week 14
  • Practical Applications (cont.)
    • requirements and considerations
  • Lab Project (cont.)

Lab Project Due (10%)