Crate freertos_rs

Source
Expand description

§FreeRTOS for Rust

Rust interface for the FreeRTOS embedded operating system. Requires beta Rust. It is assumed that dynamic memory allocation is provided on the target system.

This library interfaces with FreeRTOS using a C shim library which provides function wrappers for FreeRTOS macros. The compiled Rust application should be linked to the base C/C++ firmware binary. Check the subdirectory shim. Copy the source file to your firmware’s sources directory and modify it to include the appropriate headers for target your system.

For a complete example, check the enclosed GCC ARM/Rust/QEMU based unit tests. The project qemu_runner cross-compiles this library, compiles the main firmware using GCC ARM and links in the appropriate entry points for unit tests. GNU ARM Eclipse QEMU is used to run the test binaries.

Be sure to check the FreeRTOS documentation.

§Samples

Spawning a new task

Task::new().name("hello").stack_size(128).start(|| {
	loop {
		println!("Hello world!");
		CurrentTask::delay(Duration::infinite());
	}
}).unwrap();

Queue

let q = Queue::new(10).unwrap();
q.send(10, Duration::ms(5)).unwrap();
q.receive(Duration::infinite()).unwrap();

Mutex

let m = Mutex::new(0).unwrap();
{
	let mut v = m.lock(Duration::infinite()).unwrap();
	*v += 1;
}

Modules§

Structs§

Enums§

Traits§

Functions§

  • Perform checks whether the C FreeRTOS shim and Rust agree on the sizes of used types.

Type Aliases§