]> Git Repo - esp-hosted.git/blob - host/linux/host_control/rpi_init.sh
Merge branch 'pr129_vuhailongkl97' into 'master'
[esp-hosted.git] / host / linux / host_control / rpi_init.sh
1 #!/bin/sh
2
3 # Copyright 2015-2021 Espressif Systems (Shanghai) PTE LTD
4 #
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
8 #
9 #     http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16
17 RESETPIN=""
18 BT_INIT_SET="0"
19 IF_TYPE="sdio"
20 MODULE_NAME="esp32_${IF_TYPE}.ko"
21
22 build_c_demo_app()
23 {
24     cd c_support/
25     make clean
26     make -j8
27     make -j8 stress
28     cd ..
29 }
30
31 build_python_demo_app()
32 {
33     cd python_support/
34     make clean
35     make -j8
36     cd ..
37 }
38
39 wlan_init()
40 {
41     build_c_demo_app
42     build_python_demo_app
43
44     cd ../host_driver/esp32/
45     if [ `lsmod | grep esp32 | wc -l` != "0" ]; then
46         sudo rm /dev/esps0
47         if [ `lsmod | grep esp32_sdio | wc -l` != "0" ]; then
48             sudo rmmod esp32_sdio &> /dev/null
49             else
50             sudo rmmod esp32_spi &> /dev/null
51         fi
52     fi
53
54     # For Linux other than Raspberry Pi, Please point
55     # CROSS_COMPILE -> <Toolchain-Path>/bin/arm-linux-gnueabihf-
56     # KERNEL        -> Place where kernel is checked out and built
57     # ARCH          -> Architecture
58     make -j8 target=$IF_TYPE CROSS_COMPILE=/usr/bin/arm-linux-gnueabihf- KERNEL="/lib/modules/$(uname -r)/build" ARCH=arm
59
60     if [ "$RESETPIN" = "" ] ; then
61         #By Default, BCM6 is GPIO on host. use resetpin=6
62         sudo insmod $MODULE_NAME resetpin=6
63     else
64         #Use resetpin value from argument
65         sudo insmod $MODULE_NAME $RESETPIN
66     fi
67     if [ `lsmod | grep esp32 | wc -l` != "0" ]; then
68         echo "esp32 module inserted "
69         sudo mknod /dev/esps0 c 221 0
70         sudo chmod 666 /dev/esps0
71         echo "/dev/esps0 device created"
72         echo "RPi init successfully completed"
73     fi
74 }
75
76 bt_init()
77 {
78     sudo raspi-gpio set 15 a0 pu
79     sudo raspi-gpio set 14 a0 pu
80     sudo raspi-gpio set 16 a3 pu
81     sudo raspi-gpio set 17 a3 pu
82 }
83
84 usage()
85 {
86     echo "This script prepares RPI for wlan and bt/ble operation over esp32 device"
87     echo "\nUsage: ./rpi_init.sh [arguments]"
88     echo "\nArguments are optional and are as below"
89     echo "  spi:    sets ESP32<->RPi communication over SPI"
90     echo "  sdio:   sets ESP32<->RPi communication over SDIO"
91     echo "  btuart: Set GPIO pins on RPi for HCI UART operations"
92     echo "  resetpin=6:     Set GPIO pins on RPi connected to EN pin of ESP32, used to reset ESP32 (default:6 for BCM6)"
93     echo "\nExample:"
94     echo "  - Prepare RPi for WLAN operation on SDIO. sdio is default if no interface mentioned"
95     echo "   # ./rpi_init.sh or ./rpi_init.sh sdio"
96     echo "\n  - Use spi for host<->ESP32 communication. sdio is default if no interface mentioned"
97     echo "   # ./rpi_init.sh spi"
98     echo "\n  - Prepare RPi for bt/ble operation over UART and WLAN over SDIO/SPI"
99     echo "   # ./rpi_init.sh sdio btuart or ./rpi_init.sh spi btuart"
100     echo "\n  - use GPIO pin BCM5 (GPIO29) for reset"
101     echo "   # ./rpi_init.sh resetpin=5"
102     echo "\n  - do btuart, use GPIO pin BCM5 (GPIO29) for reset over SDIO/SPI"
103     echo "   # ./rpi_init.sh sdio btuart resetpin=5 or ./rpi_init.sh spi btuart resetpin=5"
104 }
105
106 parse_arguments()
107 {
108     while [ "$1" != "" ] ; do
109         case $1 in
110             --help | -h )
111                 usage
112                 exit 0
113                 ;;
114             sdio)
115                 IF_TYPE=$1
116                 ;;
117             spi)
118                 IF_TYPE=$1
119                 ;;
120             resetpin=*)
121                 echo "Recvd Option: $1"
122                 RESETPIN=$1
123                 ;;
124             btuart)
125                 echo "Recvd Option: $1"
126                 BT_INIT_SET="1"
127                 ;;
128             *)
129                 echo "$1 : unknown option"
130                 usage
131                 exit 1
132                 ;;
133                 esac
134         shift
135     done
136 }
137
138
139 parse_arguments $*
140 if [ "$IF_TYPE" = "" ] ; then
141     echo "Error: No protocol selected"
142     usage
143     exit 1
144 else
145     echo "Building for $IF_TYPE protocol"
146     MODULE_NAME=esp32_${IF_TYPE}.ko
147 fi
148
149 if [ "$IF_TYPE" = "spi" ] ; then
150     rm spidev_disabler.dtbo
151     # Disable default spidev driver
152     dtc spidev_disabler.dts -O dtb > spidev_disabler.dtbo
153     sudo dtoverlay -d . spidev_disabler
154 fi
155
156 if [ `lsmod | grep bluetooth | wc -l` = "0" ]; then
157     echo "bluetooth module inserted"
158     sudo modprobe bluetooth
159 fi
160
161 if [ `lsmod | grep bluetooth | wc -l` != "0" ]; then
162     wlan_init
163 fi
164
165 if [ "$BT_INIT_SET" = "1" ] ; then
166     bt_init
167 fi
This page took 0.034203 seconds and 4 git commands to generate.