Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for additional platforms #15

Closed
podhrmic opened this issue Jan 19, 2023 · 5 comments
Closed

Support for additional platforms #15

podhrmic opened this issue Jan 19, 2023 · 5 comments

Comments

@podhrmic
Copy link

Hi! What is required in order to support the SDK on other platforms (specifically on Raspberry Pi 4)?
Looking at the code base, looks like the board specific code is only the https://github.com/BreakawayConsulting/sel4cp/blob/main/loader/src/loader.c and https://github.com/BreakawayConsulting/sel4cp/blob/main/build_sdk.py

Would all platform specific details be part of the .system file connecting irqs and defining memory regions (such as in the ethernet example)?

@hlyytine
Copy link

hlyytine commented Feb 5, 2023

Hi @podhrmic, please check https://github.com/tiiuae/sel4cp/tree/rpi4b_support -- there's a bug in how you create untypeds from regions -- you are supposed to do bit size aligning based on virtual addresses, not physical ones. sel4cp needs this fix before it can be used with rpi4.

@hlyytine
Copy link

hlyytine commented Feb 5, 2023

Also as a shameless plug, try our container to build sel4cp's Hello World to rpi4: https://github.com/tiiuae/tii_sel4_build/tree/wip/hlyytine-sel4cp#sel4cp

@podhrmic
Copy link
Author

podhrmic commented Feb 6, 2023

Thanks @hlyytine that is very cool! Looking at your commits, it seems that the platform support provided by the SDK is really just a loader and a kernel debug print, right?

@hlyytine
Copy link

hlyytine commented Feb 6, 2023

From peripherals point of view, pretty much yes. There's also the monitor and sel4cp goes a long way internally abstracting away differences between different architectures and use cases (for example, seL4 running on EL1 or EL2 on ARM). But that does not mean you could not build complex systems with sel4cp. For example, check this out: https://github.com/Ivan-Velickovic/sel4cp_vmm

So we at TII are experimenting with QEMU (or other VMM-like software, such as crosvm) running in dedicated "driver-VM" providing virtio devices to other Linux guests (not using those as VMMs per se). But it shouldn't be a problem to have native seL4 applications using these virtio devices. UNSW is working with the driver framework called sDDF and eventually they would like to have native drivers (which you might be looking after). But our solution (use dedicated VM to run Linux and provide virtio devices to other guests) is an intermediate step. And whenever sDDF is mature enough, we think we could use it as a virtio transport instead of our custom solution. Which means as long as you can get Linux running on any given board, you can configure a sel4cp VMM to run Linux in driver-VM there and provide virtio services, to either other VMs or native seL4 apps. Then you could incrementally implement more proper native drivers and finally ditch the driver-VM Linux.

Our prototype is for CAmkES VMM and we are currently migrating it to seL4 Core Platform, hoping to get first light within a month or so.

@Ivan-Velickovic
Copy link
Collaborator

An official guide for porting Microkit will be made, the relevant tracking issue is here #48. It contains details already for doing a port until a proper guide is merged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants