xous-core/apps/app-loader/spawn
Vihaan Jim 9fc988186b Working + somewhat improved UI!
`app-loader' can now successfully download apps from the app server
and run them! I have also improved the UI by adding a progressbar
when an app is loading so that you know when it is done and also
replacing some panics with notifications that way the whole machine
doesn't shut down if the server has some problems.

The remaining UI work is to make sure that the menu pops back up when
you for example set the server.

I also need to add locales, a README, etc.
2023-08-09 13:49:33 -04:00
..
src Working + somewhat improved UI! 2023-08-09 13:49:33 -04:00
build.rs Turn app-loader into an app instead of a service 2023-08-01 22:16:40 -04:00
Cargo.toml Turn app-loader into an app instead of a service 2023-08-01 22:16:40 -04:00
link.x Turn app-loader into an app instead of a service 2023-08-01 22:16:40 -04:00
README.md Turn app-loader into an app instead of a service 2023-08-01 22:16:40 -04:00

Spawn a process

This crate represents an initial program that will run when a process starts up. It will listen on a Server and take orders from the parent process to finish setting itself up.

Initialization

The process starts with a stack and a text section but no heap, BSS, or data section. The entrypoint looks like this:

pub extern "C" init(a1: u32, a2: u32, a3: u32, a4: u32) -> ! {
    let sid = xous::SID::from_u32(a1, a2, a3, a4);
    loop {}
}

This process is responsible for performing its own bootstrapping (i.e. allocating/initializing .data and .bss), after which it should accept messages on the connection and copy data as necessary.

API

The following messages are supported:

Mnemonic Opcode Type Description
WriteMemory 1 M Write memory into an area of memory. The Offset field is used to determine where the block will start.
WriteArgs 2 M Reserved
WriteEnvironment 3 M Reserved
FinishSetup 255 * Terminate the loop, shutdown the server, and start the program.