Commit Graph

30 Commits

Author SHA1 Message Date
Gerwin Klein c0e7c9db66 docs: type set manual in seL4 foundation style
Co-authored-by: Ivan Velickovic <i.velickovic@unsw.edu.au>
Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2024-06-27 10:54:11 +10:00
Nick Spinale 04b7894ef6 build_sdk.py: add support for skipping tool
Signed-off-by: Nick Spinale <nick@nickspinale.com>
2024-06-26 19:01:08 +10:00
Ivan Velickovic 143c503cd7 Add hierarchy example to SDK and fix spelling
This makes sure that the hierarchy example ends up in the actual
SDK.

Signed-off-by: Ivan Velickovic <i.velickovic@unsw.edu.au>
2024-06-25 14:59:46 +10:00
Nick Spinale d3ed300fef build_sdk.py: add support for minimal build
Signed-off-by: Nick Spinale <nick@nickspinale.com>
2024-06-24 18:20:52 +10:00
Ivan Velickovic bed500b2ef Rewrite the Microkit tool
This commit rewrites the entire Microkit tool from Python to Rust.

This is was done for the following reasons:
* The current tool was difficult to build from source. It took too long,
  did not have any cache for rebuilds, and sometimes would not reliably
  build/link with musl.
* While perhaps not as extensive as C, Rust does have some verification
  tooling surrounding it, meaning it is possible for us to verify the
  Microkit tool in the future. Although at this time there are no
  concrete plans to verify the tool.

This rewrite, while not significantly reducing our dependencies in
general, does improve the situation. We are no longer dependent on
pyoxidizer, which was causing most of the issues with the tool.

We introduce a dependency on the Rust toolchain. The tool itself has
two dependencies (for XML parsing). No other dependencies are needed,
and it was a conscious decision to re-invent the wheel where the Rust
standard library was lacking (compared to the Python standard library).

The other programming languages considered for the rewrite were Zig and
Go. While they both have their benefits and costs (as does Rust), they
were not chosen due to them not being in any other seL4 Foundation
supported projects meaning that it could have been difficult to continue
maintaining the tool in the future.

The main cost of rewriting the tool in Rust is that it has undoubtedly
become more complicated and harder to understand. This could potentially
result in a higher barrier to entry for contributors. However, most
contributions such as adding platform support will not need to touch the
tool.

Signed-off-by: Ivan Velickovic <i.velickovic@unsw.edu.au>
2024-05-22 14:50:34 +10:00
Nick Spinale c2cfd9a37c Make tool binary world-accessible
Signed-off-by: Nick Spinale <nick@nickspinale.com>
2024-04-24 11:20:02 +10:00
Ivan Velickovic 1f65c5302b Initial support for QEMU's ARM virt platform
Signed-off-by: Ivan Velickovic <i.velickovic@unsw.edu.au>
2024-03-28 09:03:21 +11:00
Ivan Velickovic 224132b935 Add support for Odroid-C2 and Odroid-C4
Signed-off-by: Ivan Velickovic <i.velickovic@unsw.edu.au>
2024-02-26 10:32:23 +11:00
Ivan-Velickovic 42a616a26e Add ability to specify target for Microkit tool
Add the `--tool-target-triple` option to specify which target
to build the tool for. Unfortunately Rust does not allow you to
cross-compile from Linux to macOS, however this will allow x64 macOS
hosts to cross-compile to ARM64 macOS. In theory the reverse would
work as well but I have not tried it.

Signed-off-by: Ivan Velickovic <i.velickovic@unsw.edu.au>
2024-02-13 20:17:49 +11:00
Ivan-Velickovic 0a324fa9bf Add ability to build SDK for macOS hosts
The Microkit tool can now be built for x64 macOS as well as ARM64
macOS, allowing the use of the Microkit SDK in macOS environments.

Note that unlike the Linux Microkit tool, the macOS one will be
dynamically linked due to macOS not supporting statically linked
binaries.

Signed-off-by: Ivan Velickovic <i.velickovic@unsw.edu.au>
2024-02-13 20:17:49 +11:00
Ivan Velickovic e04afe55ac Add support for i.MX8MQ-EVK
Signed-off-by: Ivan Velickovic <i.velickovic@unsw.edu.au>
2024-01-27 20:13:22 +11:00
Ivan Velickovic 07ae85c093 Rename "imx8mm" to "imx8mm_evk"
For consistency with seL4.

Signed-off-by: Ivan Velickovic <i.velickovic@unsw.edu.au>
2024-01-27 18:23:25 +11:00
Ivan Velickovic e69e108ba3 Re-enable support for i.MX8MM-EVK
The version of seL4 that Microkit used previously failed to build
for the i.MX8MM-EVK which is why this was disabled.

