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 ...@@ -88,7 +88,8 @@ gwvers_target = 4.1
gwvers_gold_target = 0.3 gwvers_gold_target = 0.3
#gateware to write #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 ## Method to check hardware and gateware version
...@@ -112,17 +113,20 @@ if __name__ == "__main__": ...@@ -112,17 +113,20 @@ if __name__ == "__main__":
fin = open ('./crate_list.txt', 'r') fin = open ('./crate_list.txt', 'r')
for crate_line in fin for crate_line in fin:
#Split each line into list of strings #Split each line into list of strings
crate_info=crate_line.split() crate_info=crate_line.split()
# Get the IP, user and password for the ELMA crate from ei2cdefine.py # Get the IP, user and password for the ELMA crate from ei2cdefine.py
ip = crate_info[0] ip = crate_info[0]
user = crate_info[1] user = crate_info[1]
pwd = crate_info[2] pwd = crate_info[2]
slot = int(crate_info[3]) slot = int(crate_info[3])
elma = EI2C(ip, user, pwd) elma = EI2C(ip, user, pwd)
try:
elma.open() elma.open()
print ("---------------------------------")
print ("Connecting to crate %s ... \n" % ip)
# Get board ID and gateware version, fail if incorrect # Get board ID and gateware version, fail if incorrect
bid = elma.get_bid(slot) bid = elma.get_bid(slot)
(hwvers, gwvers) = gw_hw_version() (hwvers, gwvers) = gw_hw_version()
...@@ -131,8 +135,6 @@ if __name__ == "__main__": ...@@ -131,8 +135,6 @@ if __name__ == "__main__":
#Check whether upgrade is required #Check whether upgrade is required
if (gwvers == gwvers_target): if (gwvers == gwvers_target):
upgrade=False upgrade=False
break
baseaddr = 0x100 baseaddr = 0x100
if (bid == "TBLO"): if (bid == "TBLO"):
...@@ -144,22 +146,20 @@ if __name__ == "__main__": ...@@ -144,22 +146,20 @@ if __name__ == "__main__":
# elif ((gwvers >= 0x10) and (gwvers <= 0x22)) or \ # elif ((gwvers >= 0x10) and (gwvers <= 0x22)) or \
# (((gwvers & 0xf0) == 0x00) and (gwvers < 0x02)): # (((gwvers & 0xf0) == 0x00) and (gwvers < 0x02)):
# baseaddr = 0x040 # 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 = XilMultiboot(ELMA_I2C_MULTIBOOT, elma, slot, baseaddr, "")
mb.set_bitstream_file(gw_path+gw_file) mb.set_bitstream_file(gw_path+gw_file)
multiboot_addr = 0x170000 multiboot_addr = "0x0"
multiboot_addr = int(multiboot_addr, 16) multiboot_addr = int(multiboot_addr, 16)
mb.write(multiboot_addr) mb.write(multiboot_addr)
mb.iprog(multiboot_addr) mb.iprog(multiboot_addr)
if (upgrade== True):
# Turn off the VME crate # 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 # 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) time.sleep(10)
...@@ -173,16 +173,26 @@ if __name__ == "__main__": ...@@ -173,16 +173,26 @@ if __name__ == "__main__":
IDMS = elma.read(slot, UIDREGMS) IDMS = elma.read(slot, UIDREGMS)
IDLS = elma.read(slot, UIDREGLS) 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 #Generate log file
#subprocess.call("cd./log; chmod 777 log", shell=True, stdout=None, stderr=None)
# Generate output file named according to current time # 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) ret = subprocess.call(["ls ./log | grep " + fname], shell=True, stdout=None, stderr=None)
#print ("%d" % ret) print ("%d" % ret)
if (ret != 0): if (ret != 0):
f = open("./log/" + fname, "w") f = open("./log/" + fname, "w")
...@@ -201,11 +211,11 @@ if __name__ == "__main__": ...@@ -201,11 +211,11 @@ if __name__ == "__main__":
print("Upgrade log can be found in ./log/%s \n" % fname) print("Upgrade log can be found in ./log/%s \n" % fname)
f = open("./log/" + fname, "a") 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() 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