# Embedded for Beginners Training, 16th of April
# Embedded for Advanced Training, 23th of April
## Questions?
- [ ] write them here like this
- [x] Is the panic handler only for runtime errors?
This panic handler is only for runtime errors, not for exceptions. But `#[exception]` lets you define an exception handler and overwrite standard behavior.
HardFault is the main exception
API docs: https://docs.rs/cortex-m-rt/0.6.13/cortex_m_rt/attr.exception.html
- [ ] Have the materials been verified with an M1 mac?
- [x] How to turn .rs files into .hex
1. you can use a system tool like (GNU) objcopy
you can Rust tooling like rust-objcopy and cargo-objcopy. those come from the cargo-binutils crate https://crates.io/crates/cargo-binutils
2. you can use the ihex library. https://crates.io/crates/ihex
example usage within the workshop material: https://github.com/ferrous-systems/embedded-trainings-2020/blob/dbb7ada3615e6e1cd03d7a5295d97d0ec285c3b9/xtask/src/tasks.rs#L81
[knurling app-template]: https://github.com/knurling-rs/app-template
https://knurling.ferrous-systems.com/sessions/
## Dates & zoom link
April 16th: [Beginner workshop](https://embedded-trainings.ferrous-systems.com/beginner-workbook.html)
April 23rd: [Advanced workshop](https://embedded-trainings.ferrous-systems.com/advanced-workbook.html)
Zoom link: https://us02web.zoom.us/j/84725077757?pwd=U0svZlZoR1ZLVmpINHdIWXdRcGVXUT09
## Time
The workshops runs from 4 PM to 7:30 PM CET (Berlin), check [https://everytimezone.com](https://everytimezone.com/s/d36e1cf1) for the start time in your local timezone
## Preparation
### Required hardware
To work through the workshop material you'll need the following hardware
- [nRF52840 Development Kit (DK)](https://www.nordicsemi.com/Software-and-Tools/Development-Kits/nRF52840-DK)
- ~~[nRF52840 Dongle](https://www.nordicsemi.com/Software-and-tools/Development-Kits/nRF52840-Dongle)~~
- 2 micro-USB cables
- 2 available USB-A ports on your laptop / PC (you can use a USB hub if you don't have enough ports)
### Tooling
**Beginners**
Please complete the first 2 sections, "1. Preparation" and "2. Tooling check" of the [Workbook] **before** the start of the workshop.
These sections will guide you through installing required tools and setting up your development environment.
**Advanced**
No additional tooling nessesary
## During the workshop
Use the [Workbook] for [Troubleshooting] and tips on each course assignment.
The Workbook structure follows the workshop tasks you'll be given and contains additional hints.
## Material
- [Workbook]
- [Starter code]
- [Troubleshooting]
[Troubleshooting]: https://embedded-trainings.ferrous-systems.com/troubleshooting.html
[Workbook]: https://embedded-trainings.ferrous-systems.com/preparations.html
[Starter code]: https://github.com/ferrous-systems/embedded-trainings-2020
[USB 2.0 Specification]: https://www.usb.org/document-library/usb-20-specification