Exercises and Research Topics

Click here to go back to the course page.

A designer (in software, hardware, or both) needs to solve problems. So some items are just exercises (i.e.: "try to explain this or do that, as you now should be able to") and some are real-world issues, whether new problems to solve, or a request to find the rationale behind a choice I made. Both require some brain-time: thinking of the problem at large and being creative; I don't care care a lot (or not at all) about the real circuit or the code lines: what is important is finding the right direction, then the implementation is not interesting, it's just clock time to be spent, also called "sweat of the brow" in lawyer speak.

And how can you tell exercises from research topics? It's simple: if you solved it, it was an exercise, otherwise it was a research topic -- I found this pearl by Richard Bellman in The Art of Computer Programming by Donald Knuth.

During the interactive lessons, solutions are provided to some of the problems, sometimes by students, sometimes by me, usually after some brainstorming. Solved problems are marked as such: if you missed the discussion or the solution, please ask me by email. Such brainstorming and solutions happen in RAP mode ("random access problems"): they are not boringly solved in the order they are asked: I want you to think about them, until the time is ripe to disc{uss,lose} each of them.

Exercises that are not going to be solved, because they are just boring "study" items, are marked as such.


Table of Contents

The exercises are divided by lesson, where the lesson is where I proposed the exercise. Each of them may or may not be related to the subject matter, and sometimes they probe forward to later topics.


01- Git


02- PCB design

Here we are looking at the schematic of the TDC board.

03- C language


04- Linker (just an intro)


05- Cross compiling


06- Versatile timing


07- ARM, GPIO, running on hardware


08- Flash running, initial udelay


09- GPIO and neopixel in practice


10- Kconfig and more about time


11- PLL and printf


13- Udelay


14- Processes


15- I/O and sharp timing


18- I2C, SPI, UART


20- Interrupts


2- Threaded Interrupts


Alessandro Rubini
Last modified: May 2021