1#!/bin/bash 2# ------------------------------------------------------------------------------ 3# ndrun_precheker 4# ------------------------------------------------------------------------------ 5set -u 6 7# ------------------------------------------------------------------------------ 8# CHECK ARGMENT 9# ------------------------------------------------------------------------------ 10I_ELF_CHK_FLAG=FALSE 11if [ ."$*" = ."" ]; then 12 return 1 13else 14 for a in $* ; do 15 case $a in 16 *.elf|*.ELF) 17 NDRUN_PRECHK_ELF_NAME=`cygpath -lm "$a"` 18 I_ELF_CHK_FLAG=TRUE 19 ;; 20 *) 21 ;; 22 esac 23 done 24fi 25 26if [ "${I_ELF_CHK_FLAG}." == "FALSE." ] ; then 27 exit 1 28fi 29 30# ------------------------------------------------------------------------------ 31# READ FIRMWARE LIST 32# ------------------------------------------------------------------------------ 33#source ndrun_fwlist 34. ndrun_fwlist 35 36# ------------------------------------------------------------------------------ 37# CHECK FIRMWARE VERSION in rvl.bin 38# ------------------------------------------------------------------------------ 39NDRUN_PRECHK_TARGET_DDF="${NDRUN_PRECHK_ELF_NAME//.elf/.ddf}" 40NDRUN_PRECHK_NDEV_DDF="${NDEV_TOOLS}/NdevRun.ddf" 41 42NDRUN_PRECHK_RVLSYS_CNT=0 43if [ -f "${NDRUN_PRECHK_TARGET_DDF}" ] ; then 44 NDRUN_PRECHK_RVLSYS_CNT=`grep -sc "^[^\;]*RVLSysFileName" "${NDRUN_PRECHK_TARGET_DDF}"` 45 if [ ${NDRUN_PRECHK_RVLSYS_CNT} -gt 1 ] ; then 46 exit 1 47 fi 48fi 49 50if [ ! -f "${NDRUN_PRECHK_NDEV_DDF}" ] ; then 51 exit 1 52fi 53NDRUN_PRECHK_RVLSYS_CNT=`grep -sc "^[^\;]*RVLSysFileName" "${NDRUN_PRECHK_NDEV_DDF}"` 54if [ ${NDRUN_PRECHK_RVLSYS_CNT} -gt 1 ] ; then 55 exit 1 56fi 57 58if grep -sqa "^[^\;]*RVLSysFileName" "${NDRUN_PRECHK_TARGET_DDF}" ;then 59 _TMP=`grep "^[^\;]*RVLSysFileName" "${NDRUN_PRECHK_TARGET_DDF}"` 60elif grep -sqa "^[^\;]*RVLSysFileName" "${NDRUN_PRECHK_NDEV_DDF}" ; then 61 _TMP=`grep "^[^\;]*RVLSysFileName" "${NDRUN_PRECHK_NDEV_DDF}"` 62else 63 echo "ERROR: Can't find "RVLSysFileName" section in DDF file." 64 exit 1 65fi 66 67_TMP=${_TMP//"RVLSysFileName="/} 68_TMP=${_TMP//\\//} 69_TMP=${_TMP//(/{} 70_TMP=${_TMP//)/\}} 71_TMP=${_TMP//" "/} 72_TMP=${_TMP//" "/} 73eval NDRUN_PRECHK_RVLBIN=`echo "${_TMP}" |tr -d '\r'` 74 75if [ ! -f "${NDRUN_PRECHK_RVLBIN}" ] ; then 76 echo "ERROR: Can't find ${NDRUN_PRECHK_RVLBIN} file" 77 exit 1 78fi 79 80NDRUN_PRECHK_RVLBIN_SIZE=`stat -c %s "${NDRUN_PRECHK_RVLBIN}"` 81NDRUN_PRECHK_RVLBIN_FW_ADDR=`expr ${NDRUN_PRECHK_RVLBIN_SIZE} - 32 \* 1024 + 1099 ` 82NDRUN_PRECHK_RVLBIN_FW_VERSION0="`od -A n -tu1 -j ${NDRUN_PRECHK_RVLBIN_FW_ADDR} -N 1 ${NDRUN_PRECHK_RVLBIN}`" 83NDRUN_PRECHK_RVLBIN_FW_VERSION=`printf "%d" $NDRUN_PRECHK_RVLBIN_FW_VERSION0` 84 85# ------------------------------------------------------------------------------ 86# CHECK FIRMWARE TYPE "for extension" or "for standard" 87# ------------------------------------------------------------------------------ 88NDRUN_PRECHK_FW_TYPE='UNKNOWN' 89for f in ${FW_FOR_EXTENSION} ; do 90 if [ ."${NDRUN_PRECHK_RVLBIN_FW_VERSION}" = .$f ] ; then 91 NDRUN_PRECHK_FW_TYPE='NET' 92 fi 93done 94for f in ${FW_FOR_STANDARD} ; do 95 if [ ."${NDRUN_PRECHK_RVLBIN_FW_VERSION}" = .$f ] ; then 96 NDRUN_PRECHK_FW_TYPE='standard' 97 fi 98done 99 100# ------------------------------------------------------------------------------ 101# CHECK REGION rvl.bin 102# ------------------------------------------------------------------------------ 103NDRUN_PRECHK_RVLBIN_REGION_ADDR="0xe003" 104NDRUN_PRECHK_RVLBIN_REGION_NUM="`od -A n -td1 -j ${NDRUN_PRECHK_RVLBIN_REGION_ADDR} -N 1 ${NDRUN_PRECHK_RVLBIN}`" 105 106if [ "${NDRUN_PRECHK_RVLBIN_REGION_NUM}" -eq '0' ] ; then 107 NDRUN_PRECHK_RVLBIN_REGION="JP" 108elif [ "$NDRUN_PRECHK_RVLBIN_REGION_NUM" -eq '1' ] ; then 109 NDRUN_PRECHK_RVLBIN_REGION="US" 110elif [ "${NDRUN_PRECHK_RVLBIN_REGION_NUM}" -eq '2' ] ; then 111 NDRUN_PRECHK_RVLBIN_REGION="EU" 112else 113 NDRUN_PRECHK_RVLBIN_REGION="region number: ${NDRUN_PRECHK_RVLBIN_REGION_NUM}" 114fi 115 116# ------------------------------------------------------------------------------ 117# CHECK MEM2 SIZE in bi2.bin 118# ------------------------------------------------------------------------------ 119I_MEM2_SIZE=`peekBI2.exe -i "${REVOLUTION_SDK_ROOT}"/X86/bin/bi2.bin 0x2c` 120 121# ------------------------------------------------------------------------------ 122# CHECK PARENTAL in rvl.bin 123# ------------------------------------------------------------------------------ 124# NDRUN_PRECHK_RVLBIN_PARENTAL_ADDR="0xe01f" 125# NDRUN_PRECHK_RVLBIN_PARENTAL_CODE="`od -A n -td1 -j ${NDRUN_PRECHK_RVLBIN_PARENTAL_ADDR} -N 1 ${NDRUN_PRECHK_RVLBIN}`" 126 127# ------------------------------------------------------------------------------ 128# CHECK DvdRoot 129# ------------------------------------------------------------------------------ 130NDRUN_PRECHK_DVDROOT=`getndenv` 131NDRUN_PRECHK_DVDROOT=${NDRUN_PRECHK_DVDROOT//"\"DvdRoot\""/} 132NDRUN_PRECHK_DVDROOT=${NDRUN_PRECHK_DVDROOT//" "/} 133NDRUN_PRECHK_DVDROOT=${NDRUN_PRECHK_DVDROOT//" "/} 134 135# ------------------------------------------------------------------------------ 136# CHECK LIB(NWC24 = use RevoEX, SO) in ELF for identify the extension associated 137# ------------------------------------------------------------------------------ 138if grep -qa "__NWC24Version" "${NDRUN_PRECHK_ELF_NAME}" 139then 140 IS_LINK_NWC24="TRUE" 141else 142 IS_LINK_NWC24="FALSE" 143fi 144 145if grep -qa "__SOVersion" "${NDRUN_PRECHK_ELF_NAME}" 146then 147 IS_LINK_SO="TRUE" 148else 149 IS_LINK_SO="FALSE" 150fi 151 152# ------------------------------------------------------------------------------ 153# PRINT ENV 154# ------------------------------------------------------------------------------ 155echo "**********************************************************************" 156echo "* YOUR BOOT ENVIRONMENT" 157echo "**********************************************************************" 158if [ ."$NDRUN_PRECHK_FW_TYPE" = '.standard' ] ; then # NOT USE extension 159 echo "* firmware version : ${NDRUN_PRECHK_RVLBIN_FW_VERSION}.x.x (for standard)" 160elif [ ."$NDRUN_PRECHK_FW_TYPE" = '.NET' ] ; then # USE extension 161 echo "* firmware version : ${NDRUN_PRECHK_RVLBIN_FW_VERSION}.x.x (for extension)" 162else 163 echo "* firmware version : ${NDRUN_PRECHK_RVLBIN_FW_VERSION}.x.x (unexpected version)" 164fi 165 166if [ ."$I_MEM2_SIZE" = ".67108864(0x04000000)" ] ; then 167 echo "* mem2 size : 64 MB" 168else 169 echo "* mem2 size : 128 MB" 170fi 171echo "* country code : ${NDRUN_PRECHK_RVLBIN_REGION}" 172#echo "* parental :" 173echo "* DvdRoot : ${NDRUN_PRECHK_DVDROOT}" 174echo "**********************************************************************" 175echo "" 176 177# ------------------------------------------------------------------------------ 178# JUDGMENT 179# ------------------------------------------------------------------------------ 180if [ ."$NDRUN_PRECHK_FW_TYPE" = '.standard' ] ; then # NOT USE extension 181 if [ ."$IS_LINK_NWC24" = '.TRUE' -o ."$IS_LINK_SO" = '.TRUE' ] ; then 182 echo 183 echo "WARNNING >>> Wrong firmware version." 184 echo 185 echo "This ELF is a program only for extension." 186 echo "You must not use the firmware for standard." 187 echo "* Expected : ${FW_FOR_EXTENSION}.x.x" 188 echo "* Actual : ${NDRUN_PRECHK_RVLBIN_FW_VERSION}.x.x" 189 echo 190 echo "If you want to continue, please press RETURN" 191 read 192 fi 193elif [ ."$NDRUN_PRECHK_FW_TYPE" = '.NET' ] ; then # USE extension 194 if [ ."$IS_LINK_NWC24" = '.FALSE' -a ."$IS_LINK_SO" = '.FALSE' ] ; then 195 echo 196 echo "WARNNING >>> Wrong firmware version." 197 echo 198 echo "This ELF is a program only for standard." 199 echo "You must not use the firmware for extension." 200 echo "* Expected : ${FW_FOR_STANDARD}.x.x" 201 echo "* Actual : ${NDRUN_PRECHK_RVLBIN_FW_VERSION}.x.x" 202 echo 203 echo "If you want to continue, please press RETURN" 204 read 205 fi 206fi 207 208