Git Product home page Git Product logo

picore's Introduction

Pico-RE: Pico Runtime Environment

This is an addon to The Raspberry Pi Pico SDK which provides some runtime environment.

It provides a cooperative scheduling model and some communication libaries.

Main utilities

Tasks

Everything is centered around a task model. Tasks are scheduled in a queue where they are services in a round-robin manner. Tasks may be scheduled ASAP or after a timeout.

FIFO

A fifo is a ring buffer with producer and consumer ends. Pico-RE fifos can schedule tasks every time some data gets available in the fifo, or every time some room is available in the fifo. This allows producers and consumers to be waken up selectively.

Queue

A queue is a ring buffer of pointers where producer and consumer may exchange arbitrart structures.

I2C abstraction

I2C abstraction gives a context for bus and slave. On top of this are modeled EEPROM access methods with abstract interface.

Hardware integration

Library gives some integration with Pico-SDK APIs, including:

  • TinyUSB service call wrapped as a task,

  • UART driver that converts to FIFOs,

  • TinyUSB CDC interface that converts to FIFOs,

  • stdio binding from/to FIFOs.

Example code

See examples for example code you can build.

Quick-start your own project

You can add Pico-RE to your project similarly to the SDK (copying external/picore_import.cmake into your project) having set the PICORE_PATH variable in your environment or via cmake variable.

cmake_minimum_required(VERSION 3.12)

# Pull in PICO SDK (must be before project)
include(pico_sdk_import.cmake)

# We also need PICO RE
include(picore_import.cmake)

project(pico_playground C CXX)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)

picore's People

Contributors

nipo avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.