diff --git a/recipes-app/fpgaversion.sh b/recipes-app/fpgaversion.sh new file mode 100755 index 0000000000000000000000000000000000000000..936f8580edbd87343a6eef667bf4ca480e77c9d5 --- /dev/null +++ b/recipes-app/fpgaversion.sh @@ -0,0 +1,64 @@ +#!/bin/bash + +PATH_MAPT=/opt/fofb-opcua-server/app.mapt + +function read_reg () { + # ARGS: regname + + # Fix name for grep + fname="^${1} " + + # Grep MAPT file for reg name + l=$(grep -e ${fname} ${PATH_MAPT}) + + if [[ -z "$l" ]]; then + echo "Could not find register named $1" >&2 + exit 1 + fi + + + # Retrieve fields + raddr=$(awk '{print $3}' <<<$l ) + rsize=$(awk '{print $4}' <<<$l ) + + # Read register + data=$(devmem $raddr) + + echo $((data)) +} + +function get_appname () { + + appcode=$(read_reg APP.ID) + + if [[ $appcode -eq 0x507E17A0 ]]; then + echo cellnode + return + fi + + + if [[ $appcode -eq 0x507E1722 ]]; then + echo centralnode + return + fi + + printf "Application ID not recognized: %X\n" $appcode >&2 + echo \#NA + return 1 +} + +function get_version () { + + vers=$(read_reg BSP.PRJ_VERSION) + changes=$(($vers & 0xFF)) + patch=$(( $(($vers>>8)) & 0xFF)) + minor=$(( $(($vers>>16)) & 0xFF)) + major=$(( $(($vers>>24)) & 0xFF)) + + shasum=$(printf "%x" $(read_reg BSP.PRJ_SHASUM)) + + echo "${major}.${minor}.${patch}-${changes}-(${shasum})" +} + +printf "%10s %s\n" $(get_appname) $(get_version) +printf "SynthTime: %s\n" "$(date -d"@$(read_reg BSP.PRJ_TIMESTAMP)")"