ti processor sdk linux am335x evm /bin/commom.sh hacking

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: #!/bin/sh # # ti processor sdk linux am335x evm /bin/commom.sh hacking # 说明: # 本文主要对TI的sdk中的common.sh脚本进行解读,是为了了解其工作机制。
#!/bin/sh

#
#      ti processor sdk linux am335x evm /bin/commom.sh hacking
# 说明:
#     本文主要对TI的sdk中的common.sh脚本进行解读,是为了了解其工作机制。
#
#                                      2016-4-16 深圳 南山平山村 曾剑锋


# 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.

# 检查上一条Shell命令知否正确执行,如果执行出错,给出提示信息,然后退出。
check_status() {
    ret=$?
    if [ "$ret" -ne "0" ]; then
        echo "Failed setup, aborting.."
        exit 1
    fi
}

# This function will return the code name of the Linux host release to the caller
# 
# Qt@aplex:~/ti-processor-sdk-linux-am335x-evm-01.00.00.00/bin$ lsb_release  -a
# LSB Version:    core-2.0-amd64:core-2.0-noarch:core-3.0-amd64:core-3.0-noarch:core-3.1-amd64:core-3.1-noarch:core-3.2-amd64:core-3.2-noarch:core-4.0-amd64:core-4.0-noarch
# Distributor ID:    Ubuntu
# Description:    Ubuntu 12.04.1 LTS
# Release:    12.04
# Codename:    precise
# 
# eval $__host_ver="'$the_version'"
# 上面eval相当于是给调用该函数时的参数赋值,和C语言中的传递指针差不多的意思。
get_host_type() {
    local  __host_type=$1
    local  the_host=`lsb_release -a 2>/dev/null | grep Codename: | awk {'print $2'}`
    eval $__host_type="'$the_host'"
}

# This function returns the version of the Linux host to the caller
# 
# Qt@aplex:~/ti-processor-sdk-linux-am335x-evm-01.00.00.00/bin$ lsb_release  -a
# LSB Version:    core-2.0-amd64:core-2.0-noarch:core-3.0-amd64:core-3.0-noarch:core-3.1-amd64:core-3.1-noarch:core-3.2-amd64:core-3.2-noarch:core-4.0-amd64:core-4.0-noarch
# Distributor ID:    Ubuntu
# Description:    Ubuntu 12.04.1 LTS
# Release:    12.04
# Codename:    precise
#
# eval $__host_ver="'$the_version'"
# 上面eval相当于是给调用该函数时的参数赋值,和C语言中的传递指针差不多的意思。
get_host_version() {
    local  __host_ver=$1
    local  the_version=`lsb_release -a 2>/dev/null | grep Release: | awk {'print $2'}`
    eval $__host_ver="'$the_version'"
}

# This function returns the major version of the Linux host to the caller
# If the host is version 12.04 then this function will return 12
get_major_host_version() {
    local  __host_ver=$1
    get_host_version major_version
    eval $__host_ver="'${major_version%%.*}'"
}

# This function returns the minor version of the Linux host to the caller
# If the host is version 12.04 then this function will return 04
get_minor_host_version() {
    local  __host_ver=$1
    get_host_version minor_version
    eval $__host_ver="'${minor_version##*.}'"
}

