#!/bin/bash # ------------------------------------------------------------------------------ # ndrun_precheker # ------------------------------------------------------------------------------ set -u # ------------------------------------------------------------------------------ # CHECK ARGMENT # ------------------------------------------------------------------------------ I_ELF_CHK_FLAG=FALSE if [ ."$*" = ."" ]; then return 1 else for a in $* ; do case $a in *.elf|*.ELF) NDRUN_PRECHK_ELF_NAME=`cygpath -lm "$a"` I_ELF_CHK_FLAG=TRUE ;; *) ;; esac done fi if [ "${I_ELF_CHK_FLAG}." == "FALSE." ] ; then exit 1 fi # ------------------------------------------------------------------------------ # READ FIRMWARE LIST # ------------------------------------------------------------------------------ #source ndrun_fwlist . ndrun_fwlist # ------------------------------------------------------------------------------ # CHECK FIRMWARE VERSION in rvl.bin # ------------------------------------------------------------------------------ NDRUN_PRECHK_TARGET_DDF="${NDRUN_PRECHK_ELF_NAME//.elf/.ddf}" NDRUN_PRECHK_NDEV_DDF="${NDEV_TOOLS}/NdevRun.ddf" NDRUN_PRECHK_RVLSYS_CNT=0 if [ -f "${NDRUN_PRECHK_TARGET_DDF}" ] ; then NDRUN_PRECHK_RVLSYS_CNT=`grep -sc "^[^\;]*RVLSysFileName" "${NDRUN_PRECHK_TARGET_DDF}"` if [ ${NDRUN_PRECHK_RVLSYS_CNT} -gt 1 ] ; then exit 1 fi fi if [ ! -f "${NDRUN_PRECHK_NDEV_DDF}" ] ; then exit 1 fi NDRUN_PRECHK_RVLSYS_CNT=`grep -sc "^[^\;]*RVLSysFileName" "${NDRUN_PRECHK_NDEV_DDF}"` if [ ${NDRUN_PRECHK_RVLSYS_CNT} -gt 1 ] ; then exit 1 fi if grep -sqa "^[^\;]*RVLSysFileName" "${NDRUN_PRECHK_TARGET_DDF}" ;then _TMP=`grep "^[^\;]*RVLSysFileName" "${NDRUN_PRECHK_TARGET_DDF}"` elif grep -sqa "^[^\;]*RVLSysFileName" "${NDRUN_PRECHK_NDEV_DDF}" ; then _TMP=`grep "^[^\;]*RVLSysFileName" "${NDRUN_PRECHK_NDEV_DDF}"` else echo "ERROR: Can't find "RVLSysFileName" section in DDF file." exit 1 fi _TMP=${_TMP//"RVLSysFileName="/} _TMP=${_TMP//\\//} _TMP=${_TMP//(/{} _TMP=${_TMP//)/\}} _TMP=${_TMP//" "/} _TMP=${_TMP//" "/} eval NDRUN_PRECHK_RVLBIN=`echo "${_TMP}" |tr -d '\r'` if [ ! -f "${NDRUN_PRECHK_RVLBIN}" ] ; then echo "ERROR: Can't find ${NDRUN_PRECHK_RVLBIN} file" exit 1 fi NDRUN_PRECHK_RVLBIN_SIZE=`stat -c %s "${NDRUN_PRECHK_RVLBIN}"` NDRUN_PRECHK_RVLBIN_FW_ADDR=`expr ${NDRUN_PRECHK_RVLBIN_SIZE} - 32 \* 1024 + 1099 ` NDRUN_PRECHK_RVLBIN_FW_VERSION0="`od -A n -tu1 -j ${NDRUN_PRECHK_RVLBIN_FW_ADDR} -N 1 ${NDRUN_PRECHK_RVLBIN}`" NDRUN_PRECHK_RVLBIN_FW_VERSION=`printf "%d" $NDRUN_PRECHK_RVLBIN_FW_VERSION0` # ------------------------------------------------------------------------------ # CHECK FIRMWARE TYPE "for extension" or "for standard" # ------------------------------------------------------------------------------ NDRUN_PRECHK_FW_TYPE='UNKNOWN' for f in ${FW_FOR_EXTENSION} ; do if [ ."${NDRUN_PRECHK_RVLBIN_FW_VERSION}" = .$f ] ; then NDRUN_PRECHK_FW_TYPE='NET' fi done for f in ${FW_FOR_STANDARD} ; do if [ ."${NDRUN_PRECHK_RVLBIN_FW_VERSION}" = .$f ] ; then NDRUN_PRECHK_FW_TYPE='standard' fi done # ------------------------------------------------------------------------------ # CHECK REGION rvl.bin # ------------------------------------------------------------------------------ NDRUN_PRECHK_RVLBIN_REGION_ADDR="0xe003" NDRUN_PRECHK_RVLBIN_REGION_NUM="`od -A n -td1 -j ${NDRUN_PRECHK_RVLBIN_REGION_ADDR} -N 1 ${NDRUN_PRECHK_RVLBIN}`" if [ "${NDRUN_PRECHK_RVLBIN_REGION_NUM}" -eq '0' ] ; then NDRUN_PRECHK_RVLBIN_REGION="JP" elif [ "$NDRUN_PRECHK_RVLBIN_REGION_NUM" -eq '1' ] ; then NDRUN_PRECHK_RVLBIN_REGION="US" elif [ "${NDRUN_PRECHK_RVLBIN_REGION_NUM}" -eq '2' ] ; then NDRUN_PRECHK_RVLBIN_REGION="EU" else NDRUN_PRECHK_RVLBIN_REGION="region number: ${NDRUN_PRECHK_RVLBIN_REGION_NUM}" fi # ------------------------------------------------------------------------------ # CHECK MEM2 SIZE in bi2.bin # ------------------------------------------------------------------------------ I_MEM2_SIZE=`peekBI2.exe -i "${REVOLUTION_SDK_ROOT}"/X86/bin/bi2.bin 0x2c` # ------------------------------------------------------------------------------ # CHECK PARENTAL in rvl.bin # ------------------------------------------------------------------------------ # NDRUN_PRECHK_RVLBIN_PARENTAL_ADDR="0xe01f" # NDRUN_PRECHK_RVLBIN_PARENTAL_CODE="`od -A n -td1 -j ${NDRUN_PRECHK_RVLBIN_PARENTAL_ADDR} -N 1 ${NDRUN_PRECHK_RVLBIN}`" # ------------------------------------------------------------------------------ # CHECK DvdRoot # ------------------------------------------------------------------------------ NDRUN_PRECHK_DVDROOT=`getndenv` NDRUN_PRECHK_DVDROOT=${NDRUN_PRECHK_DVDROOT//"\"DvdRoot\""/} NDRUN_PRECHK_DVDROOT=${NDRUN_PRECHK_DVDROOT//" "/} NDRUN_PRECHK_DVDROOT=${NDRUN_PRECHK_DVDROOT//" "/} # ------------------------------------------------------------------------------ # CHECK LIB(NWC24 = use RevoEX, SO) in ELF for identify the extension associated # ------------------------------------------------------------------------------ if grep -qa "__NWC24Version" "${NDRUN_PRECHK_ELF_NAME}" then IS_LINK_NWC24="TRUE" else IS_LINK_NWC24="FALSE" fi if grep -qa "__SOVersion" "${NDRUN_PRECHK_ELF_NAME}" then IS_LINK_SO="TRUE" else IS_LINK_SO="FALSE" fi # ------------------------------------------------------------------------------ # PRINT ENV # ------------------------------------------------------------------------------ echo "**********************************************************************" echo "* YOUR BOOT ENVIRONMENT" echo "**********************************************************************" if [ ."$NDRUN_PRECHK_FW_TYPE" = '.standard' ] ; then # NOT USE extension echo "* firmware version : ${NDRUN_PRECHK_RVLBIN_FW_VERSION}.x.x (for standard)" elif [ ."$NDRUN_PRECHK_FW_TYPE" = '.NET' ] ; then # USE extension echo "* firmware version : ${NDRUN_PRECHK_RVLBIN_FW_VERSION}.x.x (for extension)" else echo "* firmware version : ${NDRUN_PRECHK_RVLBIN_FW_VERSION}.x.x (unexpected version)" fi if [ ."$I_MEM2_SIZE" = ".67108864(0x04000000)" ] ; then echo "* mem2 size : 64 MB" else echo "* mem2 size : 128 MB" fi echo "* country code : ${NDRUN_PRECHK_RVLBIN_REGION}" #echo "* parental :" echo "* DvdRoot : ${NDRUN_PRECHK_DVDROOT}" echo "**********************************************************************" echo "" # ------------------------------------------------------------------------------ # JUDGMENT # ------------------------------------------------------------------------------ if [ ."$NDRUN_PRECHK_FW_TYPE" = '.standard' ] ; then # NOT USE extension if [ ."$IS_LINK_NWC24" = '.TRUE' -o ."$IS_LINK_SO" = '.TRUE' ] ; then echo echo "WARNNING >>> Wrong firmware version." echo echo "This ELF is a program only for extension." echo "You must not use the firmware for standard." echo "* Expected : ${FW_FOR_EXTENSION}.x.x" echo "* Actual : ${NDRUN_PRECHK_RVLBIN_FW_VERSION}.x.x" echo echo "If you want to continue, please press RETURN" read fi elif [ ."$NDRUN_PRECHK_FW_TYPE" = '.NET' ] ; then # USE extension if [ ."$IS_LINK_NWC24" = '.FALSE' -a ."$IS_LINK_SO" = '.FALSE' ] ; then echo echo "WARNNING >>> Wrong firmware version." echo echo "This ELF is a program only for standard." echo "You must not use the firmware for extension." echo "* Expected : ${FW_FOR_STANDARD}.x.x" echo "* Actual : ${NDRUN_PRECHK_RVLBIN_FW_VERSION}.x.x" echo echo "If you want to continue, please press RETURN" read fi fi