tar -xzf kmd_setup_v2.tar.gz
cd kmd_setup_v2.1
./setup_vm_for_kmd.sh
kmd_227
usr/bin/kmd_keypad.glade
<requires lib="gtk+" version="3.24">
to<requires lib="gtk+" version="3.22">
Simple traffic light example to lear how to talk to peripherals
As an optional extension, you can program this as a reactive state meachine where pedestrians can request their green phase. In this first exercise, we are using a delay loop. In a later exercise, this will be replaced with a hardware timer.Slides from week1
The overall goal of this exercise is to create a simple text output window that looks like a shell or DOS window. That requires a font and we are using 8x8 pixel for each (ASCII) symbol.
The following file provides 7x8 pixel fonts and you can add a zero column in fromt of each symbol as a spacer between characters:font.s
In our execise, we are using zero-terminated (NUL-terminated) strings. A good discussion on how to encode strings is provides in the article The Most Expensive One-byte Mistake – Did Ken, Dennis, and Brian choose wrong with NUL-terminated text strings? by Poul-Henning Kamp.Slides from week2
Even we are not working with the Hitachi HD44780 LCD controller this year, you may have a look at its datasheet to get an idea how such a device is used.Slides from week2 (second session)
Slides from week3 (using SVCs)
Slides from week4 (Multiway Branches, Breakpoints, Shift and Rotates, Timers, PWM)
Slides from week5 (Feedback session and Updates)
Slides from week5 (Spectre and Meltdown Security attacks)
You will implement a simple two-button stopwatch by reading the millisecond timer register. You can either count in BCD arithmetic or use the following function:bcd_convert.s
Slides from week6 (Exercise 5 Stopwatch and Interrupts)
A nice description of the ARM status register (from the Internet)
Slides from week6 (Memory latency and real-time)
Slides from week7 (FPGA Research and 3rd year projects)
Slides from week8 (Ex5 Stopwatch feedback session)
You will scan the keypad in this exercise and consider that buttons bounce in real world systems.Slides from week8 (Keyboard scan (hardware only))
Slides from week8 (Keyboard debouncing)
Other topics covered in the introductions that are related to microcontrollers.How to compute trigonometric functions?
Questions on using PIOs and data-driven state machines
Exercise 8 the Piezzo-buzzer
Multiply and shifting in microcontrollers
Trigonometric functions: the CORDIC algorithm
Scheduling and context-switching
Priorities and interrocess communication
01__Week1a_intro.mp4
02__Week1b_Komodo_and_traffic_lights.mp4
03__LCD-display_framebuffer_nested-functions_stacks-intro.mp4
04__Stacks_-_Passing_parameters.mp4
05__SVC_introduction.mp4
06__SVCs_-_Setting_up_stacks_-_Starting_a_user_program.mp4
07_Jump-tables_-_Breakpoints_-_Shift+Rotate.mp4
08_Timers+Counters.mp4
09_Feedback_on_TerminalExercise_virtual_Lab_update.mp4
10_Spectre Meltdown.mp4
11_Stop_Watch_exercise_and_Interrupts.mp4
12_Memory_latency.mp4
13_FPGA_research-and-Projects.mp4
14_Watchdogs and Instruction Set.mp4
15_Stopwatch_feedback.mp4
16_Keyboard_scan.mp4
17_Key_debouncing.mp4
18_Trigonometric_functions_1.mp4
19_Questions_on-PIOs-I2C-state_driven_state_machines-cooperative_multitasking.mp4
20_Execise8_and_project_intro.mp4
21_Project_Submission.mp4
22_Multiplication_and_Shifting.mp4
23_Trigonometric_functions_2_CORDIC.mp4
24_Scheduling.mp4