Commit Graph

30 Commits

Author SHA1 Message Date
Andre Richter
d901ae6cfe
Update copyright 2022-01-15 21:50:11 +01:00
Andre Richter
02c01c821b
Refactor memory subsystem code
This patch refactors big chunks of the memory subsystem code.

Most of all, it does away with the the design being based around the raw pointer
type "*const Page". While raw pointers to an actual page seemed like a
compelling idea, in practice it turned out difficult. Rust feels a bit
inconsistent with respect to raw pointers. While it is safe to create them out
of nowhere (only dereferencing is unsafe), it gets weird when multi-threading
comes into picture.

For example, wrapping them into synchronization primitives caused issues because
they don't implement Send. For this reason, we switch to the PageAddress type
which is based on usize, which makes things a lot easier.

Other changes/benefits include:

- Gets rid of unsafe code in the removed PageSlice type.

- Decouple the translation table code and MMIO VA allocation.

- For the translation table tool, make better use of what the ELF format already
  provides with respect to memory segmentation and translation. For example, the
  tool now queries the ELF file for VA->PA translations and other segment
  attributes. This has also the added benefit of reduced BSP code and more
  generic code in the tool.

- Packs rbelftools in the Docker image now (used by translation table tool).

- In tutorials 14/15/16, rearrange the PA and VA layout.
2021-12-02 20:44:12 +01:00
Andre Richter
89472abea5
Support for multi-arch Docker images 2021-11-22 22:37:13 +01:00
Andre Richter
dee575bb18
Bump QEMU to 6.1; Tag Docker images from now on 2021-11-13 13:12:10 +01:00
Alex
39a066c246 Update Dockerfile
Use https when git clone qemu to avoid connect timeout errors.
2021-05-17 09:32:53 +02:00
Andre Richter
9d74e021ef
Docker utils: Bump various versions 2021-03-07 21:01:02 +01:00
Andre Richter
44bb3f8942
Update copyright year 2021-01-01 11:28:32 +01:00
Andre Richter
b30bc518c4
Switch to GCC objdump and nm
The GCC versions of `objdump` and `nm` seem to have better out-of-the-box
support (for AArch64). Demangling works better, and instructions in objdump are
presented as 4 bytes instead of 4 * 1 bytes, which helps a lot.

Hence, switch to the GCC versions for now until LLVM has caught up.
2020-11-01 15:58:05 +01:00
Andre Richter
80071ed5aa
Bump Ubuntu Docker Version; QEMU 2020-10-28 12:40:45 +01:00
Andre Richter
812ba841f3
Revert to Ubuntu 19.10
20.04 comes with Ruby 2.7, which emits some annoying deprecation warnigs that
can't be silenced even when using the RUBYOPT variables suggested for doing so.

Work around that for now by reverting to Ubuntu 19.10 which still uses 2.5 and
does not have this bug.
2020-05-31 12:53:27 +02:00
Andre Richter
63cc349379
docker: Upgrade to Ubuntu 20.04 and QEMU 5.0.0 2020-04-30 22:10:07 +02:00
Andre Richter
c5d0f63ede
Parallel jobs for container build 2020-04-16 23:13:17 +02:00
Andre Richter
c8238de4e7
Fix some old links 2020-04-11 12:38:49 +02:00
Andre Richter
bb78c779ca
Introducing Minipush, a raspbootcom replacement.
Gets rid of compiled C++, uses Ruby 💎
2020-01-14 20:45:41 +01:00
Andre Richter
e690f8e7e4
Copyright bump to 2020 🎆 2020-01-02 00:41:03 +01:00
Andre Richter
8d6ddfca24
Add VCS ref to docker image 2019-12-25 18:33:04 +01:00
Andre Richter
f11a076c04
Docker: Bump to 19.10; Add ruby 2019-12-25 17:24:57 +01:00
Andre Richter
54137e8b38
Relicense as dual MIT OR Apache-2.0 2019-11-25 19:54:05 +01:00
Andre Richter
b4d202ff99
Fix qemu version to 4.1.0 2019-10-28 00:51:09 +01:00
Andre Richter
8d6c58ad57
Add code for tutorial 09 2019-10-27 23:12:48 +01:00
Andre Richter
1ded3fb42a
Change some more license headers to SPDX 2019-10-27 23:11:50 +01:00
Andre Richter
fed22475d1
Make utils container name board agnostic 2019-10-27 23:09:34 +01:00
Andre Richter
2a97946f92
Initial preparations for rewrite 2019-10-27 23:09:23 +01:00
Andre Richter
53821fe654
Add docker folder README 2019-10-05 18:19:20 +02:00
Berkus Decker
71f0e8caf7 Allow overriding JTAG interface device when running docker image
This will require any non-standard use of this container to also
specify the rpi3.cfg path when invoking.

For example:
`docker run ... -f /openocd/tcl/interface/jlink.cfg -f /openocd/rpi3.cfg`
to work with JLink interface.
2019-03-17 13:52:42 +01:00
Andre Richter
f6a0fb497d Revert "Allow overriding JTAG interface device when running docker image"
This reverts commit 30f83b260f.
2019-03-16 16:21:26 +01:00
Berkus Decker
30f83b260f Allow overriding JTAG interface device when running docker image 2019-03-16 15:55:34 +01:00
Andre Richter
0844823805 Minor corrections 2019-03-10 17:06:29 +01:00
Andre Richter
59c6c15c1d Add container for openocd and gdb 2019-03-10 17:06:29 +01:00
Andre Richter
4a716adcce
Add utils container to repository 2019-03-07 19:29:23 +01:00