You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: DEVELOPER.md
+2-4Lines changed: 2 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -108,15 +108,13 @@ When you build the SDK, provide an extra argument `--toolchain-prefix-riscv64 ri
108
108
The SDK includes a binary of the seL4 kernel.
109
109
During the SDK build process the kernel is build from source.
110
110
111
-
At this point in time there are some minor changes to the seL4 kernel required for Microkit. This is temporary, more details can be found [here](https://github.com/seL4/microkit/issues/52).
112
-
113
111
Please clone seL4 from:
114
112
115
113
https://github.com/seL4/seL4.git
116
114
117
-
The correct branch to use is `microkit`.
115
+
The correct branch to use is `master`.
118
116
119
-
Testing has been performed using commit `3aafe9e0b9527794c547d12090117e1000302da0`.
117
+
Testing has been performed using commit `b60b6652a47f4e749d06fbdb9dd7b5d074625b03`.
Copy file name to clipboardExpand all lines: docs/manual.md
+13-14Lines changed: 13 additions & 14 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1183,8 +1183,11 @@ PCIDs not supported by the processor
1183
1183
```
1184
1184
1185
1185
@billn continue
1186
+
1186
1187
@billn directing the user to write grub stanzas and stuff is a bit complicated, how about we build a bootable ISO from the tool?
1187
1188
1189
+
@billn GRUB is also not Mac friendly, maybe recommend users to use something like Limine instead?
1190
+
1188
1191
## ZCU102 {#zcu102}
1189
1192
1190
1193
The ZCU102 can run on a physical board or on an appropriate QEMU based emulator.
@@ -1289,9 +1292,6 @@ For the kinds of systems targeted by the Microkit, this reduction of the usable
1289
1292
The limitation on the size of by-value arguments is forced by the (architecture-dependent) limits on the payload size of the underlying seL4 operations, as well as by efficiency considerations.
1290
1293
The protected procedure payload should be considered as analogous to function arguments in the C language; similar limitations exist in the C ABIs (Application Binary Interfaces) of various platforms.
1291
1294
1292
-
\
1293
-
\
1294
-
1295
1295
## Limits
1296
1296
1297
1297
The limitation on the number of protection domains in the system is relatively arbitrary.
@@ -1318,32 +1318,30 @@ correspond to PD program images to the Microkit tool which is responsible to
1318
1318
for packaging everything together into a single bootable image for the target
1319
1319
platform.
1320
1320
1321
-
This final image contains a couple different things:
1321
+
On ARM and RISC-V, this final image contains a couple different things:
1322
1322
1323
1323
* the Microkit loader
1324
1324
* seL4
1325
-
* the Monitor (and associated invocation data)
1326
-
* the images for all the user's PDs
1325
+
* the capDL initialiser (and associated capDL specification)
1327
1326
1328
1327
When booting the image, the Microkit loader starts, jumps to the kernel, which
1329
-
starts the monitor, which then sets up the entire system and starts all the PDs.
1328
+
starts the capDL initialiser, which then sets up the entire system and starts all the PDs, including the Monitor.
1329
+
1330
+
On x86, the tool produces a boot module that only contains the capDL initialiser.
1331
+
The seL4 kernel image is distributed as part of the SDK. You must bring your own
1332
+
Multiboot 2 compliant bootloader which then loads the kernel and boot module.
1330
1333
1331
1334
Now, we will go into a bit more detail about each of these stages of the
1332
1335
booting process as well as what exactly the Microkit tool is doing.
1333
1336
1334
-
## Loader
1337
+
## Loader (ARM and RISC-V)
1335
1338
1336
1339
The loader starts first, it has two main jobs:
1337
1340
1338
-
1. Unpack all the parts of the system (kernel, monitor, PD images, etc) into
1341
+
1. Unpack all the parts of the system (kernel and capDL initialiser) into
1339
1342
their expected locations within main memory.
1340
1343
2. Finish initialising the hardware such that the rest of the system can start.
1341
1344
1342
-
Unpacking the system image is fairly straight-forward, as all the information
1343
-
about what parts of the system image need to go where is figured out by the
1344
-
tool and embedded into the loader at build-time so when it starts it just goe
1345
-
through an array and copies data into the right locations.
1346
-
1347
1345
Before the Microkit loader starts, there would most likely have been some other
1348
1346
bootloader such as U-Boot or firmware on the target that did its own hardware
1349
1347
initialisation before starting Microkit.
@@ -1358,6 +1356,7 @@ that will not be done by a previous booting stage, such as:
1358
1356
Once this is all completed, the loader jumps to seL4 which starts executing.
1359
1357
The loader will never be executed again.
1360
1358
1359
+
@bill continue fixing below
1361
1360
## Monitor
1362
1361
1363
1362
Once the kernel has done its own initialisation, it will begin the
0 commit comments