Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update review for 18349 #76

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 10 additions & 6 deletions electives/18349.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@

Embedded systems is probably the most popular elective for ECE majors.
It's a challenging class that combines hardware applications with lower-level
software, which idealizes what an ECE major is. In this class, you get to program bare metal hardware in the form of a Raspberry Pi with a debugger board that you construct. Given the nature of the software you will write, you will have to learn some systems concepts, although very simplified. You will also have to learn about basic circuits related to the hardware you work with, and also learn how to read datasheets that tell you how to operate the hardware you work with.
software, which idealizes what an ECE major is. In this class, you get to program bare metal hardware in the form of an STM32 microcontroller. Previous versions of this class made use of a Raspberry Pi. Given the nature of the software you will write, you will have to learn some systems concepts, although very simplified. You will also have to learn about basic circuits related to the hardware you work with, and also learn how to read datasheets that tell you how to operate the hardware you work with.

## Labs

Embedded is primarily a project class. All the homeworks are labs, where you develop some component of your Raspberry Pi system.
Embedded is primarily a project class. All the homeworks are labs, where you develop code for the STM-32 microcontolloer system.

Each lab is unique in what you get to program, and you'll be exposed to a variety of material, starting from bare metal programs in the earlier labs, to higher level concepts like scheduling and kernel modules in later labs.

Expand All @@ -25,11 +25,15 @@ Embedded does a good job encouraging the use of:
- `git`: version control
- `vim`: terminal IDE
- `doxygen`: documentation
- 'gdb': GNU Debugger
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be in ticks for code

Suggested change
- 'gdb': GNU Debugger
- `gdb`: GNU Debugger


Although the learning curve can be quite high for `git` and especially `vim` and `tmux`, you should try to force yourself to use these tools. Using them well will reward you later on in labs, and also whenever programming in a terminal environment in general.
Although the learning curve can be quite high for `git` and especially `vim` and `tmux`, you should try to force yourself to use these tools. Using them well will reward you later on in labs, and also whenever programming in a terminal environment in general. The use of GDB is highly encouraged for debugging.

They might be a bit strict on these topics, as not tagging your submission will lose you a few points, and missing some documentation on `doxygen` will lose you points as well, but learning these tools well will help you in your programming career in the future, even if you end up doing higher-level software instead of systems.

Since Fall 2022, the course has tried to introduce a good chunk of theory for embedded control and sensor interfacing.
While this is an undergrad course, several MS ECE students prefer to take this course as well because of the Lab assignments (primarily Lab4- the Kernel Lab).

## Exams

Some major topics that are tested on exams are
Expand All @@ -45,9 +49,9 @@ Some major topics that are tested on exams are

## How to do well

- Figure out a way to debug your code on your Raspberry Pi early on.
- Figure out a way to debug your code on your STM32 board early on.
- Having a good project partner is very important for this course, especially for those who are inexperienced with embedded programming. The workload will be very overwhelming otherwise
- Datasheets suck, but you should dedicate yourself to learning how to read what you need to know. They are also almost intentionally ambiguous in certain parts, so sometimes you will just have to try things out.
- Sometimes exams have trivia, so you should write down some trivia on your cheatsheet. There is quite a heavy weight on multiple choice and short answer questions, so trivia can be worth a lot. Trivia includes things like history, how certain devices work or applications for them, definitions of particular concepts.
- Learn how to use `tmux`, at least to the point where you can have multiple tabs and windows, and save sessions
- Learn to use `vim`. You'll be much more efficient when programming on your Raspberry Pi. If you program on your own computer, you'll constantly have to upload code to the Pi, which can be slow. If you work on the Pi directly, there's no need to transfer code from your laptop to the Pi.
Comment on lines -51 to -52
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it not the case that you guys use terminal to develop anymore? If not, what do you use now?

- Learn how to use `git` so you and your partner don't have to merge code in person. This usually means at least understanding what branches are and making pull requests.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

extra line