UPB-FILS-MA / upb-fils-ma.github.io

The website for Microprocessor Architecture
https://embedded-rust-101.wyliodrin.com/
Creative Commons Attribution Share Alike 4.0 International
15 stars 100 forks source link

Establish the lecture and lab subjects for each week #6

Open alexandruradovici opened 7 months ago

alexandruradovici commented 7 months ago

This is issue is opened to discuss the tab structure.

Proposal

Week No. Lab Lecture
1 Introduction to Rust (this is the lab before the class) Introduction, rules and how a processor works
2 Introduction to Kicad The ARM Cortex-M processor
3 Setting up the Raspberry Pi Pico + GPIO Interrupts
4 Interrupts & Timers PWM & ADC
5 PWM & ADC Asynchronous Development
6 Async/Await Data buses (UART, SPI)
7 SPI Data Buses (I2C, USB)
8 I2C Networking
9 Networking Q&A for project
10 Documentation Milestone (submit online)
11 Project Work Memory Protection
12 Hardware Milestone RTOSes
13 Software Milestone Tock OS
14 PM Fair Presentation by Jonathan Pallant

Questions

  1. I think we need to set up some labs for helping the students for the project
  2. Do we need lab 1 Trais and generics, or can we merge it with lab 0, Introduction to Rust
  3. What about swapping the Tock labs for the project?
DTeodor-Alexaandru commented 7 months ago

We should consider 3-4 labs to help them with the project, 3 of them for milestones(doc, hardware, software). We can merge lab0 and lab1 and eliminate lab10, 11 and 12 to free up some space. Other solution would be to use just 1-2 labs for the project of which 1 hardware milestone and the other milestones to be assignments on git.

In the GPIO lab we can add pin interrupt, I think it will be useful for their project if we don't consider adding an Interrups lab.

alexandruradovici commented 7 months ago

In the GPIO lab we can add pin interrupt, I think it will be useful for their project if we don't consider adding an Interrups lab.

The idea of postponing interrupts was to discuss async/await before them. But you might have a point. We could discuss interrupts first and use that information to explain async await.

alexandruradovici commented 7 months ago

Merged GPIO with Interrupts

ZamfirAndreiPaul commented 7 months ago

Laboratory 0 and 1 should be merged. Also, in lab 2, setting up the raspberry pi shouldn't take that long, that is, if the lab has 2 hours, in one hour we can discuss the raspberry pi pico, see what tools we use, mount the blinking led on the board and in the second hour we can look over the debugger, and that way we can do lab 2 and 3 and gain some space. And the part with TockOS, if it is taught at the end, will be difficult to integrate into the projects, because they don't have time in a week to integrate something, and probably, for them it will only be informative, it will not help them with the project. The idea of milestones seems very good to me, this way we see during the semester that they have progressed and they don't just come to the end with something done (copied), and they can't fool us like that, because we can ask questions at the moment presents. Otherwise, the structure seems ok to me, the question would be, if in the weeks with labs intended for the project, we call everyone to the laboratory, or only those who have questions. I would prefer to call them all so that we can see how they work and we can help them.

DTeodor-Alexaandru commented 7 months ago
  1. Introduction to Rust (this is the lab before the class)
    • Cheat Sheet Rust vs Java (they studied Java up to now)
    • Tour of Rust
  2. Kicad
    • Load Pico schematic + footprint + 3D model
    • Make a simple schematic with LED + Button (source code available from us)
    • Measurements(need to see if we have enough multimeters)
  3. Setting up the Raspberry Pi Pico + GPIO
    • Blink (DevBoard LED)
    • Serial console
    • External LEDs + Buttons
  4. Interrupts & Timers
    • PIN interrupts - 2 buttons - rise/fall edge change state of button
    • Timers - depending of timer interrupt change state of led -> blink
      • use the 2 buttons to change the blink speed
  5. PWM & ADC
    • ADC - read value from potentiometer
    • PWM - change frequency to see how led goes from blinking to "on" (use 2 buttons)
      • change duty cycle to see how led intensity changes (pot value from ADC)
  6. Async/Await
    • try without tasking to do multiple thinks
    • use async await for multitasking
  7. SPI
    • Read/Write bits in an external memory
    • screen
  8. I2C
    • 1 team master, 1 team slave
    • master team collects data, slave team controls a motor from collected data
  9. Networking
    • WiFi
    • collect data from pico and send it to PC
    • select color from PC and modify RGB LED color
  10. Help Project (Doc milestone)
  11. Help Project
  12. Hardware milestone
  13. Software milestone
DTeodor-Alexaandru commented 6 months ago

@ZamfirAndreiPaul @irina-nita @DanutAldea @irina-b-dev @alexandruradovici I need your feedback on the lab structure

ZamfirAndreiPaul commented 6 months ago

For me looks very good.

DTeodor-Alexaandru commented 6 months ago

We need to establish who is in charge of every lab and the deadlines.

I took lab0 and lab1 which are gonna be ready at the end of this week. @ZamfirAndreiPaul took lab2.