# This function will look for an FTDI connection from the development board
# and based on the index passed in it will set the .minirc.dfl value for the
# proper FTDI instance.
# FTDI 一般是主要是USB 转UART,FIFO,SPI,I2C工具。
set_ftdi_serial_port() {
    index="$1"
    port=""
    ports=""

    # [ -n "$var" ] :判断$var变量是否有值
    if [ ! -n "$index" ]
    then
        index=1
    fi

    while [ 1 == 1 ]
    do
        # 这里相当于移植等待对应的tty在dmesg中出现,等待时间是10s。
        echo "Detecting connection to board..."
        loopCount=0
        ports=`dmesg | grep FTDI | grep "tty" | tail -2 | sed s'/.*attached to //g'`
        while [ -z "$ports" ] && [ "$loopCount" -ne "10" ]
        do
            #count to 10 and timeout if no connection is found
            loopCount=$((loopCount+1))

            sleep 1
            ports=`dmesg | grep FTDI | grep "tty" | tail -2 | sed s'/.*attached to //g'`
        done

        # If we have actually found ports then get the proper index
        # 如果找到了端口
        if [ -n "$ports" ]; then
            i=1
            # 取指定的端口,指定的端口号在index中
            for p in $ports
            do
                if [ "$i" -eq "$index" ]
                then
                    port="$p"
                    break
                # There should not be more than 10 indexes so stop there
                elif [ "$i" -eq "10" ]
                then
                    break
                fi
                i=`expr $i + 1`
            done

            # If the port is blank then we couldn't find the index so ask the
            # user.
            # 如果在上面没有找到指定的串口,那么手动输入
            if [ "x$port" == "x" ]
            then
                echo "The port for the FTDI USB-to-Serial device could not be"
                echo "found.  Please enter the port yourself here"
                read -p "[ /dev/ttyUSB# ] " port
            fi
            break;
        fi

        # if we didn't find a port and reached the timeout limit then ask
        # to reconnect
        # 如果没有找到对应的串口,那么询问是否继续
        if [ -z "$ports" ] && [ "$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

    # Take everything in the user's .minirc.dlf file expect the port setting
    # 这里相当于保留用户之前的设定,然后另外添加当前指定的port
    cat ${HOME}/.minirc.dfl | grep -v port > ${HOME}/.minirc.dfl.tmp
    echo "pu port           /dev/$port" > ${HOME}/.minirc.dfl
    cat ${HOME}/.minirc.dfl.tmp >> ${HOME}/.minirc.dfl
    rm -f ${HOME}/.minirc.dfl.tmp
}

 

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
Shell Linux Android开发
【Linux】【编译相关】execvp: /bin/sh: Argument list too long问题处理小结
【Linux】【编译相关】execvp: /bin/sh: Argument list too long问题处理小结
1516 0
|
3月前
|
Oracle Java 关系型数据库
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
如果遇到"exec format error"问题,文章建议先检查Linux操作系统是32位还是64位,并确保安装了与系统匹配的JDK版本。如果系统是64位的,但出现了错误,可能是因为下载了错误的JDK版本。文章提供了一个链接,指向Oracle官网上的JDK 17 Linux版本下载页面,并附有截图说明。
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
|
数据采集 Linux 数据处理
星嵌 OMAPL138工业核心板 TI ARM9+DSP C674x Linux C6000 uPP
SOM-XQ138基于TI OMAP-L138定点/浮点DSP C674x+ARM9处理器,双核主频456MHz,C6000 DSP + ARM设计的核心板;
星嵌 OMAPL138工业核心板 TI ARM9+DSP C674x Linux C6000 uPP
|
Java Unix Linux
CentOS7安装jdk后输入Java-version出现-bash: /usr/java/jdk1.8.0_271/bin/java: /lib/ld-linux.so.2: bad ELF in
CentOS7安装jdk后输入Java-version出现-bash: /usr/java/jdk1.8.0_271/bin/java: /lib/ld-linux.so.2: bad ELF in
CentOS7安装jdk后输入Java-version出现-bash: /usr/java/jdk1.8.0_271/bin/java: /lib/ld-linux.so.2: bad ELF in
|
Linux 开发工具 芯片
Linux系统中SDK基本介绍
Linux系统中SDK基本介绍
467 0
Linux系统中SDK基本介绍
|
Ubuntu Shell Linux
ZYNQ - 嵌入式Linux开发 -04- petalinux和Xilinx_SDK2018.3安装(二)
ZYNQ - 嵌入式Linux开发 -04- petalinux和Xilinx_SDK2018.3安装
1090 0
ZYNQ - 嵌入式Linux开发 -04- petalinux和Xilinx_SDK2018.3安装(二)
|
Ubuntu Linux 网络安全
ZYNQ - 嵌入式Linux开发 -04- petalinux和Xilinx_SDK2018.3安装(一)
ZYNQ - 嵌入式Linux开发 -04- petalinux和Xilinx_SDK2018.3安装
607 0
ZYNQ - 嵌入式Linux开发 -04- petalinux和Xilinx_SDK2018.3安装(一)
bin/arm-linux-androideabi-nm: libtinfo.so.5: cannot open shared object file: No such file or directo
bin/arm-linux-androideabi-nm: libtinfo.so.5: cannot open shared object file: No such file or directo
109 0
|
Dart Linux 开发工具
Dart SDK 安装(Window\Mac\Linux)
Dart SDK 安装(Window\Mac\Linux)
299 0
|
4月前
|
JavaScript 前端开发 Java
[Android][Framework]系统jar包,sdk的制作及引用
[Android][Framework]系统jar包,sdk的制作及引用
107 0