Skip to content
Libre Computer

ECE 440

Modern Computer: Full Stack

This section uses Solitude. The labs are the product, from the kernel driver through power, boot time, a read-only root, and recovery. The course starts where ECE 320 stops. It stops before a bootloader rebuild. The station is already booted in week 1. The boot media on this section is a card.

Each week has two lecture hours, a two-hour lab, and four homework hours. Week 3 has no Monday lecture, so that week has one lecture hour. The lab that week stays two hours.

In class is the lecture. The lab and the homework under it are different hand-ins. Read the module the week names, and stop where the week says to stop. Pin numbers, the spare-card label, and the shelf are on the station sheet. These notes do not print a second pin list.

All four courses. Modules and labs: education.libre.computer.

Week 1

In class

A product requirement has three numbers or names: watts, seconds, and the person who applies an update. Watts is the power budget. Seconds is the boot-time limit. The person is who is allowed to apply an update, and who is allowed to raise the watt figure. The station is already booted. Bringing it up is not the hand-in.

You choose the figures in the lab. Read the page aloud to your partner and correct one missing unit. The homework converts your watt figure into milliwatts and names who may raise it. The lecture does not hand you a watt number to copy.

On the lab site: Module 12, A whole system, describes a product. This week grades that one-page requirement.

Lab

  1. On the booted station, write the product requirement: a power budget in watts, a boot-time limit in seconds, and who applies an update.
  2. Second pass: read the requirement aloud to your partner and correct one missing unit.
  3. Assemble the lab hand-in: A one-page requirement with the power budget, the boot-time limit, and who applies an update.

Hand in: A one-page requirement with the power budget, the boot-time limit, and who applies an update.

Homework

Convert the watt figure you intend to use into milliwatts, and write who is allowed to raise that figure. Turn in: The milliwatt figure and the permission sentence.

Week 2

In class

A pinmux row has a pad, the function you claim, the function you must not claim, and an electrical limit. Fill the four cells from the board's device tree for the header device your driver will bind. The graded page is the table, not an overlay listing. The overlay file stays in the repository.

The pin number for your pad is the number the station sheet prints for that pad. Copy it, and write the function you will leave alone. These notes do not print a second pin list. On the second pass, add one pad you will not claim, then take it off the graded page.

On the lab site: Module 9, Device tree and pin multiplexing, explains muxing. This week grades the four-column table.

Lab

  1. For the header device your driver will bind, fill a pinmux table from the board's device tree: the pad, the function you claim, the function you must not claim, and the header's electrical limit.
  2. The overlay file stays in the repository. The graded page is the table. Second pass: add one more pad you will not claim, then remove it from the graded page.
  3. Assemble the lab hand-in: The pinmux table: pad, function claimed, function that must not be claimed, and the electrical limit.

Hand in: The pinmux table: pad, function claimed, function that must not be claimed, and the electrical limit.

Homework

Write the header pin number the lecture assigns to your pad, and the function you will leave alone, as a sentence. Turn in: The pin number and the function left alone.

Week 3

In class

No Monday lecture. One lecture hour remains: what a bind line looks like in the kernel log, and which job stays in userspace.

A bind line is the kernel log line that names your module and the device it attached to. The job that stays in userspace is the program that opens the device node after the module has bound. Write both names down before you load anything. Those two names are the homework. Unload and load once more on the second pass, and keep the second bind line in your notes.

On the lab site: Module 11, Drivers. This week grades your module, the bind line, and the userspace sentence.

Lab

  1. No Monday lecture. Write and load a kernel module that binds to the week-2 node and reads one register from the device.
  2. Name one job that stays in userspace. Second pass: unload the module and load it once more, and keep the second bind line in your notes.
  3. Assemble the lab hand-in: The kernel module source, the bind line from the kernel log, and one sentence naming a job that stays in userspace.

Hand in: The kernel module source, the bind line from the kernel log, and one sentence naming a job that stays in userspace.

Homework

Write the module name you will pass to the loader, and the userspace program that will open the device node. Turn in: Those two names.

Week 4

In class

A serial-console pin, claimed by a driver, drops the console. The revert puts the console back. Do this only on spare media. On this section the spare is a card. Write the spare-card label before you start, and write one command you will not run on the station's main card. That pair is the homework.

Capture the console dying, revert the claim, and confirm the console answers after a second reboot of that spare card. Leave the main card untouched.

On the lab site: Module 9, Device tree and pin multiplexing, does not grade a claim that breaks the console and the revert. This week does.

Lab

  1. Claim a pin the serial console uses, capture the console dying, and revert the claim so the console returns.
  2. Do this on spare media. Second pass: confirm the console still answers after a second reboot of that spare card.
  3. Assemble the lab hand-in: The console log of the pin claim that breaks the serial console, and the revert that brings the console back.

Hand in: The console log of the pin claim that breaks the serial console, and the revert that brings the console back.

Homework

Write the spare-media label you will use, and one command you will not run on the station's main card. Turn in: The label and the command you refuse.

Week 5

In class

Boot time and input power are a pair. One change, then the same pair again. Each chart starts at zero. Measure both from a cold start. Change one thing named in the week-1 requirement. Measure both again. Plot each pair on its own chart, with the axis starting at zero, and write the unit under the axis.

The homework names the change and the two quantities, with no numbers yet. Write it before you measure. The lecture does not hand you a watt reading or a second count to copy.

On the lab site: Module 2, First power-on and voltage rails, and Module 8, Linux boots, do not grade a before-and-after pair from a zero baseline. This week does.

