MRAA library can be extremely handy in configuring GPIO in Rock boards. However, installation of MRAA library can pose some challenges to the user. In this tutorial, we will take you through a number of steps that will help in installing the library on ROCK 4C+.
To be able to carry out this installation you will need Debian Bullseye software on your ROCK 4C+ board.
Author: Pradeep Nandigama, Software Developer, OKdo
Debian 11 kernel 5.10 essentials
apt update && sudo apt upgrade -y
apt install build-essential -y
apt install git -y
You will need JDK 18.0.2.1 for installing and properly utilising MRAA library. To install JDK in your ROCK 4C+ please follow the steps below:
radxa@rock-4c-plus:~$ cd /usr/local
radxa@rock-4c-plus:/usr/local$ mkdir java
mkdir: cannot create directory ‘java’: Permission denied
radxa@rock-4c-plus:/usr/local$ sudo mkdir java
[sudo] password for radxa:
radxa@rock-4c-plus:/usr/local$ cd java
radxa@rock-4c-plus:/usr/local/java$ sudo wget https://download.oracle.com/java/18/archive/jdk-18.0.2.1_linux-aarch64_bin.tar.gz
--2023-07-10 13:10:15-- https://download.oracle.com/java/18/archive/jdk-18.0.2.1_linux-aarch64_bin.tar.gz
Resolving download.oracle.com (download.oracle.com)... 2.23.220.73
Connecting to download.oracle.com (download.oracle.com)|2.23.220.73|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 181090510 (173M) [application/x-gzip]
Saving to: ‘jdk-18.0.2.1_linux-aarch64_bin.tar.gz’
jdk-18.0.2.1_linux-aarch64_bin.tar.gz 100%[====================================================================================================>] 172.70M 8.07MB/s in 22s
2023-07-10 13:10:36 (7.99 MB/s) - ‘jdk-18.0.2.1_linux-aarch64_bin.tar.gz’ saved [181090510/181090510]
c
radxa@rock-4c-plus:/usr/local/java$ sudo tar xzvf jdk-18.0.2.1_linux-aarch64_bin.tar.gz
radxa@rock-4c-plus:/usr/local/java$ ls -la
total 176860
drwxr-xr-x 3 root root 4096 Jul 10 13:10 .
drwxr-xr-x 11 root root 4096 Jul 10 13:04 ..
drwxr-xr-x 9 root root 4096 Jul 10 13:11 jdk-18.0.2.1
-rw-r--r-- 1 root root 181090510 Aug 16 2022 jdk-18.0.2.1_linux-aarch64_bin.tar.gz
radxa@rock-4c-plus:~$ export JAVA_HOME=/usr/local/java/jdk-18.0.2.1/
radxa@rock-4c-plus:~$ export PATH=${JAVA_HOME}/bin:$PATH
radxa@rock-4c-plus:~$ java -version
java version "18.0.2.1" 2022-08-18
Java(TM) SE Runtime Environment (build 18.0.2.1+1-1)
Java HotSpot(TM) 64-Bit Server VM (build 18.0.2.1+1-1, mixed mode, sharing)
radxa@rock-4c-plus:~$ sudo apt-get install -y git build-essential swig python-dev python3-dev libnode-dev cmake libjson-c-dev
radxa@rock-4c-plus:~$ sudo apt-get install -y libc6 libgcc1 libstdc++6 python python2.7 libpython2.7 python3.9 libpython3.8 python3-dev python3
radxa@rock-4c-plus:~$ sudo apt-get install -y libgtest-dev pkg-config cmake-data
To download the MRAA library source code open a terminal on your ROCK 4C+ board and issue the following command:
radxa@rock-4c-plus:~$ git clone -b master https://github.com/radxa/mraa.git
Cloning into 'mraa'...
remote: Enumerating objects: 13029, done.
remote: Counting objects: 100% (274/274), done.
remote: Compressing objects: 100% (176/176), done.
remote: Total 13029 (delta 161), reused 152 (delta 88), pack-reused 12755
Receiving objects: 100% (13029/13029), 3.48 MiB | 7.88 MiB/s, done.
Resolving deltas: 100% (9252/9252), done.
cd mraa
Once you clone the MRAA git repository as shown above, you should see a folder in your current directory called mraa.
Change directory to mraa and have a look into the content inside. There should be a file called CMakeLists.txt inside the mraa folder. Open this file and modify the following files as shown below:
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 250d910..a5d82cd 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required (VERSION 2.8.11)
+cmake_minimum_required (VERSION 3.13.10)
project (mraa C CXX)
FIND_PACKAGE (Threads REQUIRED)
@@ -142,11 +142,14 @@ set (CMAKE_SWIG_FLAGS "")
find_path (SYSTEM_USR_DIR "stdlib.h")
include_directories (${SYSTEM_USR_DIR})
+cmake_policy(SET CMP0078 OLD)
+cmake_policy(SET CMP0086 NEW)
+
option (BUILDDOC "Build all doc." OFF)
-option (BUILDSWIG "Build swig modules." ON)
+option (BUILDSWIG "Build swig modules." OFF)
option (BUILDSWIGPYTHON "Build swig python modules." ON)
option (BUILDSWIGNODE "Build swig node modules." ON)
-option (BUILDSWIGJAVA "Build Java API." OFF)
+option (BUILDSWIGJAVA "Build Java API." ON)
option (USBPLAT "Detection USB platform." OFF)
option (FIRMATA "Add Firmata support to mraa." OFF)
option (ONEWIRE "Add Onewire support to mraa." ON)
diff --git a/include/version.h b/include/version.h
index 47366ef..3a567a1 100644
--- a/include/version.h
+++ b/include/version.h
@@ -11,8 +11,8 @@
extern "C" {
#endif
-const char* gVERSION;
-const char* gVERSION_SHORT;
+extern const char* gVERSION;
+extern const char* gVERSION_SHORT;
#ifdef __cplusplus
}
radxa@rock-4c-plus:~/mraa$ mkdir build
radxa@rock-4c-plus:~/mraa$ cd build/
radxa@rock-4c-plus:~/mraa/build$ cmake ..
radxa@rock-4c-plus:~/mraa/build$ make
radxa@rock-4c-plus:~/mraa/build$ sudo make install
radxa@rock-4c-plus:~/mraa/build$ sudo ldconfig
radxa@rock-4c-plus:~/mraa/build$ mraa-gpio list
01 3V3:
02 5V:
03 SDA7: GPIO I2C
04 5V:
05 SCL7: GPIO I2C
06 GND:
07 SPI2_CLK: GPIO SPI
08 TXD2: GPIO UART
09 GND:
10 RXD2: GPIO UART
11 PWM0: GPIO PWM
12 GPIO4_A3: GPIO
13 PWM1: GPIO PWM
14 GND:
15 GPIO4_C5: GPIO
16 GPIO4_D2: GPIO
17 3V3:
18 GPIO4_D4: GPIO
19 SPI1TX,TXD4: GPIO SPI UART
20 GND:
21 SPI1RX,RXD4: GPIO SPI UART
22 GPIO4_D5: GPIO
23 SPI1CLK: GPIO SPI
24 SPI1CS: GPIO SPI
25 GND:
26 ADC_IN0: AIO
27 SDA2: GPIO I2C
28 SCL2: GPIO I2C
29 SCL6,SPI2RX: GPIO I2C SPI
30 GND:
31 SDA6,SPI2TX: GPIO I2C SPI
32 GPIO3_C0: GPIO
33 SPI2CS: GPIO SPI
34 GND:
35 GPIO4_A5: GPIO
36 GPIO4_A4: GPIO
37 GPIO4_D6: GPIO
38 GPIO4_A6: GPIO
39 GND:
40 GPIO4_A7: GPIO
radxa@rock-4c-plus:~/mraa/build$
radxa@rock-4c-plus:~/mraa/build$ mraa-gpio version
Version v2.1.0-26-gd59936f on ROCK Pi 4
Congrats! If you have followed the steps above then you should have successfully installed MRAA library on your ROCK 4C+ single board computer.
MRAA library is super handy when it comes to configuring GPIO on ROCK boards.
What’s your challenge? From augmented reality to machine learning and automation, send us your questions, problems or ideas… We have the solution to help you design the world. Get in touch today.
Van een snelle tik tot het verpletteren van die liefdesknop en laat zien hoeveel plezier je aan dit project hebt beleefd.