#v5 #startup #vex #heap-allocator

no-std vexide-startup

Support code for V5 Brain user program booting

11 releases

0.3.4 Nov 29, 2024
0.3.3 Nov 29, 2024
0.3.2 Oct 16, 2024
0.2.0 Jul 16, 2024
0.1.2 May 20, 2024

#191 in Robotics

Download history 4/week @ 2024-08-17 1/week @ 2024-08-24 6/week @ 2024-09-07 10/week @ 2024-09-14 28/week @ 2024-09-21 26/week @ 2024-09-28 400/week @ 2024-10-05 197/week @ 2024-10-12 75/week @ 2024-10-19 13/week @ 2024-10-26 14/week @ 2024-11-02 220/week @ 2024-11-09 55/week @ 2024-11-16 130/week @ 2024-11-23 252/week @ 2024-11-30

658 downloads per month
Used in 2 crates (via vexide)

MIT license

685KB
3.5K SLoC

Contains (static library, 505KB) link/libm.a

vexide-startup

Startup primitives for the vexide runtime. This project provides a bare-metal entrypoint that freestanding Rust binaries can leverage to run on the VEX V5 Brain.

This includes:

  • Stack setup
  • Code signature/program header types
  • BSS section handling
  • Global allocator setup for vexide_core.
  • vexos background processing

lib.rs:

This crate provides a minimal startup routine for user code on the VEX V5 Brain.

  • User code begins at an assembly routine called _boot, which sets up the stack section before jumping to a user-provided _start symbol, which should be your rust entrypoint.

  • From there, the Rust entrypoint may call the startup function to finish the startup process by clearing the .bss section (intended for uninitialized data) and initializing vexide's heap allocator.

This crate is NOT a crt0 implementation. No global constructors are called.

Dependencies

~2–2.8MB
~49K SLoC