a. Backport assignment `3b` to your choosen target. Use semihosting in order to `write` the resulting string to the host. You may need to use `--release` for decoding the long (`coded`) message, as being deeply recursive unoptimized code may run out of stack memory.
b. Discuss from a memory safety perspective the outcome.
c. Compare for the short message (`abc`), the number of cycles required for `decode` in `--dev` vs. `--release`. As a comparison my straightforword C implementation took 2200 cycles in best optimized mode using `gcc` (-o3), while my (transation) to Rust code took 1780 cycles. (Both executed on a bluepill board at 8MHz with flash memory wait states).
Make a new git for your embedded development. Make three branches (`3a, 3b, 3c`) with updated documentation according to the above.
...
...
@@ -187,7 +187,7 @@ Seminars
* Prepration
Bring a USB mini cable and your dev board. Be prepared to present the progress on assignment 3.
Bring a USB mini cable and your dev board. Be prepared to present the progress on assignment 3.
* Topic
...
...
@@ -202,19 +202,87 @@ Seminars
6. Memory Safe Concrreny
Preparation
* Preparation
* Finish lab 3 and be prepared to show your solution.
* Topic
* UnsafeCell, and synchronization in the RTFM model.
* Requirements for Stack Resource Policy (SRP) based single-core scheduling.
* [cortex-m-rtfm](https://github.com/japaric/cortex-m-rtfm) The RTFM-core (task and resource model) in Rust for the Cortex-M family