From b97b50d6ec47b5c239c468f9b799aa26f0f5be4b Mon Sep 17 00:00:00 2001
From: guowenxue <guowenxue@gmail.com>
Date: Thu, 14 Apr 2022 11:11:26 +0800
Subject: [PATCH] add gpio control scripts
---
booster/test/gpio-scripts/pinloop.sh | 42 +++++++
booster/test/gpio-scripts/pinctrl-rzboard | 144 ++++++++++++++++++++++++
booster/test/gpio-scripts/pinctrl-igkboard | 144 ++++++++++++++++++++++++
3 files changed, 330 insertions(+), 0 deletions(-)
diff --git a/booster/test/gpio-scripts/pinctrl-igkboard b/booster/test/gpio-scripts/pinctrl-igkboard
new file mode 100755
index 0000000..8236472
--- /dev/null
+++ b/booster/test/gpio-scripts/pinctrl-igkboard
@@ -0,0 +1,144 @@
+#!/bin/bash
+# This shell script used to control GPIO port on IGKBoard
+
+direction=out
+sysdir=/sys/class/gpio/
+pinbase=0
+groupin=32
+
+pinnum=
+pindir=
+action=
+
+set -u
+
+# RedLed: GPIO01_IO11 GreenLed: GPIO01_IO10 BlueLed: GPIO05_IO09
+function usage()
+{
+ echo "Show pinmap Usage: $0 [-v]"
+ echo "Output set Usage: $0 GPIO01_IO11 [1/0]"
+ echo "Input read Usage: $0 [-i] GPIO01_IO11"
+ echo "Unexport Usage: $0 [-u] GPIO01_IO11"
+ exit;
+}
+
+function show_pinmap()
+{
+ echo "
++-------------+-------------+---IGKBoard---+-------------+-------------+
+| GPIO | Name | Physical | Name | GPIO |
++-------------+-------------+-----++------+-------------+-------------+
+| 3.3v | 3.3v | 1 || 2 | 5v | 5v |
+| GPIO01_IO03 | I2C1_SDA | 3 || 4 | 5v | 5v |
+| GPIO01_IO02 | I2C1_SCL | 5 || 6 | GND | GND |
+| GPIO01_IO18 | GPIO | 7 || 8 | UART2_TX | GPIO01_IO20 |
+| GND | GND | 9 || 10 | UART2_RX | GPIO01_IO21 |
+| GPIO01_IO24 | UART3_TX | 11 || 12 | UART3_RX | GPIO01_IO25 |
+| GPIO01_IO28 | UART4_TX | 13 || 14 | GND | GND |
+| GPIO01_IO29 | UART4_RX | 15 || 16 | UART7_TX | GPIO03_IO21 |
+| 3.3v | 3.3v | 17 || 18 | UART7_RX | GPIO03_IO22 |
+| GPIO03_IO27 | SPI1_MOSI | 19 || 20 | GND | GND |
+| GPIO03_IO28 | SPI1_MISO | 21 || 22 | GPIO | GPIO03_IO23 |
+| GPIO03_IO25 | SPI1_SCLK | 23 || 24 | SPI1_SS0 | GPIO03_IO26 |
+| GND | GND | 25 || 26 | GPIO | GPIO03_IO24 |
+| GPIO01_IO26 | CAN1_TX | 27 || 28 | PWM8 | GPIO01_IO15 |
+| GPIO01_IO27 | CAN1_RX | 29 || 30 | GND | GND |
+| GPIO01_IO22 | CAN2_TX | 31 || 32 | PWM7 | GPIO01_IO14 |
+| GPIO01_IO23 | CAN2_RX | 33 || 34 | GND | GND |
+| GPIO05_IO01 | GPIO | 35 || 36 | GPIO | GPIO01_IO11 |
+| GPIO05_IO08 | GPIO | 37 || 38 | GPIO | GPIO01_IO10 |
+| GND | GND | 39 || 40 | GPIO | GPIO05_IO09 |
++-------------+-------------+---IGKBoard--+-------------+-------------+
+| GPIO | Name | Physical | Name | GPIO |
++-------------+-------------+-----++------+-------------+-------------+
+"
+ exit 0;
+}
+
+function calc_pinum()
+{
+ pinstr=$1
+
+ group=`echo $pinstr | cut -d_ -f1 | tr -cd "[0-9]"`
+ pin=`echo $pinstr | cut -d_ -f2 | tr -cd "[0-9]"`
+
+
+ group=`expr $group \- 1`
+ pinum=`expr $group \* $groupin + $pin + $pinbase`
+ pindir=$sysdir/gpio$pinum
+
+ #echo "INFO: GPIO $pinstr map to pinum[$pinum]"
+}
+
+function export_gpio()
+{
+ if [ -e $pindir ] ; then
+ return ;
+ fi
+
+ echo $pinum > $sysdir/export
+}
+
+function unexport_gpio()
+{
+ if [ ! -e $pindir ] ; then
+ return ;
+ fi
+
+ echo $pinum > $sysdir/unexport
+}
+
+function set_gpio()
+{
+ echo out > $pindir/direction
+ echo $1 > $pindir/value
+}
+
+function read_gpio()
+{
+ echo in > $pindir/direction
+ cat $pindir/value
+}
+
+if [ $# -lt 1 ] ; then
+ usage;
+fi
+
+while getopts "iuvh" OPTNAME
+do
+ case "${OPTNAME}" in
+ "i")
+ direction=in
+ shift
+ ;;
+
+ "u")
+ action=unexport;
+ shift
+ ;;
+
+ "v")
+ show_pinmap;
+ shift
+ ;;
+
+ "h")
+ usage;
+ ;;
+ esac
+done
+
+calc_pinum $1
+
+if [[ $action == unexport ]] ; then
+ unexport_gpio
+ exit;
+fi
+
+export_gpio
+
+if [ $direction == in ] ; then
+ read_gpio
+else
+ set_gpio $2
+fi
diff --git a/booster/test/gpio-scripts/pinctrl-rzboard b/booster/test/gpio-scripts/pinctrl-rzboard
new file mode 100755
index 0000000..facd6cf
--- /dev/null
+++ b/booster/test/gpio-scripts/pinctrl-rzboard
@@ -0,0 +1,144 @@
+#!/bin/bash
+# This shell script used to control GPIO port on RzBoard
+
+direction=out
+sysdir=/sys/class/gpio/
+pinbase=120
+groupin=8
+
+pinnum=
+pindir=
+action=
+
+set -u
+set -e
+
+# RedLed: P8_1 GreenLed: P17_2 BlueLed: P19_1
+# UserKey: P39_0
+function usage()
+{
+ echo "Show pinmap Usage: $0 [-v]"
+ echo "Output set Usage: $0 P9_1 [1/0]"
+ echo "Input read Usage: $0 [-i] P9_1"
+ echo "Unexport Usage: $0 [-u] P9_1"
+ exit;
+}
+
+function show_pinmap()
+{
+ echo "
+ +--------------------+--RzBoard--+--------------------+
+ | Name/GPIO | Physical | Name/GPIO |
+ +--------------------+-----++----+--------------------+
+ | 3.3v | 1 || 2 | 5v |
+ | SDA2(P3_0) | 3 || 4 | 5v |
+ | SCL2(P3_1) | 5 || 6 | GND |
+ | GPIO(P12_0) | 7 || 8 | TXD2(P48_0) |
+ | GND | 9 || 10 | RXD2(P48_1) |
+ | SCL3(P48_3) | 11 || 12 | GPIO(P17_1) |
+ | SDA3(P48_2) | 13 || 14 | GND |
+ | GPIO(P17_0) | 15 || 16 | GPIO(P13_2) |
+ | 3.3v | 17 || 18 | GPIO(P14_0) |
+ | SPI1_MOSI(P44_1) | 19 || 20 | GND |
+ | SPI1_MISO(P44_2) | 21 || 22 | GPIO(P39_1) |
+ | SPI1_CLK(P44_0) | 23 || 24 | SPI1_SS(P44_3) |
+ | GND | 25 || 26 | GPIO(P0_1) |
+ | GPIO(P14_1) | 27 || 28 | GPIO(P46_3) |
+ | GPIO(P42_3) | 29 || 30 | GND |
+ | GPIO(P42_4) | 31 || 32 | GPIO(P15_1) |
+ | GPIO(P10_0) | 33 || 34 | GND |
+ | GPIO(P9_1) | 35 || 36 | RTS2(P48_4) |
+ | GPIO(P13_1) | 37 || 38 | CAN0_RX(P11_0) |
+ | GND | 39 || 40 | CAN0_TX(P10_1) |
+ +--------------------+-----++----+--------------------+
+ | Name/GPIO | Physical | Name/GPIO |
+ +--------------------+--RzBoard--+--------------------+
+ "
+ exit 0;
+}
+
+function calc_pinum()
+{
+ pinstr=$1
+
+ group=`echo $pinstr | cut -d_ -f1 | tr -cd "[0-9]"`
+ pin=`echo $pinstr | cut -d_ -f2 | tr -cd "[0-9]"`
+
+ pinum=`expr $group \* $groupin + $pin + $pinbase`
+ pindir=$sysdir/gpio$pinum
+
+ #echo "INFO: GPIO $pinstr map to pinum[$pinum]"
+}
+
+function export_gpio()
+{
+ if [ -e $pindir ] ; then
+ return ;
+ fi
+
+ echo $pinum > $sysdir/export
+}
+
+function unexport_gpio()
+{
+ if [ ! -e $pindir ] ; then
+ return ;
+ fi
+
+ echo $pinum > $sysdir/unexport
+}
+
+function set_gpio()
+{
+ echo out > $pindir/direction
+ echo $1 > $pindir/value
+}
+
+function read_gpio()
+{
+ echo in > $pindir/direction
+ cat $pindir/value
+}
+
+if [ $# -lt 1 ] ; then
+ usage;
+fi
+
+while getopts "iuvh" OPTNAME
+do
+ case "${OPTNAME}" in
+ "i")
+ direction=in
+ shift
+ ;;
+
+ "u")
+ action=unexport;
+ shift
+ ;;
+
+ "v")
+ show_pinmap;
+ shift
+ ;;
+
+ "h")
+ usage;
+ ;;
+ esac
+done
+
+calc_pinum $1
+
+if [[ $action == unexport ]] ; then
+ unexport_gpio
+ exit;
+fi
+
+export_gpio
+
+if [ $direction == in ] ; then
+ read_gpio
+else
+ set_gpio $2
+fi
diff --git a/booster/test/gpio-scripts/pinloop.sh b/booster/test/gpio-scripts/pinloop.sh
new file mode 100755
index 0000000..ab61087
--- /dev/null
+++ b/booster/test/gpio-scripts/pinloop.sh
@@ -0,0 +1,42 @@
+#!/bin/bash
+# 40 Pin Header GPIO loop test script, it based on pinctrl shell script
+
+function loop_test()
+{
+ if [ $# != 3 ] ; then
+ echo "ERROR: Invalid input arguments"
+ return 1;
+ fi
+
+ level=$3
+ pinctrl $1 $level
+ res=`pinctrl -i $2`
+
+ printf "$1 out [$level] --> $2 in [$res] : "
+ if [ $level == $res ] ; then
+ printf " [ OK ]\n"
+ else
+ printf " [ FAIL ]\n"
+ exit 1;
+ fi
+}
+
+
+if [ $# != 2 ] ; then
+ echo ""
+ echo "Usage : $0 Pin1 Pin2"
+ echo "Example: $0 GPIO01_IO10 GPIO01_IO11"
+ echo ""
+ echo "You can check pinmap by 'pinctrl -v' "
+ echo ""
+ exit;
+fi
+
+
+loop_test $1 $2 1
+loop_test $1 $2 0
+
+loop_test $2 $1 1
+loop_test $2 $1 0
+
+exit 0;
--
Gitblit v1.9.1