rp2040os
1.0.0
| Context Time | |
|---|---|
| No stats collection: | 5.8 uS |
| With stats collecton: | 9.3 uS |
| With stats/stack checks: | 9.9 uS |
Wall time 0:56:38 CPU0 Ctx=0.095%, Util= 1.229% Idle= 98.771% CPU1 Ctx=0.074%, Util= 0.081% Idle= 99.919% Thrd Name S PRI CPU LastCPU 0 Red LED W 100 0.001% 1 1 Green LED W 100 0.011% 0 2 Report R 255 1.115% 0 3 Spinner Z 150 0.000% 0
The current implementation consists of three files and a main example:
rp2040os.h OS header rp2040os.c Implementation in C func.s Implementation function in assembly main.c Example
A simple use case to kick off two threads:
#include "rp2040.h"
static uint32_t blink1Stack[128];
void blink1() {
while (true) {
setGPIO(LED_PIN1);
delayms(300);
clrGPIO(LED_PIN1);
delayms(300);
}
}
static uint32_t blink2Stack[128];
void blink2() {
while (true) {
setGPIO(LED_PIN2);
delayms(300);
clrGPIO(LED_PIN2);
delayms(300);
}
}
int main() {
stdio_init_all();
gpio_init(LED_PIN1);
gpio_set_dir(LED_PIN1, GPIO_OUT);
gpio_init(LED_PIN2);
gpio_set_dir(LED_PIN2, GPIO_OUT);
addThread("Red LED", blink1, blink1Stack, sizeof(blink1Stack), 100);
addThread("Green LED", blink2, blink2Stack, sizeof(blink2Stack), 100);
setupSched(); // No return
}
export PICO_SDK_PATH=path to your pico-sdk
Copy the $PICO_SDK_PATH/external/pico_sdk_import.cmake into main directory.
$> mkdir build $> cd build $> cmake .. -DCMAKE_BUILD_TYPE=Debug $> make