Signed-off-by: Ivan Velickovic <i.velickovic@unsw.edu.au>
2024-01-27 18:23:25 +11:00
Josh Felmeden a4a968431e Added support for MaaXBoard
Signed-off-by: Josh Felmeden <josh.felmeden@capgemini.com>
Signed-off-by: Ivan Velickovic <i.velickovic@unsw.edu.au>
2024-01-27 12:35:47 +11:00
Ivan Velickovic d0f97185a1 Do not package crt0.o in SDK
Previously the linker script referred to crt0.o which is why it was
necessary that it was part of the SDK. However, now libmicrokit.a
contains crt0.o and so it is not necessary to continue distributing
crt0.o separately.

Signed-off-by: Ivan Velickovic <i.velickovic@unsw.edu.au>
2024-01-11 18:15:33 +11:00
Ivan-Velickovic d7cfe42ef6 build_sdk: remove redundant "-DKernelPlatform"
Signed-off-by: Ivan-Velickovic <i.velickovic@unsw.edu.au>
2023-09-14 11:11:50 +10:00
Ivan-Velickovic cb849f7695 Use specific AArch64 toolchain when compiling seL4
The seL4 build system is configured to find installations of compilers
on the host, meaning that the `aarch64-none-elf-` toolchain that we use
might not be used when building seL4 depending on what other toolchains
are installed.

Signed-off-by: Ivan-Velickovic <i.velickovic@unsw.edu.au>
2023-09-14 10:51:31 +10:00
Ivan Velickovic f86923cc54 build_sdk: add contents LICENSES directory to SDK
Signed-off-by: Ivan Velickovic <i.velickovic@unsw.edu.au>
2023-09-13 14:35:42 +02:00
Gerwin Klein 9db7a1bd3e build_sdk: adjust for LICENSE file rename
Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2023-09-13 14:35:42 +02:00
Ivan Velickovic 61341032ac Adhere to style checks in script for building SDK
Signed-off-by: Ivan Velickovic <i.velickovic@unsw.edu.au>
2023-09-13 21:43:12 +10:00
Gerwin Klein f7ca9db433 Add missing license headers and texts
Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2023-09-13 13:00:29 +02:00
Ivan-Velickovic e7a0121f07 The big rename (seL4 Core Platform -> seL4 Microkit)
The seL4 Core Platform project is being renamed to seL4 Microkit.

It is to be referred to as seL4 Microkit in a non-seL4 context, and
Microkit everywhere else.
2023-09-13 16:49:18 +10:00
Ivan-Velickovic 192c223474 Temporarily disable i.MX8MM-EVK support
The standalone seL4 kernel ELF does not successfully build for the
i.MX8MM-EVK. This is fixed in a later version of seL4. In the interest
of having the SDK build, we temporarily disable building the SDK for
this platform.

Signed-off-by: Ivan-Velickovic <i.velickovic@unsw.edu.au>
2023-06-05 16:24:11 +10:00
Ivan-Velickovic 9eb051f9d7 Fix name of passive server example 2023-06-03 18:31:55 +10:00
Lucy 457a83fc08 Support for passive servers
Signed-off-by: Lucy <lucyparker544@gmail.com>
2023-03-06 09:34:45 +11:00
Ben Leslie beff073eab Add initial support for the ZCU102 development board
Signed-off-by: Ben Leslie <benno@brkawy.com>
2021-11-22 05:03:20 +00:00
Ben Leslie cf5d79f8de Add multi-board support to the loader
This starts by factoring out the `putc` implementation and the
specific physical address at which the loader is linked.

Signed-off-by: Ben Leslie <benno@brkawy.com>
2021-11-22 05:03:20 +00:00
Ben Leslie 4dcd700da2 Build seL4 with the same Python as build_sdk.py
Previously the default 'python3' in the user's path would be
during the kernel build. Instead this explicitly instructs the
kernel cmake build system to use the python3 that is running
build_sdk.py. This ensure better reproducibility of the kernel
build process, and avoids relying on the user's environment.

To assist in this the requirements.txt is updated to include
deps required for the kernel build process (ply and Jinja2).
This ensures the kernel has the correct libraries during build.

Finally, the README.md is update to direct to the latest
commit on the seL4 core platform support branch. The kernel
has minor updates to avoid unnecessary deps on older Python
packages. Specifically, the kernel at one point in time supported
build with either Python2 or Python3. This is no longer supported
however the scripts previously contained some legacy code and
dependencies designed to support this.

Signed-off-by: Ben Leslie <benno@brkawy.com>
2021-11-16 01:52:24 +00:00
Ben Leslie 744e6d2310 Correctly find external programs files
The README recommends creating the Python environment in 'pyenv', however
the build_sdk.py script hard codes './env/bin/' search path.

Use Python executable location to correctly determine search path.

Signed-off-by: Ben Leslie <benno@brkawy.com>
2021-11-15 03:23:36 +00:00
Ben Leslie 59f3d7ecea Initial public source code release of seL4 core platform 2021-10-20 23:03:39 +00:00