https://github.com/laymer/grisplasp
Support material for Lasp applications on Grisp boards.
https://github.com/laymer/grisplasp
Last synced: 9 months ago
JSON representation
Support material for Lasp applications on Grisp boards.
- Host: GitHub
- URL: https://github.com/laymer/grisplasp
- Owner: Laymer
- Created: 2018-02-28T13:34:00.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2018-05-28T20:01:53.000Z (over 7 years ago)
- Last Synced: 2025-02-12T13:56:52.340Z (11 months ago)
- Language: Erlang
- Homepage:
- Size: 4.42 MB
- Stars: 0
- Watchers: 4
- Forks: 0
- Open Issues: 14
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Running Lasp Language on GRiSP boards
This is a repository intended to gather information and provide useful support for design and configuration of applications written in [Lasp](https://lasp-lang.readme.io/) and running on [GRiSP](https://www.grisp.org/) boards.
## Proposed design
Based on the principles of edge computing specified by [LightKone](https://www.lightkone.eu/), the distributed nodes should be able to replicate a fraction of the state and operate locally. As an attempt to implement that pattern, the following design is proposed for an edge node :
## Cloning/Copying existing project :
If the rebar3 grisp build command returns an error code that contains anything similar to :
```
configure: error: C compiler cannot create executables
```
Eventhough the toolchain path is correctly set in the rebar.config of the project, emptying the rebar3 cache and rebuilding in a new project should provide a workaround. It can be done with the following commands (shell) :
```
rm -rdf {~/.cache/rebar3/*,/path/to/defect/project}
rebar3 new grispapp=newproject dest=/path/to/sd
cp -a /path/to/defect/project/{grisp,rebar.config,src} /path/to/newproject && cd /path/to/newproject && rebar3 grisp build
```
Since the environment and path can be altered if builds/deployments have been made if sudo was previously called, the files in otp/20.2/build/make can contain incorrect references when the configuration is run after a build. Erasing the cache and building from a new app folder can solve this issue.
### Dependencies source files inclusion :
If the sources of the application's dependencies are not correctly included in the build for the SD card, cleaning the previous build and unlocking the rebar lock file can be helpful :
```
cd /path/to/project && rm -rdf {_build,_grisp}
rebar3 unlock && rebar3 grisp build && rebar3 compile
rm -rdf ~/.cache/rebar3/plugins/* && rm -rdf _build/grisp && rm -rdf _grisp && rebar3 unlock && rebar3 grisp build
```
NOTE : when calling commands cp and rm on multiple targets such as {file1,file2,...}, the files must always be separated by commas that are never followed by spaces e.g. never {file1, file2, ...} otherwise the shell is unable to locate them.
## Auto-deployment script usage :
The script detects when the SD Card is inserted and compiles the project, deploys and unmounts the card automatically. The script requires sudo privilegies for unmounting.
Note : the rebar.config must not call unmount/umount in the post_script argument for the grisp plugin.
Usage :
```
$ sudo ./grisp_deploy.sh -s /Path/to/GRISP -a /Path/to/application/ [-n ]
```
Where the parameters are the following :
- `-s` : SD Card path e.g. : `-s /Volumes/GRISP`
- `-a` : Path to the target application root folder e.g. : `-a /GRISP/robot/`
- `n` : (optional) Name of the target application e.g. : robot. If not supplied, the first found module will be deployed.
## Installation :
Documentation is available in the [Grisp wiki](https://github.com/grisp/grisp/wiki/). This section describes specific encountered installation cases and further remarks/notes.
### Ubuntu 16.04.3 LTS
Once Rebar3 has been installed with the help of
```
$ mkdir ~/bin
$ curl -o ~/bin/rebar3 https://s3.amazonaws.com/rebar3/rebar3
$ chmod +x ~/bin/rebar3
```
Running the `rebar3` command resulted in an error of type :
```
No command 'rebar3' found
```
The following commands must be executed :
```
cd ~/bin/
./rebar3 local install
```
And after appending the resulting line to the `~/.bashrc` file :
```
export PATH=$HOME/.cache/rebar3/bin:$PATH
```
The `rebar3 plugins list` command can be runned in order to check whether the binary can now be executed.
After creating a new grispapp and adding the toolchain in the `rebar.config` of that app, it can be built using :
```
cd
rebar3 grisp build
```
## Configuring Grisp's network
Configuring the network layer of Grisp boards has not yet been implemented and therefore needs the following manipulation to manually change the network layer on Grisp:
In the existing `node` folder, you will need to change the `erl_main.c` located at `_build/default/lib/grisp/grisp/grisp_base/sys/`.
After changing the file, run the following command :
```
rebar3 grisp build
```
The Grisp plugin for rebar will build the custom OTP version used in Grisp and will replace OTP's default version of `erl_main.c` with the file you previously modified.
You can verify that your `erl_main.c` has been included in OTP's build by viewing the latter which is located at : `_grisp/otp/20.2/build/erts/emulator/sys/unix/erl_main.c`
Note: An example is provided in `node/grisp/grisp_base/sys/erl_main.c`.