#!/usr/bin/env bash
set -x
export ORIGDIR=`dirname $0`
export ABSDIR=`cd ${ORIGDIR} && pwd`
export COLUMNS=300
ct=/usr/atria/bin/cleartool
sed=/bin/sed
awk=/bin/awk
diff=/usr/bin/diff
if [ $# -ne 2 ]; then
echo """
Usage:
./firmware.sh r4.0.firmware validate|init|unpack|install|all
"""
exit 1
fi
source ${ORIGDIR}/firmware.conf
if [ -e "$1" ]; then
source $1
export FIRMWARE_RELEASE
else
echo "Firmware file $1 not found."
exit 1
fi
#check if the software from website is uploaded to specified folder
firmware_validate_upload(){
if [ ! -e "${FIRMWARE_UPLOADDIR}" ]; then
echo "firmware upload dir ${FIRMWARE_UPLOADDIR} not exist, will create it automatically"
mkdir -p ${FIRMWARE_UPLOADDIR}
fi
if [ ! -e "${FIRMWARE_UPLOADDIR}/FIRMWARE_${FIRMWARE_RELEASE}" ]; then
echo "firmware upload dir ${FIRMWARE_UPLOADDIR}/FIRMWARE_${FIRMWARE_RELEASE} not exist, will create it automatically"
mkdir -p ${FIRMWARE_UPLOADDIR}/FIRMWARE_${FIRMWARE_RELEASE}
fi
firmware_updir=${FIRMWARE_UPLOADDIR}/FIRMWARE_${FIRMWARE_RELEASE}
#check Wi4_RFH_pkg.bin
if [ ! -e "${firmware_updir}/Wi4_RFH_pkg.bin" ]; then
echo "${firmware_updir}/Wi4_RFH_pkg.bin not exists!"
exit 1
fi
#check 2x installation package
if [ ! -e "${firmware_updir}/2x/physap_${FIRMWARE_PKG_PATTERN}_pkg.zip" ]; then
echo "${firmware_updir}/2x/physap_${FIRMWARE_PKG_PATTERN}_pkg.zip not exists!"
exit 1
fi
if [ ! -e "${firmware_updir}/2x/Wi4_2s_DSP_pkg.bin" ]; then
echo "${firmware_updir}/2x/Wi4_2s_DSP_pkg.bin not exists!"
exit 1
fi
if [ ! -e "${firmware_updir}/2x/Wi4_2s_MFPGA_pkg.bin" ]; then
echo "${firmware_updir}/2x/Wi4_2s_MFPGA_pkg.bin not exists!"
exit 1
fi
#check 4x installation package
if [ ! -e "${firmware_updir}/4x/physap4x_${FIRMWARE_PKG_PATTERN}_pkg.zip" ]; then
echo "${firmware_updir}/4x/physap4x_${FIRMWARE_PKG_PATTERN}_pkg.zip not exists!"
exit 1
fi
if [ ! -e "${firmware_updir}/4x/Wi4_4s_DSP_pkg.bin" ]; then
echo "${firmware_updir}/4x/Wi4_4s_DSP_pkg.bin not exists!"
exit 1
fi
if [ ! -e "${firmware_updir}/4x/Wi4_4s_MFPGA_pkg.bin" ]; then
echo "${firmware_updir}/4x/Wi4_4s_MFPGA_pkg.bin not exists!"
exit 1
fi
echo "Firmware release ${FIRMWARE_RELEASE} is uploaded under ${FIRMWARE_UPLOADDIR}/FIRMWARE_${FIRMWARE_RELEASE}"
echo "Firmware release ${FIRMWARE_RELEASE} is a valid upload"
}
#initialize the firmware work dir and log dir
firmware_init(){
echo "initialize firmware installation"
if [ ! -e "${FIRMWARE_WORKDIR}" ]; then
echo "firmware upload dir ${FIRMWARE_WORKDIR} not exist, will create it automatically"
mkdir -p ${FIRMWARE_WORKDIR}
fi
if [ -e "${FIRMWARE_WORKDIR}/FIRMWARE_${FIRMWARE_RELEASE}" ]; then
echo "Firmware release already installed, please check again!"
exit 1
fi
echo "initialize firmware work dir"
cd ${FIRMWARE_WORKDIR}
mkdir "FIRMWARE_${FIRMWARE_RELEASE}"
chmod 777 "FIRMWARE_${FIRMWARE_RELEASE}"
#initialize 2x
cd ${FIRMWARE_WORKDIR}/FIRMWARE_${FIRMWARE_RELEASE}
mkdir 2x
chmod 777 2x
cd 2x
mkdir phy_sap_api
cd phy_sap_api
mkdir lib
mkdir include
#initialize 4x
cd ${FIRMWARE_WORKDIR}/FIRMWARE_${FIRMWARE_RELEASE}
mkdir 4x
chmod 777 4x
cd 4x
mkdir phy_sap_api
cd phy_sap_api
mkdir lib
mkdir include
mkdir config
#initialize log dir
echo "initialize firmware log dir"
if [ ! -e "${FIRMWARE_LOGDIR}/FIRMWARE_${FIRMWARE_RELEASE}" ]; then
echo "Firmware log dir not exist, will create it automatically"
mkdir -p ${FIRMWARE_LOGDIR}/FIRMWARE_${FIRMWARE_RELEASE}
chmod 777 ${FIRMWARE_LOGDIR}/FIRMWARE_${FIRMWARE_RELEASE}
fi
echo "firmware working dir is initialized."
}
#unpack the software
firmware_unpack(){
echo "unpack firmware..."
if [ ! -e "${FIRMWARE_WORKDIR}/FIRMWARE_${FIRMWARE_RELEASE}/2x/phy_sap_api" ]; then
echo "Please invoke firmeate init method at first"
exit 1
fi
#copy package to working dir
echo "copy package to working dir ${FIRMWARE_WORKDIR}/FIRMWARE_${FIRMWARE_RELEASE}"
cp ${FIRMWARE_UPLOADDIR}/FIRMWARE_${FIRMWARE_RELEASE}/Wi4_RFH_pkg.bin ${FIRMWARE_WORKDIR}/FIRMWARE_${FIRMWARE_RELEASE}/2x/phy_sap_api
cp ${FIRMWARE_UPLOADDIR}/FIRMWARE_${FIRMWARE_RELEASE}/2x/* ${FIRMWARE_WORKDIR}/FIRMWARE_${FIRMWARE_RELEASE}/2x/phy_sap_api
cp ${FIRMWARE_UPLOADDIR}/FIRMWARE_${FIRMWARE_RELEASE}/Wi4_RFH_pkg.bin ${FIRMWARE_WORKDIR}/FIRMWARE_${FIRMWARE_RELEASE}/4x/phy_sap_api
cp ${FIRMWARE_UPLOADDIR}/FIRMWARE_${FIRMWARE_RELEASE}/4x/* ${FIRMWARE_WORKDIR}/FIRMWARE_${FIRMWARE_RELEASE}/4x/phy_sap_api
#unpack 2x
cd ${FIRMWARE_WORKDIR}/FIRMWARE_${FIRMWARE_RELEASE}/2x/phy_sap_api
if [ ! -e "physap_${FIRMWARE_PKG_PATTERN}_pkg.zip" ]; then
echo "Firmware package has not been uploaded, please upload it before go ahead."
exit 1
fi
#ls -ltr
unzip physap_${FIRMWARE_PKG_PATTERN}_pkg.zip
#ls -ltr
rm physap_${FIRMWARE_PKG_PATTERN}_pkg.zip
rm physap_lib.a
mv physap.out lib/
#ls -ltr lib/
mv physap_inc.zip include/
#ls -ltr
cd include/
unzip physap_inc.zip
rm physap_inc.zip
#ls -ltr
#unpack 4x
cd ${FIRMWARE_WORKDIR}/FIRMWARE_${FIRMWARE_RELEASE}/4x/phy_sap_api
if [ ! -e "physap4x_${FIRMWARE_PKG_PATTERN}_pkg.zip" ]; then
echo "Firmware package has not been uploaded, please upload it before go ahead."
exit 1
fi
#ls -ltr
unzip physap4x_${FIRMWARE_PKG_PATTERN}_pkg.zip
rm physap4x_${FIRMWARE_PKG_PATTERN}_pkg.zip
mv physap4s.out lib/
#ls -ltr lib/
mv physap4s.cfg config/
#ls -ltr config/
mv physap4x_inc.zip include/
#ls -ltr
cd include/
unzip physap4x_inc.zip
rm physap4x_inc.zip
#ls -ltr
echo "unpacked firmware to ${FIRMWARE_WORKDIR}/FIRMWARE_${FIRMWARE_RELEASE}"
}
import_modem(){
modem=$1
if [ ! -e "${FIRMWARE_LOGDIR}/FIRMWARE_${FIRMWARE_RELEASE}" ]; then
echo "Firmware log dir not exist, will create it automatically"
mkdir -p ${FIRMWARE_LOGDIR}/FIRMWARE_${FIRMWARE_RELEASE}
chmod 777 ${FIRMWARE_LOGDIR}/FIRMWARE_${FIRMWARE_RELEASE}
fi
log=${FIRMWARE_LOGDIR}/FIRMWARE_${FIRMWARE_RELEASE}/${modem}.log
touch ${log}
nohup time ${ct} setview -exec "${ABSDIR}/firmware_import.sh ${modem}" ${FIRMWARE_VIEW} > ${log} 2>&1
if [ $? == 1 ]; then
cat ${log}
echo "modem ${modem} failed to be imported, please check log ${log}"
exit 1
fi
echo "modem ${modem} is imported, please check log ${log}"
}
#install the firmware, should running with apbld
firmware_import(){
echo "install firmware..."
import_modem '2x'
import_modem '4x'
echo "installed firmware..."
}
case "${2}" in
validate)
firmware_validate_upload
;;
init)
firmware_init
;;
unpack)
firmware_unpack
;;
import)
firmware_import
;;
all)
firmware_validate_upload
firmware_init
firmware_unpack
firmware_import
;;
*)
echo "Please specify validate,init,unpack,install or all as the second arg"
exit 1
;;
esac
exit 0
分享到:
相关推荐
3. **Korn Shell (ksh)**:这是一种在UNIX系统中广泛使用的Shell,它结合了Bourne Shell和C Shell的最佳特性,特别是引入了一些现代化的Shell技术,比如命令行编辑功能。 4. **Bourne Shell (sh)**:这是最初的...
在IT行业中,`shell.dat` 文件通常与命令行接口(CLI)或外壳程序有关,特别是Linux和Unix系统中的Bash Shell。`shell.dat` 文件可能包含脚本、命令历史记录或者与Shell相关的配置信息。然而,"shell.dat生成器" 指...
- `struts-plugin.xml`: 插件配置文件,用于引入和配置Struts2的扩展,例如Spring插件,可以实现Action与Spring bean的无缝集成。 - `struts.xml`: 应用程序级别的配置文件,定义Action类、结果映射、包配置等。 ...
在"Go2Shell-3.0.2.zip"压缩包中,包含的主要文件很可能是Go2Shell的应用程序文件和可能的配置或文档。通常,这种类型的软件包会有一个可执行文件,用于安装或运行该应用程序。此外,可能还会有README文件,其中包含...
Unix系统中,shell程序的解释器由程序文件的第一行(shebang)指定,例如`#!/bin/csh`表示该文件应由C Shell解释。如果缺少shebang或以注释开头,系统默认使用B Shell。 **目录/文件名的自动补齐**: C Shell提供了...
至于压缩包中的"java连接shell"文件,可能包含了示例代码、配置文件或者测试脚本,这些资源可以帮助开发者更好地理解和实践Java远程调用Shell的过程。通过学习和研究这些文件,可以加深对这个主题的理解,并能够将...
Cshell,因其与C编程语言相似的结构和符号而得名,是Unix系统及类Unix操作系统(如Linux)中的一种交互式外壳程序(shell)。它由贝尔实验室的Bill Joy在1982年为BSD Unix开发,旨在提供一种更强大的命令解释器。C...
- 用户可以通过在Path中添加自定义的目录来引入自己编写的Shell程序或脚本。 - 默认的Shell命令大多数位于`C:\Windows`和`C:\Windows\System32`目录下。 - **Shell命令的执行方式**: - 通过打开CMD控制台并输入...
配置文件的最佳实践**:为了保持配置文件的整洁,可以将复杂或重复的配置片段放入单独的文件,然后在主配置文件中通过`source`引入。此外,使用版本控制系统(如Git)来管理配置文件,可以方便地追踪和回滚更改。 ...
这些配置可以通过编写配置文件或直接在命令行中指定。 9. **集成开发环境(IDE)支持**:许多IDE和文本编辑器(如Vim、Emacs、VS Code等)都有插件支持shfmt,可以直接在编辑器内部进行格式化和校验,提升开发效率...
在IT行业中,shell脚本是Linux/Unix系统中常用的一种自动化任务执行工具,它利用bash或其他shell解释器来编写程序,实现对系统的管理和自动化操作。本压缩包中的资源主要是关于如何利用shell脚本来配置多线程备份...
在给定的压缩包文件中,"shell脚本可配置多线程备份mysql5.7.8以后数据库异常mail465发邮件"是一个特别实用的脚本,它结合了多个关键功能,包括数据库备份、多线程处理以及错误通知。 首先,我们来讨论MySQL数据库...
除了监听地址,你还可以在配置文件中设置数据库连接字符串、日志级别等。 **环境特定配置** 在软件开发过程中,通常会有多种环境,如开发、测试和生产。每种环境都需要不同的配置设置,例如不同的数据库连接字符串...
- **grep**:在文件中搜索特定的模式。 - **find**:查找文件或目录。 - **chmod**:更改文件或目录的权限。 - **chown**:更改文件或目录的所有者。 - **tar**:打包和压缩文件。 - **gzip**:压缩文件。 - **unzip...
开发人员或高级用户可以下载这个文件,编译并安装到自己的Linux系统中,以获取最新的开发版本或者根据需要自定义配置。`Readme-说明.htm`文件通常是项目提供的文档,可能包含了编译、安装和使用GNOME Shell的说明,...
Korn Shell被广泛用于商业环境中,尤其是在需要高度可配置性的场景下。 ### 四、C Shell (csh) C Shell由Bill Joy在1980年代初期为BSD Unix系统开发。它的设计灵感来自于C语言,因此在语法上与C语言相似,使得...
init程序根据/etc/inittab文件配置终端,并调用getty显示登录界面。用户成功登录后,login进程会启动用户的Shell,通常是/home目录下的.bashrc或.bash_profile文件定义的Shell。 4. **各种Shell的特性** - **...
此外,还需要一个有效的签名配置文件(Provisioning Profile)和证书,这些用于对应用进行签名,使其能在iOS设备上运行。 接下来,我们需要编写shell脚本。脚本的基本结构会包括以下部分: 1. **设置变量**:定义...
6. **重置Gnome Shell设置**:如果是因为配置文件出现问题,可以删除`.gconf`和`.gnome*`目录,重启系统以重置Gnome Shell设置。 7. **社区支持**:如果问题依然存在,可以寻求Ubuntu和Gnome社区的帮助,他们通常有...
- **注册表配置**:注册表中的键值设置决定了Shell扩展的安装和运行。如`HKEY_CLASSES_ROOT`下的相关键值。 - **IDispatch接口**:用于实现与用户的交互,例如,处理上下文菜单命令。 - **IContextMenu接口**:...