Skip to content
Libre Computer
Platform

Teaching materials

Grading rubric

Labs 1 to 8 are 5% of the grade each, judged on three parts: it works (50% of the lab), measurements and analysis (30%) and write-up (20%). The weights are the assessment table's; this page says what full, partial and no credit mean for each part, lab by lab. Labs 9 and 10 are graded as the final project's checkpoint and demo. In the semester, a topic's second lab uses that topic's rubric.

In every lab

Students work in pairs, and each student hands in their own report: what they did, what they measured, and one problem they met and how they solved it. The write-up part judges that report in every lab.

PartFull creditPartial creditNo credit
Write-up (20%)Says what was done in order, gives every measurement with its unit, and describes one real problem, its cause and its fixOne of the three is missing or vague, or the problem is named without its cause or fixNo report, or a report that only lists the hand-ins

A board that will not boot is never a reason to lose marks: recovering one is a skill the course teaches. Grade a pair that lost time to a recovery on what they recovered and recorded.

Lab 1: First boot

PartFull creditPartial creditNo credit
It works (50%)The board boots from a written image; the student logs in over serial and over SSHBoots and logs in over one of serial or SSH onlyNo boot, or no login
Measurements and analysis (30%)The image's SHA-256 matches the published value and its source is named; the raw log starts at power-on and runs to the login promptChecksum given but not compared, or the log is missing its first linesNo checksum, or no raw log

Lab 2: Board anatomy and power rails

PartFull creditPartial creditNo credit
It works (50%)Every major part labelled on the photo; every rail measured; current recorded at idle and under loadSome parts or rails missing, or current at one condition onlyNo photo, or no rail measured
Measurements and analysis (30%)Rail table with name, nominal, measured and feeding regulator; current chart with its axis from zero and units on the axis titles; a correct paragraph on why rails come up in sequence before resetTable or chart incomplete, chart axis not from zero, or the sequence paragraph is missing or wrongNo rail table and no chart

Lab 3: Boot ROM and the SRAM stage

PartFull creditPartial creditNo credit
It works (50%)Board started over USB; the student's own first-stage build, with an added console line, boots over USBStarted over USB with the published first stage, but the student's own build did not runNever started over USB
Measurements and analysis (30%)Boot order recorded for each switch position; the boot ROM's and first stage's lines marked correctly; a correct paragraph on what the first stage must doBoot order for one position only, or lines marked with errorsNo boot order and no annotation

Lab 4: Memory and the bootloader

PartFull creditPartial creditNo credit
It works (50%)A changed memory clock built and started over USB; a kernel booted by hand from the U-Boot prompt to a loginOne of the two done, or the hand boot reached the kernel but not a loginNeither
Measurements and analysis (30%)Memory size and clock before and after the change, and its effect explained; the exact commands that booted the kernel; a memory map with each image's addressEffect recorded but not explained, commands incomplete, or the map is missing imagesNo memory change recorded and no commands

Lab 5: UEFI and Linux boot

PartFull creditPartial creditNo credit
It works (50%)A stock generic distribution boots through UEFI; the student's systemd service starts at bootOne of the twoNeither
Measurements and analysis (30%)Every line of the boot log has its stage named; a boot-time breakdown with the slowest servicesLog mostly annotated with stages missing, or a breakdown without the slowest servicesNo annotated log and no breakdown

Lab 6: Device tree and GPIO

PartFull creditPartial creditNo credit
It works (50%)The student's overlay binds the kernel's DS3231 driver and a second /dev/rtc appears; the LED blinks and the button is read with libgpiod; the motor switches through the MOSFET with the flyback diode fitted the right wayOne or two of the three workNone of the three
Measurements and analysis (30%)Before-and-after /sys and /dev listings; the LED's resistor calculated and its current measured; why the pin cannot run the motor and what the diode does; a latency histogram for idle and for load; a paragraph explaining from the histogram why Linux is not hard real timeHistogram for one case only, or the paragraph does not use the measurementNo listings and no histogram

Lab 7: I2C and SPI

PartFull creditPartial creditNo credit
It works (50%)The DS3231's time read by hand from its registers; the time shown on the OLED; both ADC inputs read over SPISome of the threeNone of the parts answers
Measurements and analysis (30%)Decoded I2C and SPI captures that match what the program sent; a sensor reading calibrated to its unit, with the methodOne capture only, or an uncalibrated readingNo captures

Lab 8: UART and a driver

PartFull creditPartial creditNo credit
It works (50%)Messages exchanged at two baud rates; the userspace library and tool read the ADC and its tests pass against the mocked busUART or driver works but not both, or the tests do not runNeither
Measurements and analysis (30%)A capture at mismatched baud rates with its framing errors explained; the library's reading compared with the kernel driver's, and when each is the right choiceCapture without the explanation, or no comparison with the kernel driverNo capture and no comparison

The kernel module is a stretch goal in the quarter: credit it within these parts, never require it. In the semester it is required, and judged under it works: the module loads, its character device reports the counter, and it unloads cleanly, with its dmesg lines handed in. Lab 8 handout.

Practical midterm

Individually, at a station, after lab 6; 15% of the grade in the assessment table. Each task is a third of the midterm. Allowed references: the parts' datasheets, man pages and --help output on the board and the bench PC, and the printed 40-pin header map.

TaskFull creditPartial creditNo credit
Boot the boardBoots to a login over the serial console, wired correctly with the board unpluggedBoots with help from the examinerDoes not boot
Enable a header busThe named overlay is found, applied and checked in /dev or /sysApplied but not checked, or the wrong overlay firstNot applied
Drive a GPIO circuitThe given circuit is wired from the pinout and driven or read with libgpiodWired but driven only with helpNot working

Labs 9 and 10: the final project

Labs 9 and 10 carry no lab weight. They are the final project's checkpoint and demo, weighted with its proposal and its report and repository in the assessment table. Each student answers demo questions alone.

ComponentFull creditPartial creditNo credit
Proposal (with lab 6)One page naming what will be built, the two or more buses it uses and its parts listOne of the three missing or too vague to build fromNot handed in
Checkpoint (lab 9)One subsystem works end to end; the design document is updated; the recovery runbook brings a broken boot back when another student follows itA subsystem partly working, or a runbook with steps missingNothing working and no runbook
Demo (lab 10)Starts from power-on with nothing typed, uses at least two of the course's buses, comes back after its power is pulled, and each student answers questions on itMeets some of the requirements, or needs help to startDoes not run
Report and repositoryA README another student could rebuild the project from, and a report on its design and what was measuredREADME or report incompleteNeither handed in