We have 6 remaining labs and each one should be ready 2 weeks prior the teaching day(start 1 week before deadline to give time for reviews and changes). My proposal is:

alexandruradovici commented 6 months ago

I opened issues for writing the labs.

alexandruradovici commented 6 months ago

Do you think we should scatter the milestones instead of putting them at the end?

DTeodor-Alexaandru commented 6 months ago

It wouldn't make much sense to scatter them. They first need to learn, then decide on what they can do and implement it. We can create small milestones for them to decide the project idea, to make an initial list of what components they need and so on... Those little milestones are mandatory but are not graded. We use them just to see if they really work on the project.

alexandruradovici commented 6 months ago

That makes sense, the small milestones idea sounds good.

alexandruradovici commented 6 months ago

For the courses, my suggestion is:

  1. Introduction
    • Overview of the course
    • Team
    • Rules
    • Project
    • AGC
    • How a processor works
  2. The Cortex-M0+ Processor
    • Main components
    • How it boots
      • Memory Mapped I/O
    • GPIO
    • RP2040
  3. Interrupts
    • How interrupts work
    • Interrupts vs exceptions
    • Timers
  4. PWM & ADC
    • Analog vs digital signals
    • Analog signal simulation (PWM)
    • ADC
      1. Asynchronous Development
    • async and await
    • How Rust works
      1. Data buses (UART, SPI)
      2. Data Buses (I2C, USB)
      3. Networking
    • Ethernet
    • BLE
    • WiFi
    • Thread
    • LoRa / LoRaWAN
      1. Memory Protection
        • MPU
        • MMU
      2. RTOSes
        • What is real time?
        • How an RTOS works?
      3. Tock OS
DTeodor-Alexaandru commented 6 months ago

Looks good to me. I would shift last 3 courses and add in week 9 a "Help project" course, Q&A. We can use this to help them with ideas, guide them if they have any problem hardware/software. I could come to the course to help out.

alexandruradovici commented 6 months ago

Good idea, will do that.

Get Outlook for iOShttps://aka.ms/o0ukef


From: Teodor-Alexandru Dicu @.> Sent: Wednesday, February 21, 2024 8:31:25 PM To: UPB-FILS-MA/upb-fils-ma.github.io @.> Cc: Alexandru RADOVICI (24753) @.>; Mention @.> Subject: Re: [UPB-FILS-MA/upb-fils-ma.github.io] Establish the lecture and lab subjects for each week (Issue #6)

Looks good to me. I would shift last 3 courses and add in week 9 a "Help project" course, Q&A. We can use this to help them with ideas, guide them if they have any problem hardware/software. I could come to the course to help out.

— Reply to this email directly, view it on GitHubhttps://secure-web.cisco.com/1CFOlliym-NPmYNIelHxRXKpXB8vZCPz680EQT3aIXCGupNuI-kxB3ML5Uqd1Tx_021pqN9QujnvcTpJFoqIYzx_grumTuxoEHIJLrvC8S35xCmPml52oeeH9unz93ziNyzqq_lfIZ3w-mZUGfwJyf6aG_1MeU5-ujneBopA1tyICMnSQFOEk74neIPe8tfgeqcZ5BvnS9YJw1PFzhz_2uzOy8XwKlrTJqwixKkYeJNmelnVIEX7DVYyvCMZ-SU5YI3Kb2sf_ismP4qNoMV6bvb0z1hQgT9TUrChFzd8urmTCOPfBntWbxStQeiDnULxp/https%3A%2F%2Fgithub.com%2FUPB-FILS-MA%2Fupb-fils-ma.github.io%2Fissues%2F6%23issuecomment-1957648136, or unsubscribehttps://secure-web.cisco.com/19NjNCKsf_oMqBJLNpUttC44zejjzBuBaReOHhopIB3_YdMDzYvHjiK5yu3-pfbl3dMRPtXuwFIoRENcBry9AJ_A6KTteJSBpkr4PH5i2K-robVGt-QCDGuL91ISgSvLJdEwIz_IjXXjpByGgN6e0tpAtW8PVJudJQ6-p7OKgpBcCem4z9Cd6MIrHAa6uI8q-fQkh67zUE7_Pw1qgmDxEDYKJKB8mZ7Nto9C_bqdTfSO7tmOJYZsAPAefYTC7fm67aHjPoinSgRCrJbdshmGlFMRqmBeFTtuezwONwNWJsyUdUK_6G3dNKYBCun5i4ztZ/https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAAVU5ILI5H2OYOBLF6DOGSLYUY4P3AVCNFSM6AAAAABDBXD732VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNJXGY2DQMJTGY. You are receiving this because you were mentioned.Message ID: @.***>

DTeodor-Alexaandru commented 6 months ago

How about shifting the last 3 laboratories with a week? PM Fair would take place in the last week of the semester, and I wouldn't put the software milestone in the same week, to have an extra 3-4 days to work on the project to do small fixes. The Documentation milestone can be checked by the laboratory assistant from home.

alexandruradovici commented 6 months ago

Done