From 059fec51aa29b32f5f69c9d243c684dbde35facc Mon Sep 17 00:00:00 2001 From: guowenxue <guowenxue@gmail.com> Date: Mon, 11 Apr 2022 21:14:24 +0800 Subject: [PATCH] Add pinctrl shell script --- bsp/rootfs/files/pinctrl | 144 ++++++++++++++++++++++++++++++++++++++++++++++++ bsp/rootfs/rootfs.json | 3 2 files changed, 146 insertions(+), 1 deletions(-) diff --git a/bsp/rootfs/files/pinctrl b/bsp/rootfs/files/pinctrl new file mode 100755 index 0000000..7d56efd --- /dev/null +++ b/bsp/rootfs/files/pinctrl @@ -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 " ++-------------+-------------+-------------+-------------+-------------+ +| 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 | ++-------------+-------------+-------------+-------------+-------------+ +| 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/bsp/rootfs/rootfs.json b/bsp/rootfs/rootfs.json index cbd4d84..89cad33 100644 --- a/bsp/rootfs/rootfs.json +++ b/bsp/rootfs/rootfs.json @@ -15,7 +15,8 @@ }, "INSTALL_FILES": { "${PRJ_PATH}/../images/drivers/lib/modules/": "$ROOTFS_DIR/lib/", - "files/expand_rootfs": "$ROOTFS_DIR/usr/sbin" + "files/expand_rootfs": "$ROOTFS_DIR/usr/sbin", + "files/pinctrl": "$ROOTFS_DIR/usr/sbin" } }, "SYS_YOCTO": { -- Gitblit v1.9.1