-
Notifications
You must be signed in to change notification settings - Fork 126
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
arjunsengupta98
wants to merge
1
commit into
CMU-HKN:master
Choose a base branch
from
arjunsengupta98:patch-1
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -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. | ||
|
||
|
@@ -25,11 +25,15 @@ Embedded does a good job encouraging the use of: | |
- `git`: version control | ||
- `vim`: terminal IDE | ||
- `doxygen`: documentation | ||
- '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 | ||
|
@@ -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
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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. | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. extra line |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
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