Add u-boot setup support for am335x-hs

Signed-off-by: Jacob Stiffler <[email protected]>

Signed-off-by: Aparna M <[email protected]>
---
 setup-uboot-env-am335x-hs.sh | 401 +++++++++++++++++++++++++++++++++++
 1 file changed, 401 insertions(+)
 create mode 100644 setup-uboot-env-am335x-hs.sh

diff --git a/setup-uboot-env-am335x-hs.sh b/setup-uboot-env-am335x-hs.sh
new file mode 100644
index 0000000..89e9284
--- /dev/null
+++ b/setup-uboot-env-am335x-hs.sh
@@ -0,0 +1,401 @@
+#!/bin/sh
+
+# This distribution contains contributions or derivatives under copyright
+# as follows:
+#
+# Copyright (c) 2010, Texas Instruments Incorporated
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# - Redistributions of source code must retain the above copyright notice,
+#   this list of conditions and the following disclaimer.
+# - Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+# - Neither the name of Texas Instruments nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
NEGLIGENCE
+# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cwd=`dirname $0`
+. $cwd/common.sh
+
+do_expect() {
+    echo "expect {" >> $3
+    check_status
+    echo "    $1" >> $3
+    check_status
+    echo "}" >> $3
+    check_status
+    echo $2 >> $3
+    check_status
+    echo >> $3
+}
+
+
+echo
+echo 
"--------------------------------------------------------------------------------"
+echo "This step will set up the U-Boot variables for booting the EVM."
+echo
+
+ipdefault=`ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | 
awk '{ print $1 }'`
+platform=`grep PLATFORM= $cwd/../Rules.make | cut -d= -f2`
+
+# Configure prompt for U-Boot 2016.05
+prompt="=>"
+
+
+echo "Autodetected the following ip address of your host, correct it if 
necessary"
+read -p "[ $ipdefault ] " ip
+echo
+
+if [ ! -n "$ip" ]; then
+    ip=$ipdefault
+fi
+
+if [ -f $cwd/../.targetfs ]; then
+    rootpath=`cat $cwd/../.targetfs`
+else
+    echo "Where is your target filesystem extracted?"
+    read -p "[ ${HOME}/targetNFS ]" rootpath
+
+    if [ ! -n "$rootpath" ]; then
+        rootpath="${HOME}/targetNFS"
+    fi
+    echo
+fi
+
+fitimage="fitImage-linux.bin-"$platform".itb"
+fitimagesrc=`ls -1 $cwd/../board-support/prebuilt-images/$fitimage`
+fitimagedefault=`basename $fitimagesrc`
+
+
+echo "Select fit image location:"
+echo " 1: TFTP"
+echo " 2: SD card"
+echo
+read -p "[ 1 ] " fit
+
+if [ ! -n "$fitimage" ]; then
+    fit="1"
+fi
+
+echo
+echo "Select root file system location:"
+echo " 1: NFS"
+echo " 2: SD card"
+echo
+read -p "[ 1 ] " fs
+
+if [ ! -n "$fs" ]; then
+    fs="1"
+fi
+
+
+
+if [ "$fit" -eq "1" ]; then
+    echo
+    echo "Available fit images in /tftproot:"
+    for file in /tftpboot/*.itb; do
+       basefile=`basename $file`
+       echo "    $basefile"
+    done
+    echo
+    echo "Which fit image do you want to boot from TFTP?"
+    read -p "[ $fitimagedefault ] " fitimage
+
+    if [ ! -n "$fitimage" ]; then
+       fitimage=$fitimagedefault
+    fi
+fi
+
+isBB="n"
+isBBBlack="n"
+isBBrevA3="n"
+configBB="n"
+
+check_for_beaglebone() {
+    # First check if there is a rev A3 board which uses the custom VID/PID
+    # combination
+    lsusb -d 0403:a6d0 > /dev/null
+
+    if [ "$?" = "0" ]
+    then
+        # We found a beaglebone
+        isBB="y"
+        isBBrevA3="y"
+        return
+    fi
+
+    # Now let's check for a standard VID/PID like newer BeagleBones have
+    sudo lsusb -vv -d 0403:6010 | grep "Product" | grep "BeagleBone" > 
/dev/null
+
+    if [ "$?" = "0" ]
+    then
+        isBB="y"
+        return
+    fi
+
+    # Now let's check for EVM-SK
+    sudo lsusb -vv -d 0403:6010 | grep "Product" | grep "EVM-SK" > /dev/null
+
+    if [ "$?" = "0" ]
+    then
+        isBB="y"
+        return
+    fi
+
+
+    # Now let's check for BeagleBone Black
+    sudo lsusb -vv -d 0403:6001 > /dev/null
+
+    if [ "$?" = "0" ]
+    then
+        isBB="y"
+        isBBBlack="y"
+        return
+     fi
+
+}
+
+echo "timeout 300" > $cwd/setupBoard.minicom
+echo "verbose on" >> $cwd/setupBoard.minicom
+
+do_expect "\"stop autoboot\"" "send \" \"" $cwd/setupBoard.minicom
+do_expect "\"$prompt\"" "send \"env default -f -a\"" $cwd/setupBoard.minicom
+do_expect "\"$prompt\"" "send \"saveenv\"" $cwd/setupBoard.minicom
+do_expect "\"$prompt\"" "send \"reset\"" $cwd/setupBoard.minicom
+do_expect "\"stop autoboot\"" "send \" \"" $cwd/setupBoard.minicom
+
+do_expect "\"$prompt\"" "send \"run update_to_fit\"" $cwd/setupBoard.minicom
+if [ "$fit" -eq "1" ]; then
+       if [ "$fs" -eq "1" ]; then
+               #TFTP and NFS Boot
+               do_expect "\"$prompt\"" "send \"setenv serverip $ip\"" 
$cwd/setupBoard.minicom
+               do_expect "\"$prompt\"" "send setenv rootpath '$rootpath'" 
$cwd/setupBoard.minicom
+               do_expect "\"$prompt\"" "send \"setenv fit_bootfile 
$fitimage\"" $cwd/setupBoard.minicom
+               do_expect "\"$prompt\"" "send \"setenv ip_method dhcp\"" 
$cwd/setupBoard.minicom
+               do_expect "\"$prompt\"" "send \"setenv nfsopts 
'nolock,v3,tcp,rsize=4096,wsize=4096'\"" $cwd/setupBoard.minicom
+               do_expect "\"$prompt\"" "send \"setenv getuenv 'if mmc rescan; 
then if run loadbootenv; then run importbootenv; fi; fi;'\"" 
$cwd/setupBoard.minicom
+               do_expect "\"$prompt\"" "send setenv bootcmd 'run findfdt; run 
getuenv; setenv autoload no;dhcp ;tftp \${fit_loadaddr} $fitimage; run netargs; 
bootm \${fit_loadaddr}#\${fdtfile}'" $cwd/setupBoard.minicom
+               do_expect "\"$prompt\"" "send \"saveenv\"" 
$cwd/setupBoard.minicom
+               do_expect "\"$prompt\"" "send \"boot\"" $cwd/setupBoard.minicom
+       else
+               #TFTP and SD Boot
+               do_expect "\"$prompt\"" "send \"setenv serverip $ip\"" 
$cwd/setupBoard.minicom
+               do_expect "\"$prompt\"" "send \"setenv fit_bootfile 
$fitimage\"" $cwd/setupBoard.minicom
+               do_expect "\"$prompt\"" "send \"setenv ip_method none\"" 
$cwd/setupBoard.minicom
+               do_expect "\"$prompt\"" "send \"setenv getuenv 'if mmc rescan; 
then if run loadbootenv; then run importbootenv; fi; fi;'\"" 
$cwd/setupBoard.minicom
+               do_expect "\"$prompt\"" "send setenv bootcmd 'run findfdt; run 
getuenv; setenv autoload no; dhcp ; tftp \${fit_loadaddr} $fitimage; run 
args_mmc; bootm \${fit_loadaddr}#\${fdtfile}'" $cwd/setupBoard.minicom
+               do_expect "\"$prompt\"" "send \"saveenv\"" 
$cwd/setupBoard.minicom
+               do_expect "\"$prompt\"" "send \"boot\"" $cwd/setupBoard.minicom
+       fi
+else
+       if [ "$fs" -eq "1" ]; then
+               #SD and NFS Boot
+               do_expect "\"$prompt\"" "send \"setenv serverip $ip\"" 
$cwd/setupBoard.minicom
+               do_expect "\"$prompt\"" "send setenv rootpath '$rootpath'" 
$cwd/setupBoard.minicom
+               do_expect "\"$prompt\"" "send \"setenv fit_bootfile fitImage\"" 
$cwd/setupBoard.minicom
+               do_expect "\"$prompt\"" "send \"setenv ip_method dhcp\"" 
$cwd/setupBoard.minicom
+               do_expect "\"$prompt\"" "send \"setenv nfsopts 
'nolock,v3,tcp,rsize=4096,wsize=4096'\"" $cwd/setupBoard.minicom
+               do_expect "\"$prompt\"" "send \"setenv getuenv 'if mmc rescan; 
then if run loadbootenv; then run importbootenv; fi; fi;'\"" 
$cwd/setupBoard.minicom
+               do_expect "\"$prompt\"" "send setenv bootcmd 'setenv autoload 
no; mmc rescan; run findfdt; run getuenv; setenv devtype mmc; run loadimage; 
run netargs; bootm \${fit_loadaddr}#\${fdtfile}'" $cwd/setupBoard.minicom
+               do_expect "\"$prompt\"" "send \"saveenv\"" 
$cwd/setupBoard.minicom
+               do_expect "\"$prompt\"" "send \"boot\"" $cwd/setupBoard.minicom
+           else
+               #SD and SD boot.
+               do_expect "\"$prompt\"" "send \"setenv ip_method none\"" 
$cwd/setupBoard.minicom
+               do_expect "\"$prompt\"" "send \"setenv fit_bootfile fitImage\"" 
$cwd/setupBoard.minicom
+               do_expect "\"$prompt\"" "send \"setenv getuenv 'if mmc rescan; 
then if run loadbootenv; then run importbootenv; fi; fi;'\"" 
$cwd/setupBoard.minicom
+               do_expect "\"$prompt\"" "send setenv bootcmd 'mmc rescan; run 
findfdt; run getuenv; setenv devtype mmc; run loadimage; run args_mmc; bootm 
\${fit_loadaddr}#\${fdtfile}'" $cwd/setupBoard.minicom
+               do_expect "\"$prompt\"" "send \"saveenv\"" 
$cwd/setupBoard.minicom
+               do_expect "\"$prompt\"" "send \"boot\"" $cwd/setupBoard.minicom
+
+       fi
+fi
+echo "! killall -s SIGHUP minicom" >> $cwd/setupBoard.minicom
+
+echo 
"--------------------------------------------------------------------------------"
+echo "Would you like to create a minicom script with the above parameters 
(y/n)?"
+read -p "[ y ] " minicom
+echo
+
+if [ ! -n "$minicom" ]; then
+    minicom="y"
+fi
+
+if [ "$minicom" = "y" ]; then
+
+    echo -n "Successfully wrote "
+    readlink -m $cwd/setupBoard.minicom
+fi
+
+while [ yes ]
+do
+       check_for_beaglebone
+
+       if [ "$isBB" = "y" ]
+       then
+               echo ""
+               echo "A BeagleBone (Black) or StarterKit board has been 
detected"
+               echo "Do you want to configure U-Boot for one of the boards 
mentioned"
+               echo "above? An answer of 'n' will configure U-Boot for the"
+               echo "General Purpose EVM instead"
+               read -p "(y/n) " configBB
+               echo
+
+               if [ "$configBB" = "y" ] || [ "$configBB" = "n" ]
+               then
+                       break
+               else
+                       echo "Invalid response"
+                       echo
+                       continue
+               fi
+       else
+               echo ""
+               echo "No BeagleBone (Black) or StarterKit detected. Assuming"
+               echo "general purpose evm is being used. Is this correct?"
+               read -p "(y/n) " validevm
+               echo ""
+               if [ "$validevm" = "y" ]
+               then
+                       configBB="n"
+                       break
+               else
+                       if [ "$validevm" != "n" ]
+                       then
+                               echo "Invalid response"
+                               echo
+                               continue
+                       fi
+
+                       echo "Please connect the Beaglebone (Black) or 
StarterKit to the PC"
+                       echo "If your using the StarterKit board make sure it 
is turned on"
+                       read -p "Press any key to try checking again." temp
+               fi
+       fi
+done
+
+if [ "$configBB" = "y" ]
+then
+    ftdiInstalled=`lsmod | grep ftdi_sio`
+    if [ -z "$ftdiInstalled" ]; then
+    #Add the ability to regconize the BeagleBone as two serial ports
+        if [ "$isBBrevA3" = "y" ]
+        then
+            echo "Finishing install by adding drivers for Beagle Bone..."
+            sudo modprobe -q ftdi_sio vendor=0x0403 product=0xa6d0
+
+            #Create uDev rule
+            echo "# Load ftdi_sio driver including support for XDS100v2." > 
$cwd/99-custom.rules
+            echo "SYSFS{idVendor}=="0403", SYSFS{idProduct}=="a6d0", \\" >>  
$cwd/99-custom.rules
+            echo "RUN+=\"/sbin/modprobe -q ftdi_sio vendor=0x0403 
product=0xa6d0\"" >> $cwd/99-custom.rules
+            sudo cp $cwd/99-custom.rules /etc/udev/rules.d/
+            rm $cwd/99-custom.rules
+        else
+            sudo modprobe -q ftdi_sio
+        fi
+    fi
+
+    #infinite loop to look for board unless user asks to stop
+    while [ yes ]
+    do
+           echo "Detecting connection to board..."
+           loopCount=0
+           port=`dmesg | grep FTDI | grep "tty" | tail -1 | grep "attached" |  
awk '{ print $NF }'`
+           while [ -z "$port" ] && [ "$loopCount" -ne "10" ]
+           do
+                   #count to 10 and timeout if no connection is found
+                   loopCount=$((loopCount+1))
+
+                   sleep 1
+                   port=`dmesg  | grep FTDI | grep "tty" | tail -1 | grep 
"attached" |  awk '{ print $NF }'`
+           done
+
+           #check to see if we actually found a port
+           if [ -n "$port" ]; then
+                   break;
+           fi
+
+           #if we didn't find a port and reached the timeout limit then ask to 
reconnect
+           if [ -z "$port" ] && [ "$loopCount" = "10" ]; then
+                   echo ""
+                   echo "Unable to detect which port the board is connected 
to."
+                   echo "Please reconnect your board."
+                   echo "Press 'y' to attempt to detect your board again or 
press 'n' to continue..."
+                   read -p "(y/n)" retryBoardDetection
+           fi
+
+           #if they choose not to retry, ask user to reboot manually and exit
+           if [ "$retryBoardDetection" = "n" ]; then
+                   echo ""
+                   echo "Please reboot your board manually and connect using 
minicom."
+                   exit;
+           fi
+    done
+
+    #Change minicom to accurately reflect the bone
+    minicomcfg=${HOME}/.minirc.dfl
+    echo "pu port             /dev/$port
+    pu baudrate         115200
+    pu bits             8
+    pu parity           N
+    pu stopbits         1
+    pu minit
+    pu mreset
+    pu mdialpre
+    pu mdialsuf
+    pu mdialpre2
+    pu mdialsuf2
+    pu mdialpre3
+    pu mdialsuf3
+    pu mconnect
+    pu mnocon1          NO CARRIER
+    pu mnocon2          BUSY
+    pu mnocon3          NO DIALTONE
+    pu mnocon4          VOICE
+    pu rtscts           No" | tee $minicomcfg > /dev/null
+    check_status
+fi
+
+echo "Would you like to run the setup script now (y/n)? For the general 
purpose evm "
+echo "you must now connect the RS-232 cable to your evm now. For the 
Beaglebone (Black)"
+echo "or StarterKit this step should of already have been done. Also connect 
the ethernet"
+echo "cable as described in the Quick Start Guide."
+echo "**Important**"
+echo "Once answering 'y' on the prompt below you will have 300 seconds to turn 
on the"
+echo "board or if it was already on reboot the board before the setup times 
out"
+echo
+echo "After successfully executing this script, your board will be set up. You 
will be "
+echo "able to connect to it by executing 'minicom -w' or if you prefer a 
windows host"
+echo "you can set up Tera Term as explained in the Software Developer's Guide."
+echo "If you connect minicom or Tera Term and power cycle the board Linux will 
boot."
+echo
+read -p "[ y ] " minicomsetup
+
+if [ ! -n "$minicomsetup" ]; then
+minicomsetup="y"
+fi
+
+if [ "$minicomsetup" = "y" ]; then
+cd $cwd
+sudo minicom -w -S setupBoard.minicom
+cd -
+fi
+
+echo "You can manually run minicom in the future with this setup script using: 
minicom -S $cwd/setupBoard.minicom"
+echo 
"--------------------------------------------------------------------------------"
-- 
2.17.1



-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#13526): 
https://lists.yoctoproject.org/g/meta-arago/message/13526
Mute This Topic: https://lists.yoctoproject.org/mt/89182900/21656
Group Owner: [email protected]
Unsubscribe: https://lists.yoctoproject.org/g/meta-arago/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to