refactoors
[mTask.git] / README.md
1 # mTask
2
3 ### Introduction
4 *mTasks* are small imperative tasks that can be run on an embedded device like
5 arduino/ESPxxx/Nucleo arm boards. They are communicated to the device in
6 bytecode which is interpreted by the engine that has to be programmed on the
7 device.
8
9 The devices suitable for *mTasks* are not limited to embedded devices. In the
10 `client` folder is a `C` reference implementation available for intel machines.
11
12 *mTasks* are written in [clean][clean] and specifically using the TOP
13 implementation DSL [iTasks][itasks].
14
15 ### How to setup the server
16 Install clean by running:
17 ```
18 ./install_clean.sh
19 ```
20
21 Build the tools by running `make`
22
23 ### How to setup the interpreters
24 For the linux version install `gcc` and run `make -C client -f Makefile.linux`.
25
26 For the STM version install `gcc-arm-none-eabi` and run `make -C client`.
27 To flash the binary to the device install (a recent version of)
28 `openocd` and run `make -C client flash`.
29
30 ### Thesis
31 The thesis accompanying this material can be found [here][thesis] and the
32 sources [here][sources]
33
34 ### Author(s)
35 Initial work on the DSL have been done by Pieter Koopman. Further extensions
36 have been made by Mart Lubbers.
37
38 [sources]: https://files.martlubbers.net/msc-thesis1617://git.martlubbers.net/?p=msc-thesis1617.git;a=summary
39 [thesis]: https://files.martlubbers.net/msc-thesis1617/
40 [clean]: clean.cs.ru.nl
41 [itasks]: clean.cs.ru.nl/ITasks