Commit Graph
100 Commits
Author SHA1 Message Date
Andrew Walbran 01f5ecf1e6 Run dependabot on bare-metal examples and exercises too. (#1712)
These can't be in the main workspace due to needing custom cargo config
for linker scripts and targets.
2024-01-18 10:21:46 +00:00
Andrew Walbran 864bb942c0 Clarify distinction between Drop trait and drop function. (#1255)
This clears up some misleading explanation from #246.
2023-09-26 11:59:16 +01:00
Andrew Walbran bc972711a2 Clarify distinction between interior mutability and mutable statics. (#1019) 2023-07-26 13:22:42 +02:00
Andrew Walbran 0202ba2fc9 Make User pub to avoid unused code warnings when running tests (#822) 2023-06-21 15:08:37 +01:00
Andrew Walbran c1ad97c659 Fix example to build and run (#838) 2023-06-21 09:48:05 +01:00
Andrew Walbran 54fd2578d3 Add pages about entry point and exception handling on APs (#802)
* Add page about entry point before Rust code.

* Convert tabs to spaces.

mdbook doesn't seem to handle tabs in code properly.

* Add page about handling exceptions.

* More nuanced discussion of Rust Raspberry Pi OS tutorial.

* Add note about EL1 to entry point page too.
2023-06-14 18:27:07 +00:00
Andrew Walbran 5a495a508e Update Cargo.lock. (#614)
This was missed in #583.
2023-05-05 11:25:45 +01:00
Andrew Walbran 9cff14ca31 Link arm-gic to main documentation page rather than crate page (#610) 2023-05-04 14:42:08 +00:00
Andrew Walbran 226aa21f3c Use hyphen rather than underscore for gic-version (#611)
Older versions of QEMU seem to only accept a hyphen, while new versions accept either.
2023-05-04 15:41:15 +01:00
Andrew Walbran 93c1c814c3 Improve phrasing of comment (#609)
Some people interpreted the previous comment as meaning the RTC itself needed to be initialised or started somehow, but this is not the case.
2023-05-04 15:08:44 +01:00
Andrew Walbran 9d4a34c501 Use smccc crate rather than psci in examples and exercise. (#583)
It was renamed.
2023-04-27 10:54:48 +01:00
Andrew Walbran 4266078684 Add pkg-config to list of packages (#575)
pkg-config is also required for the cargo install to work.
2023-04-21 20:29:18 +02:00
Andrew Walbran c5863f6642 Add optional extension to RTC exercise (#562)
* Add methods to mask and clear interrupts.

* Start on GICv3 driver.

* Enable and use RTC interrupt.

* WFI

* Add newtype for interrupt ID.

* Add extension to use interrupt.

* Add method to send an SGI.

* Silence warnings about unused methods in provided drivers.

* Implement Debug manually for IntId.

It's useful to say what kind of interrupt it is.

* Acknowledge and log interrupt.

We should end it as well, but doing so results in a loop unless we first
clear the match.

* cargo fmt with imports_granularity = "module"

* Use arm-gic crate rather than including driver in the example.
2023-04-17 15:38:51 +01:00
Andrew Walbran 87f1976589 cargo fmt with imports_granularity = "module" (#564) 2023-04-16 20:57:59 +02:00
Andrew Walbran d8e442b9cb Extend bare metal afternoon exercise (#561)
* Add methods to set match register and check whether it matches.

* Add first extension to RTC exercise, using match register.

* No need for constants to be public.
2023-04-13 10:58:06 +01:00
Andrew Walbran bf18b33e39 Use exerciser for day 4 exercises too. 2023-04-11 10:47:18 +01:00
Andrew Walbran 86d8c4ae54 Rename exercise template directory and archive. 2023-04-05 16:28:07 +01:00
Andrew Walbran ed4f5b64c4 Zip exercise templates for translation build artifacts. 2023-04-05 16:28:07 +01:00
Andrew Walbran 6b7c7cbc73 Fix publishing translations. 2023-04-05 16:28:07 +01:00
Andrew Walbran 6cba1ef2bb rustfmt with imports_granularity = "module". 2023-04-05 16:28:07 +01:00
Andrew Walbran b6f5ba1af0 Run exerciser as mdbook renderer. 2023-04-05 16:28:07 +01:00
Andrew Walbran e204b5060f Rename directory to match crate name. 2023-04-05 16:28:07 +01:00
Andrew Walbran 3e224e6f55 No need to handle #include directives ourselves anymore.
The mdbook links preprocessor will process them before we get called.
2023-04-05 16:28:07 +01:00
Andrew Walbran edd9df042c Make exerciser an mdbook renderer. 2023-04-05 16:28:07 +01:00
Andrew Walbran b24b5b02f3 Include input filename in error message. 2023-04-05 16:28:07 +01:00
Andrew Walbran 6bac3aad01 Split out library. 2023-04-05 16:28:07 +01:00
Andrew Walbran 5f5cf9dc7f Add a comment explaining the state machine. 2023-04-05 16:28:07 +01:00
Andrew Walbran 04c36de355 Add README for exerciser. 2023-04-05 16:28:07 +01:00
Andrew Walbran 9375126b3c Use comment rather than inline code to find filename. 2023-04-05 16:28:07 +01:00
Andrew Walbran 9f91699be6 Ensure that book directory exists. 2023-04-05 16:28:07 +01:00
Andrew Walbran 06badccb19 Remove output before building exercises. 2023-04-05 16:28:07 +01:00
Andrew Walbran 3f7cc60686 Make zip part as part of script.
This makes running local builds easier.
2023-04-05 16:28:07 +01:00
Andrew Walbran c17e8abbd7 Add links to exercise template archive. 2023-04-05 16:28:07 +01:00
Andrew Walbran d0ef072cf2 Publish exercise templates to Pages. 2023-04-05 16:28:07 +01:00
Andrew Walbran adabd342ff Add Rustdoc comments for functions. 2023-04-05 16:28:07 +01:00
Andrew Walbran 9372d14378 Build exercise templates in CI. 2023-04-05 16:28:07 +01:00
Andrew Walbran 97d3c9c17d Add script to run exerciser on bare metal exercises. 2023-04-05 16:28:07 +01:00
Andrew Walbran 89c8eb0ef2 Add utility to build exercise starting directory from Markdown. 2023-04-05 16:28:07 +01:00
Andrew Walbran b85c893390 Explain entry point and entry.S. 2023-04-05 15:13:10 +01:00
Andrew Walbran 2e94a80d9d Discuss use of unsafe functions and safe wrappers. 2023-04-05 15:13:10 +01:00
Andrew Walbran 5068b1288d Add notes about running examples. 2023-04-05 15:13:10 +01:00
Andrew Walbran 8c56c949ef Fix GCC package name. 2023-03-27 17:20:31 +01:00
Andrew Walbran 4427241ca7 cargo-binutils requires llvm-tools-preview 2023-03-27 17:20:31 +01:00
Andrew Walbran aa1036af66 Add more hints for bare metal morning exercise. 2023-03-27 17:20:31 +01:00
Andrew Walbran 956c137e51 Format hints as bullet-points. 2023-03-27 17:20:31 +01:00
Andrew Walbran d513109b92 Add Mac OS instructions for picocom too. 2023-03-27 17:20:31 +01:00
Andrew Walbran 6f83b97e69 Fix Markdown formatting. 2023-03-27 17:20:31 +01:00
Andrew Walbran 357f62e137 A compass doesn't tell us the temperature. 2023-03-27 17:20:31 +01:00
Andrew Walbran 8ed300d620 Fix Linux build of bare metal AP code. 2023-03-27 17:20:31 +01:00
Andrew Walbran ae83778173 Show actual driver code on solution page. 2023-03-27 17:20:31 +01:00
Andrew Walbran 9c166d4e97 Set publish = false in examples and exercises. 2023-03-23 15:12:23 +00:00
Andrew Walbran f8dea1df2f Use title case in SUMMARY. 2023-03-23 15:12:23 +00:00
Andrew Walbran fa56c70dcb Get AP examples working on Mac OS too. 2023-03-23 15:06:23 +00:00
Andrew Walbran fc36e40eef Make base address constants a pointer rather than a usize. 2023-03-23 15:06:23 +00:00
Andrew Walbran 782313e16e Add commands to run examples to speaker notes. 2023-03-23 15:06:23 +00:00
Andrew Walbran 72ff50e60b Build bare-metal examples in presubmit. 2023-03-23 15:06:23 +00:00
Andrew Walbran b670098ab1 Update Cargo.lock, and no need for beta toolchain. 2023-03-23 15:06:23 +00:00
Andrew Walbran b2ce958f2e Add pages about Android and vmbase. 2023-03-23 15:06:23 +00:00
Andrew Walbran 8aef12bf1d Add page about spin. 2023-03-23 15:06:23 +00:00
Andrew Walbran f5b6e47f31 Put tinyvec example inline. 2023-03-23 15:06:23 +00:00
Andrew Walbran fb3fd3979c Add RTC exercise. 2023-03-23 15:06:23 +00:00
Andrew Walbran 8b21f5070e Add page about inline assembly. 2023-03-23 15:06:23 +00:00
Andrew Walbran f293ede958 Add page about tinyvec. 2023-03-23 15:06:23 +00:00
Andrew Walbran 8d1f903202 Add MacOS instructions. 2023-03-23 15:06:23 +00:00
Andrew Walbran 56319e016b Add page about buddy_system_allocator. 2023-03-23 15:06:23 +00:00
Andrew Walbran f0043637e2 Write page about aarch64-paging. 2023-03-23 15:06:23 +00:00
Andrew Walbran dc95bd1dae Write page about zerocopy. 2023-03-23 15:06:23 +00:00
Andrew Walbran f3edffd1a7 Fix mdbook test failure. 2023-03-23 15:06:23 +00:00
Andrew Walbran ada6a53942 Improve makefile. 2023-03-23 15:06:23 +00:00
Andrew Walbran 31c7b283c2 Add example implementing logger. 2023-03-23 15:06:23 +00:00
Andrew Walbran 15518aa177 Add separate binary for minimal UART driver. 2023-03-23 15:06:23 +00:00
Andrew Walbran d6027f5080 Add notes about traits. 2023-03-23 15:06:23 +00:00
Andrew Walbran bc21369dcb Add example of using UART driver. 2023-03-23 15:06:23 +00:00
Andrew Walbran 1f315da903 Write a more complete UART driver. 2023-03-23 15:06:23 +00:00
Andrew Walbran f6fc0edb11 We need qemu-system-arm too. 2023-03-23 15:06:23 +00:00
Andrew Walbran 790f4c88d5 Add note about QEMU UART. 2023-03-23 15:06:23 +00:00
Andrew Walbran c7831953bb QEMU virt machine uses PL011 UART not 16550. 2023-03-23 15:06:23 +00:00
Andrew Walbran 08c0c53412 Add section about Android bare-metal Rust support. 2023-03-23 15:06:23 +00:00
Andrew Walbran 7eee892195 Start on AP UART driver example. 2023-03-23 15:06:23 +00:00
Andrew Walbran 76ad4b2939 Add first AP slide and mention other projects. 2023-03-23 15:06:23 +00:00
Andrew Walbran dee3e64442 Start writing about MMIO. 2023-03-23 15:06:23 +00:00
Andrew Walbran 3b02b09901 Fix line numbers in debugging example. 2023-03-20 14:44:43 +00:00
Andrew Walbran 6dd2a9f002 Mention why we need extern crate panic_halt. 2023-03-20 14:44:43 +00:00
Andrew Walbran e31df488f3 Explain what the udev rule does. 2023-03-20 14:26:57 +00:00
Andrew Walbran 3afc10fbfd cargo-embed needs libudev-dev. 2023-03-20 14:26:57 +00:00
Andrew Walbran e2d7bc56ec Add other files for compass exercise to exercise page. 2023-03-20 14:26:57 +00:00
Andrew Walbran 8513adfd3c Add more hints for compass exercise. 2023-03-20 14:26:57 +00:00
Andrew Walbran fe32d06862 Note where commands should be run. 2023-03-20 14:26:57 +00:00
Andrew Walbran a070573867 Expand IMU acronym first time. 2023-03-20 14:26:57 +00:00
Andrew Walbran 52f0c9ef64 Rename Day 5A to Bare Metal Rust. 2023-03-20 14:26:57 +00:00
Andrew Walbran ecbb7e41bb Format imports with imports_granularity = "Module". 2023-03-20 14:26:57 +00:00
Andrew Walbran 94eafee6bb Add more notes. 2023-03-20 14:26:57 +00:00
Andrew Walbran f40261646c Add option to display accelerometer rather than compass. 2023-03-20 14:26:57 +00:00
Andrew Walbran 8f2a851e95 Display accelerometer rather than compass. 2023-03-20 14:26:57 +00:00
Andrew Walbran 44a4b4b234 Display compass values on LEDs. 2023-03-20 14:26:57 +00:00
Andrew Walbran 82f4dab523 Get compass solution working and add more information. 2023-03-20 14:26:57 +00:00
Andrew Walbran 17bbf5f0b7 Explain how to run other examples too. 2023-03-20 14:26:57 +00:00
Andrew Walbran 53223d3581 Add page about debugging with cargo-embed. 2023-03-20 14:26:57 +00:00
Andrew Walbran 0c3664bef3 Add slide about probe-rs and cargo-embed. 2023-03-20 14:26:57 +00:00
Andrew Walbran 948c44b66d Explain audience. 2023-03-20 14:26:57 +00:00