Lab

  1. From a cold start, measure boot time and input power. Change one thing named in the week-1 requirement.
  2. Measure both again. Plot each pair on an axis that starts at zero. Second pass: leave the chart axes alone and write the unit under each one.
  3. Assemble the lab hand-in: Boot time and input power from a cold start, then the same two numbers after one change, each pair on a chart whose axis starts at zero.

Hand in: Boot time and input power from a cold start, then the same two numbers after one change, each pair on a chart whose axis starts at zero.

Homework

Write the one change you intend, and the two quantity names you will read before and after, with no numbers yet. Turn in: The change sentence and the two quantity names.

Week 6

In class

A read-only root still has to boot after power is pulled. Ten pulls, ten rows. Make the project root read-only, pull power ten times, and record each boot. A pull that never returns a prompt is a failed boot. The homework is the rule you will use to count that failure, and the place on the page where the mark goes. Write the rule before you pull power.

An eleventh pull is extra. Mark it as extra, and keep it out of the ten rows.

On the lab site: Module 12, A whole system, mentions robustness. This week grades the mount options and the ten-row log.

Lab

  1. Make the project root read-only.
  2. Pull power ten times. Record each boot. Second pass: pull power once more and mark that row as extra, not one of the ten.
  3. Assemble the lab hand-in: The mount options showing a read-only root, and a ten-row log of power pulls that still boot.

Hand in: The mount options showing a read-only root, and a ten-row log of power pulls that still boot.

Homework

Write how you will count a boot as failed if the prompt never returns, and where that mark goes. Turn in: The failure rule and the place you will mark it.

Week 7

In class

A bad update is installed only on spare media. Recovery uses the station's spare media and the tools already on the bench. A second computer beyond the lab station is not part of the hand-in. Before you install anything, write the spare-media label and the first recovery command you plan to use. That pair is the homework. These notes do not print the command for you.

Install the update that does not boot, recover, and log in once more after recovery. Then stop.

On the lab site: Module 12, A whole system, does not grade the bad-update commands, the recovery commands, and the later login. This week does.

Lab

  1. On spare media, install an update that does not boot.
  2. Recover with the station's spare media and the tools already on the bench. A second computer beyond the lab station is not part of the hand-in. Second pass: log in once more after recovery and stop.
  3. Assemble the lab hand-in: The commands that installed the bad update on spare media, the recovery commands, and a login captured after recovery.

Hand in: The commands that installed the bad update on spare media, the recovery commands, and a login captured after recovery.

Homework

Before you install anything, write the spare-media label for the bad update and the first recovery command you plan to use. Turn in: The label and that first command.

Week 8

In class

One service on the board, one client on the lab network, one saved transcript. The service listens. The client runs on a lab PC, not on the board. Save the client's transcript. A second run stays in your notes and off the graded page.

The port number is the number the instructor writes on the board at the start of this lecture. Copy it, and write the client command you will type on the lab PC. Those two are the homework. These notes do not print a port number.

On the lab site: Module 12, A whole system, does not grade a client transcript from the lab network. This week does.

Lab

  1. Run one service on the board that a client on the lab network talks to.
  2. Save the client's transcript. Second pass: run the client a second time and keep that transcript in your notes, not in the graded page.
  3. Assemble the lab hand-in: The transcript of a lab-network client talking to the board's service.

Hand in: The transcript of a lab-network client talking to the board's service.

Homework

Write the port number the lecture gives for the service, and the client command you will type on the lab PC. Turn in: The port number and the client command.

Week 9

In class

The checkpoint shows one path on the project image: the power-pull path or the bad-update path. Pick one. Name the path you will not show, and leave it unrun. The proof is one command that shows the path you did pick. Write the path name and that command before you run the checkpoint. That pair is the homework.

The checkpoint note says which path works on the project image. It does not have to show both.

On the lab site: Module 12, A whole system, has no checkpoint hand-in for those paths. This week does.

Lab

  1. On the project image, show either the week-6 power-pull path or the week-7 bad-update path.
  2. Second pass: name the path you did not show, and leave it unrun.
  3. Assemble the lab hand-in: A checkpoint note that the power-pull path or the bad-update path works on the project image.

Hand in: A checkpoint note that the power-pull path or the bad-update path works on the project image.

Homework

Write which path you will show, and the one command that proves it, before you run the checkpoint. Turn in: The path name and the proof command.

Week 10

In class

The demo, the repository, and a maintenance note. The note says what to redo when the kernel moves, and where spare media is kept. The kernel package name is the name of the kernel package the image has installed. Copy it from the package list during the lab. The shelf is the one on the station sheet. Those two are the homework.

Have your partner point at one line of the note. If they cannot find the spare media from that line, correct the line. Stop before a bootloader rebuild.

On the lab site: Module 12, A whole system, stops at the system. This week grades the demo, the repository, and the maintenance note.

Lab

  1. Demonstrate the project.
  2. Hand in the repository and a maintenance note. Second pass: have your partner point at one line of the note and correct it if they cannot find the spare media.
  3. Assemble the lab hand-in: The demo, the repository, and a one-page maintenance note that says what to redo when the kernel moves and where the spare media is kept.

Hand in: The demo, the repository, and a one-page maintenance note that says what to redo when the kernel moves and where the spare media is kept.

Homework

Write the kernel package name you would look up first after a kernel move, and the shelf where the spare card sits. Turn in: The package name and the shelf.