Difference between revisions of "Rockpi4/dev/libmraa"
(Created page with "{{rockpi4_header}} {{Languages|rockpi4/dev/libmraa}} ROCK Pi 4 > Development > Install Libmraa = Libmraa...") |
|||
Line 42: | Line 42: | ||
== Enable interface == | == Enable interface == | ||
− | See rockpi4 [[Rockpi4/hardware/rockpi4#gpio | GPIO pinout]],ROCK Pi 4 has a 40-pin expansion header. Each pin is distinguished by color. mraa define follow: | + | See rockpi4 [[Rockpi4/hardware/rockpi4#gpio | GPIO pinout]],ROCK Pi 4 has a 40-pin expansion header. Each pin is distinguished by color. mraa define follow: |
+ | |||
15 GPIO: | 15 GPIO: | ||
PIN07 GPIO2_B3 | PIN07 GPIO2_B3 | ||
Line 226: | Line 227: | ||
0xaa | 0xaa | ||
0xaa | 0xaa | ||
+ | ...... | ||
===test pwm=== | ===test pwm=== | ||
Line 264: | Line 266: | ||
root@localhost:~# chmod +x pwm.py | root@localhost:~# chmod +x pwm.py | ||
root@localhost:~# ./pwm.py | root@localhost:~# ./pwm.py | ||
− | |||
− | |||
− | |||
===test uart=== | ===test uart=== | ||
+ | Disable console and enable uart2 for uart test | ||
+ | root@localhost:/# cat boot/hw_intfc.conf | ||
+ | |||
+ | # Hardware Interface Config | ||
+ | |||
+ | # For more details, check file /usr/local/share/doc/rockpi4-dtbo/README | ||
+ | |||
+ | # Uncomment configuration line if you use it. Take i2c6 as an example, | ||
+ | # setting off disables i2c6 bus and setting on enables i2c6 bus. | ||
+ | |||
+ | intfc:pwm0=on | ||
+ | intfc:pwm1=on | ||
+ | '''intfc:uart2=on''' | ||
+ | intfc:uart4=off | ||
+ | intfc:spi1=on | ||
+ | intfc:spi2=off | ||
+ | intfc:i2c2=on | ||
+ | intfc:i2c6=off | ||
+ | intfc:i2c7=off | ||
+ | |||
+ | # DTS Overlay Config | ||
+ | # 1. check the name.dtbo in /boot/overlays | ||
+ | # 2. add intfc:dtoverlay=name as below | ||
+ | |||
+ | #intfc:dtoverlay=at24c02 | ||
+ | #intfc:dtoverlay=two-color-led | ||
+ | '''intfc:dtoverlay=console-disabled''' | ||
+ | #intfc:dtoverlay=console-on-uart4 | ||
+ | root@localhost:/# | ||
+ | then reboot. | ||
+ | use ssh connect to rockpi4,we must have 2 window,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 |
Revision as of 08:57, 15 March 2019
ROCK Pi 4 > Development > Install Libmraa
Contents
Libmraa-rockpi4
Below is the instructions of how to install libmraa.
Install essential packages
Edit your /etc/apt/sources.list and add the following:
deb http://apt.radxa.com/stretch/ stretch main
Get the pub key
wget -O - apt.radxa.com/stretch/public.key | sudo apt-key add -
Update
sudo apt-get update && sudo apt-get upgrade
Install essential packages:
apt-get install rockchip-overlay rockchip-fstab rockpi4-dtbo
Install the latest u-boot and kernel
apt-get install rockpi4b-rk-u-boot-lastest
Manually run the u-boot flash script
/usr/local/sbin/rockpi4b_upgrade_bootloader.sh
Type YES to perform the uboot.img flashing.
then install kernel
apt-get install linux-base apt-get install linux-4.4-lastest
After installation, check file /boot/extlinux/extlinux.conf. It lists all kernel version installed in ROCK Pi. The kernel corresponding to the first label is the newest version and the first boot option.
Enable interface
See rockpi4 GPIO pinout,ROCK Pi 4 has a 40-pin expansion header. Each pin is distinguished by color. mraa define follow:
15 GPIO:
PIN07 GPIO2_B3 PIN12 GPIO4_A3 PIN15 GPIO4_C5 PIN16 GPIO4_D2 PIN18 GPIO4_D4 PIN22 GPIO4_D5 PIN29 GPIO2_B2 PIN31 GPIO2_B1 PIN32 GPIO3_C0 PIN33 GPIO2_B4 PIN35 GPIO4_A5 PIN36 GPIO4_A4 PIN37 GPIO4_D6 PIN38 GPIO4_A6 PIN40 GPIO4_A7
2 I2C:
PIN3 I2C7_SDA PIN5 I2C7_SCL PIN27 I2C2_SCL PIN28 I2C2_SCL
1 SPI:
PIN19 SPI1_MOSI PIN21 SPI1_MISO PIN23 SPI1_CLK PIN24 SPI1_CS0
1 UART:
PIN8 UART2_TX PIN10 UART2_RX
2 PWM:
PIN11 PWM0 PIN13 PWM1
modify boot/hw_intfc.conf to enable pwm0,pwm1,spi1,i2c2,i2c7 for test
root@localhost:/# cat boot/hw_intfc.conf # Hardware Interface Config # For more details, check file /usr/local/share/doc/rockpi4-dtbo/README # Uncomment configuration line if you use it. Take i2c6 as an example, # setting off disables i2c6 bus and setting on enables i2c6 bus. intfc:pwm0=on intfc:pwm1=on intfc:uart2=on intfc:uart4=off intfc:spi1=on intfc:spi2=off intfc:i2c2=on intfc:i2c6=off intfc:i2c7=off # DTS Overlay Config # 1. check the name.dtbo in /boot/overlays # 2. add intfc:dtoverlay=name as below #intfc:dtoverlay=at24c02 #intfc:dtoverlay=two-color-led #intfc:dtoverlay=console-disabled #intfc:dtoverlay=console-on-uart4 root@localhost:/#
then reboot
Install libmraa-rockpi4
apt-get install libmraa-rockpi4
Test
test gpio
Use mraa-gpio tool to test
root@localhost:~# mraa-gpio list 07 GPIO2_B3: GPIO 12 GPIO4_A3: GPIO 15 GPIO4_C5: GPIO 16 GPIO4_D2: GPIO 18 GPIO4_D4: GPIO 22 GPIO4_D5: GPIO 29 GPIO2_B2: GPIO 31 GPIO2_B1: GPIO 32 GPIO3_C0: GPIO 33 GPIO2_B4: GPIO 35 GPIO4_A5: GPIO 36 GPIO4_A4: GPIO 37 GPIO4_D6: GPIO 38 GPIO4_A6: GPIO 40 GPIO4_A7: GPIO root@localhost:~# mraa-gpio set 40 1 //pin40 pull high root@localhost:~# mraa-gpio set 40 0 //pin40 pull low root@localhost:~#
test i2c
Use mraa-i2c tool to test,we must have a i2c slave device,for example,we use I2C EEPROM:
root@localhost:~# mraa-i2c list Bus 0: id=07 type=linux default Bus 1: id=02 type=linux root@localhost:~# mraa-i2c detect 0 //device on bus 0 00: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: 50 51 52 53 54 55 56 57 -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- root@localhost:~# mraa-i2c detect 1 //no device on bus 1 00: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- root@localhost:~# mraa-i2c set 0 0x50 0x10 0x55 //write Device 50, Register = 10, Value = 55 root@localhost:~# mraa-i2c get 0 0x50 0x10 //read Register 0X10 = 0X55 root@localhost:~#
test spi
use c to test spi,compile spi.c
root@localhost:~# 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_word(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@localhost:~# gcc spi.c -lmraa
then short pin19 and pin21 and run a.out
root@localhost:~# ./a.out 0xaa 0xaa ......
test pwm
for pwm python test,should install python and libpython2.7
apt-get install libpython2.7 python
use python script follow:
root@localhost:~# cat pwm.py #!/usr/bin/env python # Example Usage: Generates PWM at a step rate of 0.01 continuously. import mraa import time x = mraa.Pwm(11) # pin11 pwm0 # x = mraa.Pwm(13) # pin13 pwm1 x.period_us(700) x.enable(True) value= 0.0 while True: x.write(value) time.sleep(0.05) value = value + 0.01 if value >= 1: value = 0.0 root@localhost:~#
then run pwm.py
root@localhost:~# ls pwm.py root@localhost:~# chmod +x pwm.py root@localhost:~# ./pwm.py
test uart
Disable console and enable uart2 for uart test
root@localhost:/# cat boot/hw_intfc.conf # Hardware Interface Config # For more details, check file /usr/local/share/doc/rockpi4-dtbo/README # Uncomment configuration line if you use it. Take i2c6 as an example, # setting off disables i2c6 bus and setting on enables i2c6 bus. intfc:pwm0=on intfc:pwm1=on intfc:uart2=on intfc:uart4=off intfc:spi1=on intfc:spi2=off intfc:i2c2=on intfc:i2c6=off intfc:i2c7=off # DTS Overlay Config # 1. check the name.dtbo in /boot/overlays # 2. add intfc:dtoverlay=name as below #intfc:dtoverlay=at24c02 #intfc:dtoverlay=two-color-led intfc:dtoverlay=console-disabled #intfc:dtoverlay=console-on-uart4 root@localhost:/#
then reboot. use ssh connect to rockpi4,we must have 2 window,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