Skip to content

Commit 3e65e93

Browse files
jonathanpallantlistochkin
authored andcommitted
Rename Workbook/workshop
We run trainings, which have a mixture of slides and exercises
1 parent 77d7543 commit 3e65e93

27 files changed

+46
-46
lines changed

exercise-book/src/SUMMARY.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727

2828
- [Self-check project](./self-check.md)
2929

30-
# Bare-Metal Firmware on the nRF52
30+
# Working with the nRF52
3131

3232
- [Preparation](./nrf52-preparation.md)
3333
- [Code Organization](./nrf52-code-organisation.md)
@@ -44,9 +44,9 @@
4444
- [`no probe was found` error](./nrf52-troubleshoot-probe-not-found.md)
4545
- [`location info is incomplete` error](./nrf52-troubleshoot-location-info.md)
4646

47-
## nRF52 Radio Workbook
47+
# Bare-Metal Rust: Getting Started
4848

49-
- [nRF52 Radio Workbook](./nrf52-radio-workbook.md)
49+
- [nRF52 Radio Exercise](./nrf52-radio-exercise.md)
5050
- [Parts of an Embedded Program](./nrf52-radio-parts-embedded-program.md)
5151
- [Building an Embedded Program](./nrf52-radio-building-program.md)
5252
- [Binary Size](./nrf52-radio-binary-size.md)
@@ -68,14 +68,14 @@
6868
- [Interrupt handling](./nrf52-radio-interrupt-handling.md)
6969
- [Starting a Project from Scratch](./nrf52-radio-from-scratch.md)
7070

71-
## nRF52 HAL Workbook
71+
# Bare-Metal Rust: Using a HAL
7272

73-
- [nRF52 HAL Workbook](./nrf52-hal-workbook.md)
73+
- [nRF52 HAL Exercise](./nrf52-hal-exercise.md)
7474
- [Adding Buttons](./nrf52-hal-buttons.md)
7575

76-
## nRF52 USB Workbook
76+
# Bare-Metal Rust: Interrupts
7777

78-
- [nRF52 USB Workbook](./nrf52-usb-workbook.md)
78+
- [nRF52 USB Exercise](./nrf52-usb-exercise.md)
7979
- [Listing USB Devices](./nrf52-usb-listing-usb-devices.md)
8080
- [Hello, world!](./nrf52-usb-hello-world.md)
8181
- [Checking the API documentation](./nrf52-usb-api-documentation.md)

exercise-book/src/nrf52-code-organisation.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# nRF52 Code Organization
22

3-
## Workshop Materials
3+
## Training Materials
44

5-
You will need a local copy of the workshop materials. We recommend the Github release as it contains pre-compiled HTML docs and pre-compiled dongle firmware, but you can clone the repo with `git` and check out the appropriate tag as well if you prefer.
5+
You will need a local copy of the training materials. We recommend the Github release as it contains pre-compiled HTML docs and pre-compiled dongle firmware, but you can clone the repo with `git` and check out the appropriate tag as well if you prefer.
66

77
Ask your trainer which release/tag you should be using.
88

@@ -19,7 +19,7 @@ git clone https://github.com/ferrous-systems/rust-exercises.git
1919
cd rust-exercises
2020
```
2121

22-
The git repository contains all workshop materials, i.e. code snippets, custom tools and the source for this handbook, but not the pre-compiled dongle firmware.
22+
The git repository contains all training materials, i.e. code snippets, custom tools and the source for this handbook, but not the pre-compiled dongle firmware.
2323

2424
## Firmware
2525

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# nRF52 HAL Workbook
1+
# nRF52 HAL Exercise
22

3-
In this workshop you'll learn to:
3+
In this exercise you'll learn to:
44

55
- use a HAL to provide features in a BSP
66
- configure GPIO pins using the nRF52 HAL
@@ -9,7 +9,7 @@ To test your BSP changes, you will modify a small example: `hal-app/src/bin/blin
99

1010
You will need an nRF52840 Development Kit for this exercise, but not the nRF USB dongle.
1111

12-
If you haven't completed the Radio Workbook, you should start there, and go at least as far as completing the "Timers and Time" section.
12+
If you haven't completed the Radio Exercise, you should start there, and go at least as far as completing the "Timers and Time" section.
1313

1414
## The nRF52840 Development Kit
1515

exercise-book/src/nrf52-preparation.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ For the span of these exercises keep the nRF52840 DK connected to your PC using
1818

1919
## Starter code
2020

