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
This demo runs **two** separate bare metal guest instances simultaneously on Bao.
4
+
5
+
## Description
6
+
7
+
***Guest 1 (VM0)**: A bare metal application running on a subset of cores.
8
+
***Guest 2 (VM1)**: Another instance of the same bare metal application running on a distinct subset of cores.
9
+
10
+
Both guests operate independently, demonstrating Bao's ability to isolate and manage multiple bare metal execution environments.
11
+
12
+
## Build Instructions
13
+
14
+
1.**Select your target platform** and run the build command.
15
+
16
+
### For e3650 Platform (Automated)
17
+
18
+
The build system for `e3650` automatically compiles two separate bare metal binaries linked to their respective memory regions defined in `make.mk`.
19
+
20
+
***VM0 Base**: `0x00B00000`
21
+
***VM1 Base**: `0x00C00000`
22
+
23
+
Simply run:
24
+
```bash
25
+
make PLATFORM=e3650 DEMO=baremetal+baremetal CROSS_COMPILE=arm-none-eabi-
26
+
```
27
+
28
+
This will generate:
29
+
-`wrkdir/imgs/baremetal_vm0.bin`
30
+
-`wrkdir/imgs/baremetal_vm1.bin`
31
+
-`wrkdir/imgs/bao.bin` (Parameters embedded)
32
+
33
+
34
+
## Running
35
+
36
+
Load the generated Bao binary to the target platform.
37
+
***e3650**: Ensure the guest binaries are loaded to their respective addresses in memory if not bundled. (Note: standard Bao flow might require loading `bao.bin` which setup the guests if they are incbin'd, or loading guests separately).
This directory contains the platform-specific configurations and build rules for the **Phytium E3650** platform.
4
+
5
+
## Supported Demos
6
+
7
+
Currently, the following demos are supported for E3650:
8
+
9
+
1.**`baremetal`**
10
+
* A single baremetal guest (VM0) running on 4 cores.
11
+
* Features basic UART output and interrupt handling.
12
+
* Memory Base: `0x00B00000`
13
+
14
+
2.**`baremetal+baremetal`**
15
+
* Two simultaneous baremetal guests.
16
+
***VM0** (Master): Runs on Cores 0-1, Memory Base `0x00B00000`.
17
+
***VM1** (Slave): Runs on Cores 2-3, Memory Base `0x00C00000`.
18
+
* Includes inter-vm communication and staggered UART output to demonstrate multi-core isolation.
19
+
20
+
## Build Instructions
21
+
22
+
To build a demo, use the standard `make` command from the root `bao-demos` directory. You must specify `PLATFORM=e3650` and the corresponding `CROSS_COMPILE`.
23
+
24
+
### Prerequisites
25
+
*`arm-none-eabi-` toolchain (AArch32)
26
+
27
+
### Building Single Baremetal
28
+
```bash
29
+
make PLATFORM=e3650 DEMO=baremetal CROSS_COMPILE=arm-none-eabi-
30
+
```
31
+
32
+
### Building Dual Baremetal
33
+
```bash
34
+
make PLATFORM=e3650 DEMO=baremetal+baremetal CROSS_COMPILE=arm-none-eabi-
35
+
```
36
+
37
+
## Output Artifacts
38
+
39
+
The build system automatically fetches the external PAC tool (`e3650_pac_tool`) and packages the Bao Hypervisor and Guest images into a signed PAC file.
Flash the downloaded bootloader($BAO_DEMOS_WRKDIR_SRC/e3650_pac_tool/bootloader/e3650_bootloader.pac) and bao.pac package into the E3650 board using Semidrive's SDFactoryTool. Access to this tool requires an active support agreement or direct contact with [Semidrive](https://www.semidrive.com/).
0 commit comments