Commit 1310345b authored by Denia Bouhired-Ferrag's avatar Denia Bouhired-Ferrag

Final remote upgrade script

parent 67815dc6
......@@ -88,7 +88,8 @@ gwvers_target = 4.1
gwvers_gold_target = 0.3
#gateware to write
gw_file="golden-v"+str(gwvers_gold_target)+"_release-v"+str(gwvers_target".bin"
#gw_file="golden-v"+str(gwvers_gold_target)+".bin"
gw_file="golden-v"+str(gwvers_gold_target)+"_release-v"+str(gwvers_target)+".bin"
##-------------------------------------------------------------------------------------------------
## Method to check hardware and gateware version
......@@ -112,17 +113,20 @@ if __name__ == "__main__":
fin = open ('./crate_list.txt', 'r')
for crate_line in fin
for crate_line in fin:
#Split each line into list of strings
crate_info=crate_line.split()
# Get the IP, user and password for the ELMA crate from ei2cdefine.py
ip = crate_info[0]
user = crate_info[1]
pwd = crate_info[2]
slot = int(crate_info[3])
elma = EI2C(ip, user, pwd)
try:
elma.open()
print ("---------------------------------")
print ("Connecting to crate %s ... \n" % ip)
# Get board ID and gateware version, fail if incorrect
bid = elma.get_bid(slot)
(hwvers, gwvers) = gw_hw_version()
......@@ -131,8 +135,6 @@ if __name__ == "__main__":
#Check whether upgrade is required
if (gwvers == gwvers_target):
upgrade=False
break
baseaddr = 0x100
if (bid == "TBLO"):
......@@ -144,22 +146,20 @@ if __name__ == "__main__":
# elif ((gwvers >= 0x10) and (gwvers <= 0x22)) or \
# (((gwvers & 0xf0) == 0x00) and (gwvers < 0x02)):
# baseaddr = 0x040
if upgrade == True
if upgrade==True:
print("Upgrade file is %s \n" % gw_path+gw_file)
mb = XilMultiboot(ELMA_I2C_MULTIBOOT, elma, slot, baseaddr, "")
mb.set_bitstream_file(gw_path+gw_file)
multiboot_addr = 0x170000
multiboot_addr = "0x0"
multiboot_addr = int(multiboot_addr, 16)
mb.write(multiboot_addr)
mb.iprog(multiboot_addr)
if (upgrade== True):
# Turn off the VME crate
ret = subprocess.call("snmpset -v2c -c "+ pwd +" "+ ip +" 1.3.6.1.4.1.37968.1.1.7.2.1.3.1 i 1", shell=True, stdout=None, stderr=None)
#ret = subprocess.call("snmpset -v2c -c "+ pwd +" "+ ip +" 1.3.6.1.4.1.37968.1.1.7.2.1.3.1 i 1", shell=True, stdout=None, stderr=None)
# Turn on the VME crate
ret = subprocess.call("snmpset -v2c -c "+ pwd +" "+ ip +" 1.3.6.1.4.1.37968.1.1.7.2.1.3.1 i 0", shell=True, stdout=None, stderr=None
#ret = subprocess.call("snmpset -v2c -c "+ pwd +" "+ ip +" 1.3.6.1.4.1.37968.1.1.7.2.1.3.1 i 0", shell=True, stdout=None, stderr=None)
time.sleep(10)
......@@ -173,16 +173,26 @@ if __name__ == "__main__":
IDMS = elma.read(slot, UIDREGMS)
IDLS = elma.read(slot, UIDREGLS)
except BadHostnameError:
print("... Bad crate name ... \n")
(IDMS, IDLS, hwvers_new_str, gwvers, gwvers_new) = (0,0,"BadHostname",0,0)
except BadUsernameError:
print("... Bad user name ... \n")
(IDMS, IDLS, hwvers_new_str, gwvers, gwvers_new) = (0,0,"BadUsername",0,0)
except BadPasswordError:
print("... Bad password ... \n")
(IDMS, IDLS, hwvers_new_str, gwvers, gwvers_new) = (0,0,"BadPassword",0,0)
except NAckError:
print("... Board not responding... \n")
(IDMS, IDLS, hwvers_new_str, gwvers, gwvers_new) = (0,0,"NAckError",0,0)
#Generate log file
#subprocess.call("cd./log; chmod 777 log", shell=True, stdout=None, stderr=None)
# Generate output file named according to current time
fname = time.strftime("gw-upgrade-%Y-%m-%d", time.localtime()) + ".txt"
fname = time.strftime("remote-gw-upgrade-%Y-%m-%d", time.localtime()) + ".txt"
ret = subprocess.call(["ls ./log | grep " + fname], shell=True, stdout=None, stderr=None)
#print ("%d" % ret)
print ("%d" % ret)
if (ret != 0):
f = open("./log/" + fname, "w")
......@@ -201,11 +211,11 @@ if __name__ == "__main__":
print("Upgrade log can be found in ./log/%s \n" % fname)
f = open("./log/" + fname, "a")
f.write("%s \t %d \t %s \t %d%d \t (%2.1f) \t (%2.1f) \t (%2.1f) \n" % (ip, slot, sn1, IDMS, IDLS, hwvers, gwvers, gwvers_new) )
f.write("%s \t %d \t %x%x \t (%s) \t (%2.1f) \t (%2.1f) \n" % (ip, slot, IDMS, IDLS, hwvers_new_str, gwvers, gwvers_new) )
f.close()
men_off()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment