Please enable javascript, or click here to visit my ecommerce web site powered by Shopify.
Jump to: navigation, search

Difference between revisions of "RockpiE/dev/libmraa"

< RockpiE‎ | dev
(test spi)
 
(10 intermediate revisions by 2 users not shown)
Line 5: Line 5:
 
     [[rockpiE | ROCK Pi E]] > [[rockpiE/dev | Development]] > [[rockpiE/dev/libmraa | libmraa]]
 
     [[rockpiE | ROCK Pi E]] > [[rockpiE/dev | Development]] > [[rockpiE/dev/libmraa | libmraa]]
  
= Libmraa-rockpie =
+
=== Libmraa on ROCK Pi E ===
  
== Install libmraa ==
+
This guide describes how to use libmraa on ROCK Pi E.
  
Modify your /etc/apt/sources.list.d/apt-radxa-com.list as follow :
+
==== Install essential packages ====
  
#deb http://apt.radxa.com/buster-stable/ buster main
+
Package libmraa is in the Radxa APT bionic-testing, bionic-stable, buster-testing and buster-stable repositories.
deb http://apt.radxa.com/buster-testing/ buster main
+
  
 +
Execute the following commands to add Radxa APT
  
Get the pub key :
+
rock@rockpie:~$ export DISTRO=bionic-testing     # for Bionic
wget -O -  apt.radxa.com/buster-testing/public.key | sudo apt-key add -
+
  
 +
or
  
Update APT package information :
+
  rock@rockpie:~$ export DISTRO=buster-testing      # for Buster
  sudo apt-get update
+
  
 +
rock@rockpie:~$ echo "deb http://apt.radxa.com/$DISTRO/ ${DISTRO%-*} main" | sudo tee -a /etc/apt/sources.list.d/apt-radxa-com.list
  
Install libmraa :
+
Get the pub key
sudo apt-get install libmraa-rockpie
+
  
 +
rock@rockpie:~$  wget -O -  apt.radxa.com/buster-testing/public.key | sudo apt-key add -
  
== Enable interface ==
+
Install essential packages:
See ROCK Pi S GPIO pintout. ROCK Pi E has one 40-pin expansion header. Each pin is distinguished by color.
+
  
=== Hardware V1.0/V1.1 ===
+
rock@rockpie:~$ sudo apt-get update
 +
rock@rockpie:~$ sudo apt-get install -y rockchip-overlay libmraa # libmraa version: >=1.0
 +
rock@rockpie:~$ sudo apt-get install -y linux-4.4-rock-pi-e-latest # ROCK Pi E kernel version: >= 4.4.194-17
 +
 
 +
Install compiler:
 +
rock@rockpie:~$ sudo apt install -y build-essential
 +
 
 +
==== Enable interface ====
 +
See ROCK Pi E [[RockpiE/hardware/rockpiE#gpio | GPIO pintout]]. ROCK Pi E has one 40-pin expansion header. Each pin is distinguished by color.
 +
 
 +
===== Hardware V1.0/V1.1 =====
 
25 GPIO:
 
25 GPIO:
 
  PIN3  GPIO2_A4
 
  PIN3  GPIO2_A4
Line 93: Line 102:
 
then '''reboot'''
 
then '''reboot'''
  
 
+
==== Test ====
== Test ==
+
===== test gpio =====
=== test gpio ===
+
 
Use '''mraa-gpio''' to test
 
Use '''mraa-gpio''' to test
  
Line 105: Line 113:
 
  05        SCL1: GPIO I2C   
 
  05        SCL1: GPIO I2C   
 
  06        GND:  
 
  06        GND:  
  07        TXD1: GPIO SPI 
+
  07        TXD1: GPIO UART
 
  08        TXD2: GPIO UART  
 
  08        TXD2: GPIO UART  
 
  09        GND:  
 
  09        GND:  
 
  10        RXD2: GPIO UART  
 
  10        RXD2: GPIO UART  
  11  SPI_CLK_M2: GPIO PWM  
+
  11  SPI_CLK_M2: GPIO SPI  
 
  12    GPIO2_D2: GPIO  
 
  12    GPIO2_D2: GPIO  
  13 SPI_CSN0_M2: GPIO PWM  
+
  13 SPI_CSN0_M2: GPIO SPI  
 
  14        GND:  
 
  14        GND:  
  15  SPI_RXD_M2: GPIO  
+
  15  SPI_RXD_M2: GPIO SPI 
  16    USB20DM: GPIO
+
  16    USB20DM:  
 
  17        3V3:  
 
  17        3V3:  
  18    USB20DP: GPIO
+
  18    USB20DP:  
  19    GPIO0_D3: GPIO SPI  UART
+
  19    GPIO0_D3: GPIO  
 
  20        GND:  
 
  20        GND:  
  21    GPIO2_C3: GPIO SPI  UART
+
  21    GPIO2_C3: GPIO  
  22 SPI_CSN1_M0: GPIO  
+
  22   GPIO2_B4: GPIO  
  23    GPIO1_D4: GPIO SPI 
+
  23    GPIO1_D4: GPIO  
  24    GPIO2_A3: GPIO SPI 
+
  24    GPIO2_A3: GPIO  
 
  25        GND:  
 
  25        GND:  
  26    GPIO2_C7: AIO 
+
  26    GPIO2_C7:  
  27  SPI_TXD_M2: GPIO I2C  
+
  27  SPI_TXD_M2: GPIO SPI  
  28    GPIO2_C1: GPIO I2C 
+
  28    GPIO2_C1: GPIO  
  29    GPIO2_C0: GPIO I2C  SPI 
+
  29    GPIO2_C0: GPIO  
 
  30        GND:  
 
  30        GND:  
  31    GPIO2_B7: GPIO I2C  SPI 
+
  31    GPIO2_B7: GPIO  
  32    UART1_RX: GPIO  
+
  32    UART1_RX: GPIO UART
  33    GPIO2_C2: GPIO SPI 
+
  33    GPIO2_C2: GPIO  
 
  34        GND:  
 
  34        GND:  
 
  35    ADC_IN1: AIO   
 
  35    ADC_IN1: AIO   
Line 140: Line 148:
 
  40    GPIO2_C6: GPIO  
 
  40    GPIO2_C6: GPIO  
 
  rock@rockpie:~$  
 
  rock@rockpie:~$  
  rock@rockpie:~$ sudo mraa-gpio set 23 1  //pin40 pull high   
+
  rock@rockpie:~$ sudo mraa-gpio set 40 1  //pin40 pull high   
  rock@rockpie:~$ sudo mraa-gpio set 23 0  //pin40 pull low
+
  rock@rockpie:~$ sudo mraa-gpio set 40 0  //pin40 pull low
  
=== test i2c ===
+
===== test i2c =====
 
Use '''mraa-i2c''' to test, we must have a i2c slave device , for example, we use I2C EEPROM:
 
Use '''mraa-i2c''' to test, we must have a i2c slave device , for example, we use I2C EEPROM:
  
Line 163: Line 171:
 
  rock@rockpie:~$  
 
  rock@rockpie:~$  
  
=== test spi ===
+
===== test spi =====
 
fristly, modify /boot/uEnv.txt to enable the spi0, The changes are as follows :
 
fristly, modify /boot/uEnv.txt to enable the spi0, The changes are as follows :
  
Line 182: Line 190:
 
After modification, you need to '''reboot'''
 
After modification, you need to '''reboot'''
  
use c to test spi,compile spi.c,if use spi1,must disable
+
use c to test spi,compile spi.c.
  
   root@localhost:~# cat spi.c
+
   root@rockpie:~# cat spi.c
 
   #include <signal.h>
 
   #include <signal.h>
 
   #include <stdlib.h>
 
   #include <stdlib.h>
Line 240: Line 248:
 
       return EXIT_FAILURE;
 
       return EXIT_FAILURE;
 
   }
 
   }
   root@localhost:~# gcc spi.c -lmraa
+
   root@rockpie:~# gcc spi.c -lmraa
  
  
 
then short pin15 and pin27 and run a.out
 
then short pin15 and pin27 and run a.out
  
   root@localhost:~# ./a.out  
+
   root@rockpie:~# ./a.out  
 
   0xaa
 
   0xaa
 
   0xaa
 
   0xaa
 
   ......
 
   ......
  
=== test Uart ===
+
===== test Uart =====
 
Enable Uart1 for uart test, The changes are as follows :
 
Enable Uart1 for uart test, The changes are as follows :
 
   
 
   
Line 265: Line 273:
 
  rock@rockpie:~$  
 
  rock@rockpie:~$  
  
then reboot and short pin7 and pin32. use ssh connect to rockpi4,we must have 2 windows,one is for send data,anothor is for receive.
+
then reboot and short pin7 and pin32. use ssh connect to rockpie,we must have 2 windows,one is for send data,anothor is for receive.
  
 
send command follow:
 
send command follow:
Line 275: Line 283:
 
the receive window will show the data
 
the receive window will show the data
  
=== test adc ===
+
===== test adc =====
 
Firstly, short pin23 and pin35, Compile mraa example file to test, as follow:
 
Firstly, short pin23 and pin35, Compile mraa example file to test, as follow:
  
Line 304: Line 312:
  
  
== More examples ==
+
==== Compilation example ====
More examples (including examples written in python and java) can be found at:
+
===== Install compiler and project builder =====
 +
Install '''g++''' compiler and '''cmake''' project builder
 +
 
 +
rock@rockpie:~$ sudo apt-get install cmake g++
 +
 
 +
Configure Java environment variables. Because the libmraa-rockpie package has been installed openjdk-11, there is no need to install JDK, but openjdk-11 does not contain JRE, so you need to generate JRE manually and configure the Java environment variables.
 +
 
 +
rock@rockpie:~$ sudo su    #password: rock
 +
root@rockpie:/home/rock# cd /usr/lib/jvm/java-1.11.0-openjdk-arm64
 +
root@rockpie:/usr/lib/jvm/java-1.11.0-openjdk-arm64# jlink --module-path jmods --add-modules java.desktop --output jre
 +
root@rockpie:/usr/lib/jvm/java-1.11.0-openjdk-arm64# cd
 +
root@rockpie:~# vim ./.bashrc
 +
  ...
 +
  export JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-arm64
 +
  export JRE_HOME=${JAVA_HOME}/jre
 +
  export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
 +
  export PATH=${JAVA_HOME}/bin:$PATH
 +
 
 +
  export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
 +
 +
root@rockpie:~# source ./.bashrc
 +
root@rockpie:~# cp /usr/local/share/mraa . -r
 +
root@rockpie:~# cd mraa/examples/
 +
root@rockpie:~/mraa/examples# mkdir build
 +
root@rockpie:~/mraa/examples# cd build
 +
root@rockpie:~/mraa/examples/build# cmake ..; make
 +
...
 +
[ 97%] Building CXX object c++/CMakeFiles/i2c_cpp.dir/i2c.o
 +
[100%] Linking CXX executable i2c_cpp
 +
[100%] Built target i2c_cpp
 +
root@rockpie:~/mraa/examples/build# ls
 +
CMakeCache.txt  CMakeFiles  Makefile  '''c'''  '''c++'''  cmake_install.cmake  '''java'''
 +
 
 +
After compiling, you can see that C, C + + and Java are generated. Let's take a look at the example of using Java.
 +
 
 +
===== Example of running Java =====
 +
Go to the Java example directory and use the Java command to run the '''.jar''' package.<br/>
 +
Let's short '''35pin''' and '''23pin''', and then run the '''.jar''' package, and watch the output.
 +
 
 +
root@rockpie:~/mraa/examples/build# cd java/
 +
root@rockpie:~/mraa/examples/build/java# ls
 +
AioA0        CMakeFiles  GpioMmapped  Isr        UartExample
 +
BlinkIO      CyclePwm3  GpioRead6    Makefile    cmake_install.cmake
 +
BlinkOnboard  Example    HelloEdison  SpiMAX7219
 +
Bmp85        FTDITest    I2cCompass  SpiMCP4261
 +
root@rockpie:~/mraa/examples/build/java# java -jar GpioMmapped/GpioMmapped.jar &
 +
root@rockpie:~/mraa/examples/build/java# hello mraa
 +
Version: v2.1.0-6-gb915502
 +
Platform: ROCK Pi E                  #Enter the Enter key on the keyboard
 +
 +
root@rockpie:~/mraa/examples/build/java# java -jar AioA0/AioA0.jar
 +
ADC A0 read 0 - 0
 +
ADC A0 read 0.00000
 +
ADC A0 read 0 - 0
 +
ADC A0 read 0.00000
 +
...
 +
ADC A0 read 3FF - 1023
 +
ADC A0 read 1.00000
 +
ADC A0 read 3FF - 1023
 +
ADC A0 read 1.00000
 +
 
 +
Look, you have successfully run it. Next, you can try to write a Java demo yourself. Viewing these '''.hpp''' files can help you write '''your own demo'''
 +
 
 +
root@rockpie:/usr/local/include/mraa# ls
 +
aio.h      gpio.h    iio.hpp              led.hpp  types.h    uart_ow.hpp
 +
aio.hpp    gpio.hpp  iio_kernel_headers.h  pwm.h    types.hpp
 +
common.h    i2c.h    initio.h              pwm.hpp  uart.h
 +
common.hpp  i2c.hpp  initio.hpp            spi.h    uart.hpp
 +
firmata.h  iio.h    led.h                spi.hpp  uart_ow.h
 +
root@rockpie:/usr/local/include/mraa#
 +
 
 +
===== More examples =====
 +
More examples (including examples written in python and c++) can be found at:
  
 
  /usr/local/share/mraa/examples/
 
  /usr/local/share/mraa/examples/
 +
 +
==== Development ====
 +
 +
More introduction of libmraa can look at [http://iotdk.intel.com/docs/master/mraa/index.html libmraa official website].
 +
 +
==== Troubleshooting ====
 +
 +
* Refer [[RockpiE/getting_started/troubleshooting | Troubleshooting page]]
 +
* Post your issue on the forum: https://forum.radxa.com/c/rockpie

Latest revision as of 03:09, 9 January 2021

    ROCK Pi E >  Development >  libmraa

Libmraa on ROCK Pi E

This guide describes how to use libmraa on ROCK Pi E.

Install essential packages

Package libmraa is in the Radxa APT bionic-testing, bionic-stable, buster-testing and buster-stable repositories.

Execute the following commands to add Radxa APT

rock@rockpie:~$ export DISTRO=bionic-testing      # for Bionic

or

rock@rockpie:~$ export DISTRO=buster-testing      # for Buster
rock@rockpie:~$ echo "deb http://apt.radxa.com/$DISTRO/ ${DISTRO%-*} main" | sudo tee -a /etc/apt/sources.list.d/apt-radxa-com.list

Get the pub key

rock@rockpie:~$  wget -O -  apt.radxa.com/buster-testing/public.key | sudo apt-key add -

Install essential packages:

rock@rockpie:~$ sudo apt-get update
rock@rockpie:~$ sudo apt-get install -y rockchip-overlay libmraa # libmraa version: >=1.0
rock@rockpie:~$ sudo apt-get install -y linux-4.4-rock-pi-e-latest # ROCK Pi E kernel version: >= 4.4.194-17

Install compiler:

rock@rockpie:~$ sudo apt install -y build-essential

Enable interface

See ROCK Pi E GPIO pintout. ROCK Pi E has one 40-pin expansion header. Each pin is distinguished by color.

Hardware V1.0/V1.1

25 GPIO:

PIN3   GPIO2_A4
PIN5   GPIO2_A5
PIN7   GPIO3_A4
PIN8   GPIO2_A0
PIN10 GPIO2_A1
PIN11 GPIO3_A0
PIN12 GPIO2_D2
PIN13 GPIO3_B0
PIN15 GPIO3_A2
PIN19 GPIO0_D3
PIN21 GPIO2_C3
PIN22 GPIO2_B4
PIN23 GPIO1_D4
PIN24 GPIO2_A3
PIN26 GPIO2_C7
PIN27 GPIO3_A1
PIN28 GPIO2_C1
PIN29 GPIO2_C0
PIN31 GPIO2_B7
PIN32 GPIO3_A6
PIN33 GPIO2_C2
PIN36 GPIO2_C5
PIN37 GPIO2_A2
PIN38 GPIO2_C4
PIN40 GPIO2_C6

I2C: x1, I2C1

PIN3 I2C1_SDA
PIN5 I2C1_SCL

SPI: x1, SPI0(Pin#11/13/15/27)

PIN11 SPI_CLK_M2
PIN13 SPI_CSN0_M2
PIN15 SPI_RXD_M2
PIN27 SPI_TXD_M2

UART: x1, UART1 and UART2

PIN7    UART1_TX
PIN32  UART1_RX
PIN8    UART2_TX_M1
PIN10  UART2_RX_M1

ADC_IN1: x1, ADC_IN1

PIN35  ADC_IN1

Modify /boot/uEnv.txt to enable uart1 and spi0 for test,as follow :

verbosity=7
fdtfile=rockchip/rk3328-rock-pi-e.dtb
console=ttyS2,1500000n8
overlays=rk3328-uart2 rk3328-spi-spidev rk3328-uart1
param_spidev_spi_bus=0
param_spidev_spi_cs=0
param_spidev_max_freq=10000000
initrdsize=0x655f2d
kernelversion=4.4.194-12-rockchip-g615ae7431150
initrdimg=initrd.img-4.4.194-12-rockchip-g615ae7431150
kernelimg=vmlinuz-4.4.194-12-rockchip-g615ae7431150
rootuuid=6bdd02ee-ae60-404d-99c9-913f3f1bffb1

then reboot

Test

test gpio

Use mraa-gpio to test

rock@rockpie:~$ mraa-gpio list
01         3V3: 
02          5V: 
03        SDA1: GPIO I2C  
04          5V: 
05        SCL1: GPIO I2C  
06         GND: 
07        TXD1: GPIO UART 
08        TXD2: GPIO UART 
09         GND: 
10        RXD2: GPIO UART 
11  SPI_CLK_M2: GPIO SPI  
12    GPIO2_D2: GPIO 
13 SPI_CSN0_M2: GPIO SPI  
14         GND: 
15  SPI_RXD_M2: GPIO SPI  
16     USB20DM: 
17         3V3: 
18     USB20DP: 
19    GPIO0_D3: GPIO 
20         GND: 
21    GPIO2_C3: GPIO 
22    GPIO2_B4: GPIO 
23    GPIO1_D4: GPIO 
24    GPIO2_A3: GPIO 
25         GND: 
26    GPIO2_C7: 
27  SPI_TXD_M2: GPIO SPI  
28    GPIO2_C1: GPIO 
29    GPIO2_C0: GPIO 
30         GND: 
31    GPIO2_B7: GPIO 
32    UART1_RX: GPIO UART 
33    GPIO2_C2: GPIO 
34         GND: 
35     ADC_IN1: AIO  
36    GPIO2_C5: GPIO 
37    GPIO2_A2: GPIO 
38    GPIO2_C4: GPIO 
39         GND: 
40    GPIO2_C6: GPIO 
rock@rockpie:~$ 
rock@rockpie:~$ sudo mraa-gpio set 40 1   //pin40 pull high  
rock@rockpie:~$ sudo mraa-gpio set 40 0   //pin40 pull low
test i2c

Use mraa-i2c to test, we must have a i2c slave device , for example, we use I2C EEPROM:

rock@rockpie:~$ mraa-i2c list
Bus   0: id=01 type=linux  default
rock@rockpie:~$ sudo mraa-i2c detect 0                                                                        
00: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- 18 -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: 50 51 52 53 54 55 56 57 -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
rock@rockpie:~$ sudo mraa-i2c set 0 0x50 0x10 0x55
Device 50, Register = 10, Value = 55
rock@rockpie:~$ sudo mraa-i2c get 0 0x50 0x10
Register 0X10 = 0X55
rock@rockpie:~$ 
test spi

fristly, modify /boot/uEnv.txt to enable the spi0, The changes are as follows :

rock@rockpie:~$ cat /boot/uEnv.txt 
verbosity=7
fdtfile=rockchip/rk3328-rock-pi-e.dtb
console=ttyS2,1500000n8
overlays=rk3328-uart2 rk3328-spi-spidev
param_spidev_spi_bus=0
param_spidev_spi_cs=0
param_spidev_max_freq=10000000
initrdsize=0x655f2d
kernelversion=4.4.194-12-rockchip-g615ae7431150
initrdimg=initrd.img-4.4.194-12-rockchip-g615ae7431150
kernelimg=vmlinuz-4.4.194-12-rockchip-g615ae7431150
rootuuid=6bdd02ee-ae60-404d-99c9-913f3f1bffb1
rock@rockpie:~$ 

After modification, you need to reboot

use c to test spi,compile spi.c.

  root@rockpie:~# cat spi.c
  #include <signal.h>
  #include <stdlib.h>
  #include <unistd.h>
  
  /* mraa header */
  #include "mraa/spi.h"
  
  /* SPI declaration */
  #define SPI_BUS 0
  
  /* SPI frequency in Hz */
  #define SPI_FREQ 400000
  int
  main(int argc, char** argv)
  {
      mraa_result_t status = MRAA_SUCCESS;
      mraa_spi_context spi;
      int i, j;
  
      /* initialize mraa for the platform (not needed most of the times) */
      mraa_init();
  
      //! [Interesting]
      /* initialize SPI bus */
      spi = mraa_spi_init(SPI_BUS);
      if (spi == NULL) {
          fprintf(stderr, "Failed to initialize SPI\n");
          mraa_deinit();
          return EXIT_FAILURE;
      }
  
      /* set SPI frequency */
      status = mraa_spi_frequency(spi, SPI_FREQ);
      if (status != MRAA_SUCCESS)
          goto err_exit;
  
      /* set big endian mode */
      status = mraa_spi_lsbmode(spi, 0);
      if (status != MRAA_SUCCESS) {
          goto err_exit;
      }
      while(1) {
          printf("0x%x\n",mraa_spi_write(spi, 0xaa));
      }
  err_exit:
      mraa_result_print(status);
  
      /* stop spi */
      mraa_spi_stop(spi);
  
      /* deinitialize mraa for the platform (not needed most of the times) */
      mraa_deinit();
  
      return EXIT_FAILURE;
  }
  root@rockpie:~# gcc spi.c -lmraa


then short pin15 and pin27 and run a.out

  root@rockpie:~# ./a.out 
  0xaa
  0xaa
  ......
test Uart

Enable Uart1 for uart test, The changes are as follows :

rock@rockpie:~$ cat /boot/uEnv.txt 
verbosity=7
fdtfile=rockchip/rk3328-rock-pi-e.dtb
console=ttyS2,1500000n8
overlays=rk3328-uart2 rk3328-uart1
initrdsize=0x655f2d
kernelversion=4.4.194-12-rockchip-g615ae7431150
initrdimg=initrd.img-4.4.194-12-rockchip-g615ae7431150
kernelimg=vmlinuz-4.4.194-12-rockchip-g615ae7431150
rootuuid=6bdd02ee-ae60-404d-99c9-913f3f1bffb1
rock@rockpie:~$ 

then reboot and short pin7 and pin32. use ssh connect to rockpie,we must have 2 windows,one is for send data,anothor is for receive.

send command follow:

sudo mraa-uart dev 0 baud 1500000 send  data

receive command follow:

 sudo mraa-uart dev 0 baud 1500000 recv  1000

the receive window will show the data

test adc

Firstly, short pin23 and pin35, Compile mraa example file to test, as follow:

rock@rockpie:~$ cp /usr/local/share/mraa . -r
rock@rockpie:~$ cd mraa/examples/
rock@rockpie:~/mraa/examples$ ls 
CMakeLists.txt  c  c++  python
rock@rockpie:~/mraa/examples$ mkdir build
rock@rockpie:~/mraa/examples$ cd build
rock@rockpie:~/mraa/examples/build$ sudo apt-get install cmake
rock@rockpie:~/mraa/examples/build$ sudo apt-get install g++
rock@rockpie:~/mraa/examples/build$ cmake ..
rock@rockpie:~/mraa/examples/build$ cd c; make
rock@rockpie:~/mraa/examples/build/c$ sudo su
[sudo] password for rock:							#password:rock
root@rockpie:/home/rock/mraa/examples/build/c# ./gpio &
[1] 1250
root@rockpie:/home/rock/mraa/examples/build/c# ./aio
ADC A0 read 3FF - 1023
ADC A0 read float - 1.00000
ADC A0 read 3FF - 1023
ADC A0 read float - 1.00000
...
ADC A0 read 0 - 0
ADC A0 read float - 0.00000
ADC A0 read 0 - 0
ADC A0 read float - 0.00000


Compilation example

Install compiler and project builder

Install g++ compiler and cmake project builder

rock@rockpie:~$ sudo apt-get install cmake g++

Configure Java environment variables. Because the libmraa-rockpie package has been installed openjdk-11, there is no need to install JDK, but openjdk-11 does not contain JRE, so you need to generate JRE manually and configure the Java environment variables.

rock@rockpie:~$ sudo su     #password: rock
root@rockpie:/home/rock# cd /usr/lib/jvm/java-1.11.0-openjdk-arm64
root@rockpie:/usr/lib/jvm/java-1.11.0-openjdk-arm64# jlink --module-path jmods --add-modules java.desktop --output jre
root@rockpie:/usr/lib/jvm/java-1.11.0-openjdk-arm64# cd 
root@rockpie:~# vim ./.bashrc
  ...
  export JAVA_HOME=/usr/lib/jvm/java-1.11.0-openjdk-arm64
  export JRE_HOME=${JAVA_HOME}/jre
  export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
  export PATH=${JAVA_HOME}/bin:$PATH
  
  export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

root@rockpie:~# source ./.bashrc
root@rockpie:~# cp /usr/local/share/mraa . -r
root@rockpie:~# cd mraa/examples/
root@rockpie:~/mraa/examples# mkdir build 
root@rockpie:~/mraa/examples# cd build
root@rockpie:~/mraa/examples/build# cmake ..; make
...
[ 97%] Building CXX object c++/CMakeFiles/i2c_cpp.dir/i2c.o
[100%] Linking CXX executable i2c_cpp
[100%] Built target i2c_cpp
root@rockpie:~/mraa/examples/build# ls 
CMakeCache.txt  CMakeFiles  Makefile  c  c++  cmake_install.cmake  java

After compiling, you can see that C, C + + and Java are generated. Let's take a look at the example of using Java.

Example of running Java

Go to the Java example directory and use the Java command to run the .jar package.
Let's short 35pin and 23pin, and then run the .jar package, and watch the output.

root@rockpie:~/mraa/examples/build# cd java/
root@rockpie:~/mraa/examples/build/java# ls 
AioA0         CMakeFiles  GpioMmapped  Isr         UartExample
BlinkIO       CyclePwm3   GpioRead6    Makefile    cmake_install.cmake
BlinkOnboard  Example     HelloEdison  SpiMAX7219
Bmp85         FTDITest    I2cCompass   SpiMCP4261
root@rockpie:~/mraa/examples/build/java# java -jar GpioMmapped/GpioMmapped.jar &
root@rockpie:~/mraa/examples/build/java# hello mraa
Version: v2.1.0-6-gb915502
Platform: ROCK Pi E                  #Enter the Enter key on the keyboard

root@rockpie:~/mraa/examples/build/java# java -jar AioA0/AioA0.jar 
ADC A0 read 0 - 0
ADC A0 read 0.00000
ADC A0 read 0 - 0
ADC A0 read 0.00000
...
ADC A0 read 3FF - 1023
ADC A0 read 1.00000
ADC A0 read 3FF - 1023
ADC A0 read 1.00000

Look, you have successfully run it. Next, you can try to write a Java demo yourself. Viewing these .hpp files can help you write your own demo

root@rockpie:/usr/local/include/mraa# ls 
aio.h       gpio.h    iio.hpp               led.hpp  types.h    uart_ow.hpp
aio.hpp     gpio.hpp  iio_kernel_headers.h  pwm.h    types.hpp
common.h    i2c.h     initio.h              pwm.hpp  uart.h
common.hpp  i2c.hpp   initio.hpp            spi.h    uart.hpp
firmata.h   iio.h     led.h                 spi.hpp  uart_ow.h
root@rockpie:/usr/local/include/mraa#
More examples

More examples (including examples written in python and c++) can be found at:

/usr/local/share/mraa/examples/

Development

More introduction of libmraa can look at libmraa official website.

Troubleshooting