====== 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 [[https://www.youtube.com/watch?v=P6vuyza8r1g&list=PLKQoMxsWIO1wrfPfnvZWFefhiAYrfrej6|available on YouTube]]. ===== Lecture Slides ===== * Lecture Part 0 - {{:archive:pgt302:lecture_00.pdf|Course Introduction}} * Lecture Part 1 - {{:archive:pgt302:lecture_01.pdf|Introduction to the Embedded World}} * Lecture Part 2 - {{:archive:pgt302:lecture_02.pdf|Hardware Platform 1}} * Lecture Part 3 - {{:archive:pgt302:lecture_03.pdf|Bare-metal Programming}} * Lecture Part 4 - {{:archive:pgt302:lecture_04.pdf|Hardware Platform 2}} ===== Lab Notes ===== * Lab Work 1 - [[pgt302lab00|Tools and Platform]] * Lab Work 2 - [[pgt302lab01|Bare-metal Programming]] * Lab Work 3 - [[pgt302lab02|Peripherals and Interfacing]] * Lab Work 4 - [[pgt302lab03|Using Embedded OS]] ===== Downloads ===== * Datasheet: {{ :archive:pgt302:bcm2835_peripherals.pdf |Broadcom BCM2835}} * Datasheet: {{:archive:pgt302:p89v51rb2_rc2_rd2.pdf|NXP's P89V51}} ===== Assignments ===== * Assignment 1: assigned in Google Classroom... * Assignment 2: assigned in Google Classroom... ===== Lab Project ===== * Lab Project Description: ----------- Lab Project ----------- Note: This is a group project! Develop an application that utilizes any of the available modules at the laboratory (e.g. GPS/GSM module, Bluetooth module, Temperature/Humidity Sensor, RF transceiver) AND one other module that you have to purchase on your own. The developed application must be presented as a commercial product. Overall evaluation will be based on two main components: technical evaluation and product evaluation. Technical Evaluation will be based on the number of module interfacing and its complexity. So, applications with more complex interfacing (e.g. protocols, external interface circuit) will be considered for extra marks. Product evaluation will be based on product brochure and a practical demonstration of the application. Having aesthetic features in your application/product will assist towards getting better grades. Requirement: - submission of a product brochure - demonstration of a working application (product) - individual AND group Q/A for technical competency DUE: WK14/14 (Respective Lab Sessions) * Lab Project (CAA Supplement 1): ----------- Lab Project ----------- [CAA Supplement] Technical Report 1 (Group Report) - analyze future enhancement(s) that can be applied to your product - for each feature (can be more than one), specify = advantage of having that feature = additional component needed = sketch interfacing required (more detail = more marks) = additional costs involved Requirement: - submission of technical report (MAX 5 pages) - short presentation (15 minutes) DUE: WK14/14 (Respective Lab Sessions) * Lab Project (CAA Supplement 2): ----------- Lab Project ----------- [CAA Supplement] Technical Report 2 (Individual Report) - analyze alternative options redesign your product - assuming you can use any components to implement THE SAME product - provide overall schematic with interface details - also, provide (for each component use) = distinctive technical info = reason(s) this component is selected - provide estimate cost for this product Requirement: - submission of technical report (MAX 10 pages) - short Q&A (10 minutes) DUE: WK14/14 (Respective Lab Sessions) ===== 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 ===== - Able to DESCRIBE the concept of embedded software. - Able to EVALUATE embedded software implementations. - 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 ({{:archive:pgt302:lecture_00.pdf|Lecture Part 0}}) * Introduction to Embedded World ({{:archive:pgt302:lecture_01.pdf|Lecture Part 1}}) * embedded systems * embedded software * hardware platform * software development | * [[pgt302lab00|Lab Work 1]] * **[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 ({{:archive:pgt302:lecture_02.pdf|Lecture Part 2}}) * Board (Raspberry Pi) specifications * Microcontroller (BCM2835) details | * [[pgt302lab01|Lab Work 2]] * **[DEVELOPMENT WORK]** * my1barepi: t02_timer * my1barepi: t03_interrupt | | ^ Week 03 | * Hardware Platform 1 (cont.) ({{:archive:pgt302:lecture_02.pdf|Lecture Part 2}}) * Features: I/O, Timer, Interrupt | * [[pgt302lab01|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 ({{:archive:pgt302:lecture_03.pdf|Lecture Part 3}}) * single task, multi-tasking * event triggered | * [[pgt302lab01|Lab Work 2]] (cont.) * **[DEVELOPMENT WORK]** * my1barepi: t08_uart * my1barepi: t09_bluetooth * needs bluetooth terminal app | | ^ Week 05 | * Bare-metal on Raspberry Pi ({{:archive:pgt302:lecture_03.pdf|Lecture Part 3}}) * Timer access * Interrupt Access | * [[pgt302lab01|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 | * [[pgt302lab02|Lab Work 3]] * **[DEVELOPMENT WORK]** * practical programming: * detect edges * measure pulse width * measure frequency * generate pwm (single/periodic) | **Lab Assessment 1 (10%)** | ^ Week 07 | * Hardware Platform 2 ({{:archive:pgt302:lecture_04.pdf|Lecture Part 4}}) * Board (GTUC51B001) specifications * Mirocontroller (NXP P89V51RD2) details | * [[pgt302lab02|Lab Work 3]] (cont.) * **[DEVELOPMENT WORK]** * system integration | **Mid-term Examination (20%)** | ^ Week 08 | * Hardware Platform 2 (cont.) ({{:archive:pgt302:lecture_04.pdf|Lecture Part 4}}) * Features: I/O, Timer, Interrupt | * [[pgt302lab02|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 | * [[pgt302lab03|Lab Work 4]] * **[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 | * [[pgt302lab03|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%)** |