Embedded programming in haskell using the Copilot stream DSL and Zephyr
zephyr-copilot contains allows using Haskell to program many boards
supported by the Zephyr project.
zephyr-copilot uses the Copilot stream DSL (domain-specific language)
and Functional Reactive Programming (FRP) to generate a program which
can be compiled in Zephyr and flashed to the board.
See Copilot.Zephyr for details on how to use write a program using this
library.
For example, to make a board blink its LED:
import Copilot.Zephyr.Board.Generic
main = zephyr $ do
led0 =: blinking
delay =: MilliSeconds (constant 100)
This and other examples are included in the Examples/ directory, each
with their own README explaining how to build and use them.
Copilot is a stream (i.e., infinite lists) domain-specific language
(DSL) in Haskell that compiles into embedded C. Copilot contains an
interpreter, multiple back-end compilers, and other verification tools.
Zephyr is a real time embedded operating system (RTOS) supporting
hundreds of boards.
## Contributing
Contributions are welcome, including adding support for more parts of
Zephyr and more boards that are supported by Zephyr.
Any contribution should have well documented functions and types.