21-
Project templates and starter code for this workshop can be found at [in this repo](https://github.com/ferrous-systems/rust-exercises).
21+
Project templates and starter code for our trainings can be found at [in this repo](https://github.com/ferrous-systems/rust-exercises).
2222

2323
## Required tools
2424

exercise-book/src/nrf52-radio-collision-avoidance.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ The first method scans the currently selected channel (see `set_channel()`), mea
88

99
Under the 802.15.4 specification, before sending a data packet devices must first check if there's communication going on in the channel. This process is known as Clear Channel Assessment (CCA). The `send` method we have been used performs CCA in a loop and sends the packet only when the channel appears to be idle. The `try_send` method performs CCA *once* and returns the `Err` variant if the channel appears to be busy. In this failure scenario the device does not send any packet.
1010

11-
The `Radio` abstraction supports 2 CCA modes: `CarrierSense` and `EnergyDetection`. `CarrierSense` is the default CCA mode and what we have been using in this workshop. `CarrierSense` will only look for ongoing 802.15.4 traffic in the channel but ignore other traffic like 2.4 GHz WiFi and Bluetooth. The `EnergyDetection` method is able to detect ongoing non-802.15.4 traffic.
11+
The `Radio` abstraction supports 2 CCA modes: `CarrierSense` and `EnergyDetection`. `CarrierSense` is the default CCA mode and what we have been using in this exercise. `CarrierSense` will only look for ongoing 802.15.4 traffic in the channel but ignore other traffic like 2.4 GHz WiFi and Bluetooth. The `EnergyDetection` method is able to detect ongoing non-802.15.4 traffic.
1212

1313
Here are some things for you to try out:
1414

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
# nRF52 Radio Workbook
1+
# nRF52 Radio Exercise
22

3-
In this workshop you'll get familiar with:
3+
In this exercise you'll get familiar with:
44

55
- the structure of embedded Rust programs,
66
- the existing embedded Rust tooling, and
77
- embedded application development using a Board Support Package (BSP).
88

99
To put these concepts in practice you'll write applications that use the radio functionality of the nRF52840 microcontroller.
1010

11-
You have received two development boards for this workshop. We'll use both in the this radio workshop.
11+
You should have acquired two development boards for your training. We'll use both in the this radio exercise.
1212

1313
## The nRF52840 Development Kit
1414

@@ -26,7 +26,7 @@ The board has the form factor of a USB stick and can be directly connected to on
2626

2727
## The nRF52840
2828

29-
Both development boards have an nRF52840 microcontroller. Here are some details about it that are relevant to this workshop.
29+
Both development boards have an nRF52840 microcontroller. Here are some details that are relevant to these exercises:
3030

3131
- single core ARM Cortex-M4 processor clocked at 64 MHz
3232
- 1 MB of Flash (at address `0x0000_0000`)

exercise-book/src/nrf52-radio-in.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,4 @@ The Dongle will respond as soon as it receives a packet. If you insert a delay b
1616

1717
Having log statements between `send` and `recv_timeout` can also cause packets to be missed so try to keep those two calls as close to each other as possible and with as little code in between as possible.
1818

19-
> NOTE Packet loss can always occur in wireless networks, even if the radios are close to each other. The `Radio` API we are using will not detect lost packets because it does not implement IEEE 802.15.4 Acknowledgement Requests. For the next step in the workshop, we will use a new function to handle this for us. For the sake of other radio users, please do ensure you never call `send()` in a tight loop!
19+
> NOTE Packet loss can always occur in wireless networks, even if the radios are close to each other. The `Radio` API we are using will not detect lost packets because it does not implement IEEE 802.15.4 Acknowledgement Requests. For the next step in the exercise, we will use a new function to handle this for us. For the sake of other radio users, please do ensure you never call `send()` in a tight loop!

exercise-book/src/nrf52-radio-interrupt-handling.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# Interrupt handling
22

3-
We haven't covered interrupt handling in the workshop but the `cortex-m-rt` crate provides attributes to declare exception and interrupt handlers: `#[exception]` and `#[interrupt]`. You can find documentation about these attributes and how to safely share data with interrupt handlers using Mutexes in the ["Concurrency" chapter][concurrency] of the Embedded Rust book.
3+
If we haven't covered interrupt handling in your training, the `cortex-m-rt` crate provides attributes to declare exception and interrupt handlers: `#[exception]` and `#[interrupt]`. You can find documentation about these attributes and how to safely share data with interrupt handlers using Mutexes in the ["Concurrency" chapter][concurrency] of the Embedded Rust book.
44

5-
Another way to deal with interrupts is to use a framework like Real-Time Interrupt-driven Concurrency ([RTIC]); this framework has a [book] that explains how you can build reactive applications using interrupts. We use this framework in the "USB" workshop.
5+
Another way to deal with interrupts is to use a framework like Real-Time Interrupt-driven Concurrency ([RTIC]); this framework has a [book] that explains how you can build reactive applications using interrupts. We use this framework in the "USB" exercise.
66

77
[concurrency]: https://rust-embedded.github.io/book/concurrency/index.html
88
[RTIC]: https://crates.io/crates/cortex-m-rtic

exercise-book/src/nrf52-radio-link-quality.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,4 @@ Take note of how LQI changes with these changes. Does packet loss occur in any o
2222

2323
The radio API we are using follows the PHY layer of the IEEE 802.15.4 specification, but it's missing MAC level features like addressing (each device gets its own address), opt-in acknowledgment (a transmitted packet must be acknowledged with a response acknowledgment packet; the packet is re-transmitted if the packet is not acknowledged in time). These MAC level features are not implemented *in hardware* (in the nRF52840 Radio peripheral) so they would need to be implemented in software to be fully IEEE 802.15.4 compliant.
2424

25-
This is not an issue for the workshop exercises but it's something to consider if you would like to continue from here and build a 802.15.4 compliant network API.
25+
This is not an issue for these exercises but it's something to consider if you would like to continue from here and build a 802.15.4 compliant network API.

exercise-book/src/nrf52-radio-messages.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ On the other hand, `"Hello"` is a string literal with type `&str`. `str` strings
8282

8383
## Printing strings and characters
8484

85-
In this workshop we'll work with ASCII strings so byte string literals that contain no escaped characters are OK to use as packet payloads.
85+
In this exercise we'll work with ASCII strings so byte string literals that contain no escaped characters are OK to use as packet payloads.
8686

8787
You'll note that `defmt::println!("{:?}", b"Hello")` will print `[72, 101, 108, 108, 111]` rather than `"Hello"` and that the `{}` format specifier (`Display`) does not work. This is because the type of the literal is `&[u8; N]` and in Rust this type means "bytes"; those bytes could be ASCII data, UTF-8 data or something else.
8888

0 commit comments

Comments
 (0)