Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
C
Conv TTL Blocking
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
5
Issues
5
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
image/svg+xml
Discourse
Discourse
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Projects
Conv TTL Blocking
Commits
b4e60b40
Commit
b4e60b40
authored
Jan 29, 2018
by
Denia Bouhired-Ferrag
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
initial remote multiboot test. WARNING, contains binaries to be deleted
parent
9a4de25d
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
214 additions
and
0 deletions
+214
-0
crate_list.txt
software/gwupdate/crate_list.txt
+1
-0
golden-v0.3_release-v4.1.bin
software/gwupdate/gw-blo/golden-v0.3_release-v4.1.bin
+0
-0
remote-mass-gw-upgrade.py
software/gwupdate/remote-mass-gw-upgrade.py
+213
-0
No files found.
software/gwupdate/crate_list.txt
0 → 100644
View file @
b4e60b40
cfvm-774-elma3 admin ADMIN 3
\ No newline at end of file
software/gwupdate/gw-blo/golden-v0.3_release-v4.1.bin
0 → 100644
View file @
b4e60b40
File added
software/gwupdate/remote-mass-gw-upgrade.py
0 → 100644
View file @
b4e60b40
#!/usr/bin/python
#===============================================================================
# CERN (BE-CO-HT)
# Pulse test script
#===============================================================================
# author: Denia Bouhired(t.stana@cern.ch)
#
# date of creation:
#
# version: 1.0
#
# description:
# This script is used during manual upgrade of conv-ttl boards.
# It is used to:
# - Scan barcode of board
# - Read hw version
# - Read gw version
# - Read unique temperature chip ID
# - Output information on log file
#
#===============================================================================
# GNU LESSER GENERAL PUBLIC LICENSE
#===============================================================================
# This source file is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by the
# Free Software Foundation; either version 2.1 of the License, or (at your
# option) any later version. This source is distributed in the hope that it
# will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details. You should have
# received a copy of the GNU Lesser General Public License along with this
# source; if not, download it from http://www.gnu.org/licenses/lgpl-2.1.html
#===============================================================================
#===============================================================================
# TODO:
#===============================================================================
import
sys
sys
.
path
.
append
(
"../ei2c"
)
sys
.
path
.
append
(
"../multiboot/lib-multiboot"
)
import
time
from
ei2c
import
*
from
ei2cexcept
import
*
import
binascii
import
re
import
subprocess
import
os
import
traceback
from
xil_multiboot
import
*
##-------------------------------------------------------------------------------------------------
## Method to turn on the VME crate.
##-------------------------------------------------------------------------------------------------
## It calls the men-on script which sends the necessary SMTP commands to the ELMA crate to turn on
## power to the VME backplane.
##-------------------------------------------------------------------------------------------------
def
men_on
():
print
(
"Switching on the ELMA crate"
)
subprocess
.
call
(
"./men-on"
,
shell
=
True
,
stdout
=
None
,
stderr
=
None
)
time
.
sleep
(
1
)
##-------------------------------------------------------------------------------------------------
## Method to turn off the VME crate.
##-------------------------------------------------------------------------------------------------
## It calls the men-off script which sends the necessary SMTP commands to the ELMA crate to turn off
## power to the VME backplane.
##-------------------------------------------------------------------------------------------------
def
men_off
():
print
(
"Switching off the ELMA crate"
)
subprocess
.
call
(
"./men-off"
,
shell
=
True
,
stdout
=
None
,
stderr
=
None
)
time
.
sleep
(
1
)
##-------------------------------------------------------------------------------------------------
# Define registers memory address
IDREG
=
0x00
# Board ID register
SRREG
=
0x04
# Status register
UIDREGLS
=
0xac
# 1-wire chip Unique ID - LSB
UIDREGMS
=
0xb0
# 1-wire chip Unique ID - MSB
# Status register offsets
CSR_GWVERS_OFS
=
0
CSR_HWVERS_OFS
=
22
# Target version
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"
##-------------------------------------------------------------------------------------------------
## Method to check hardware and gateware version
##-------------------------------------------------------------------------------------------------
def
gw_hw_version
():
hwvers
=
(
elma
.
read
(
slot
,
SRREG
)
&
0x0fc00000
)
>>
CSR_HWVERS_OFS
gwvers
=
(
elma
.
read
(
slot
,
SRREG
)
&
0xFF
)
>>
CSR_GWVERS_OFS
#print ("maj is %d, min is %d" % int(hwvers >> 2), int(hwvers & 0x03))
hwvers
=
int
(
hwvers
>>
2
)
+
float
(
hwvers
&
0x03
)
/
10
gwvers
=
int
(
gwvers
>>
4
)
+
float
(
gwvers
&
0xF
)
/
10
return
hwvers
,
gwvers
;
##-------------------------------------------------------------------------------------------------
## Main "method" of upgrade module
##-------------------------------------------------------------------------------------------------
if
__name__
==
"__main__"
:
crate_list
=
"crate_list.txt"
fin
=
open
(
'./crate_list.txt'
,
'r'
)
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
)
elma
.
open
()
# Get board ID and gateware version, fail if incorrect
bid
=
elma
.
get_bid
(
slot
)
(
hwvers
,
gwvers
)
=
gw_hw_version
()
upgrade
=
True
#Check whether upgrade is required
if
(
gwvers
==
gwvers_target
):
upgrade
=
False
break
baseaddr
=
0x100
if
(
bid
==
"TBLO"
):
gw_path
=
"./gw-blo/"
elif
(
bid
==
"T485"
):
gw_path
=
"./gw-rs485/"
# if (gwvers == 0xff):
# baseaddr = 0x300
# elif ((gwvers >= 0x10) and (gwvers <= 0x22)) or \
# (((gwvers & 0xf0) == 0x00) and (gwvers < 0x02)):
# baseaddr = 0x040
if
upgrade
==
True
mb
=
XilMultiboot
(
ELMA_I2C_MULTIBOOT
,
elma
,
slot
,
baseaddr
,
""
)
mb
.
set_bitstream_file
(
gw_path
+
gw_file
)
multiboot_addr
=
0x170000
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
)
# 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
time
.
sleep
(
10
)
(
hwvers_new
,
gwvers_new
)
=
gw_hw_version
()
if
(
hwvers_new
==
0.0
):
hwvers_new_str
=
"<4.0"
else
:
hwvers_new_str
=
str
(
hwvers_new
)
IDMS
=
elma
.
read
(
slot
,
UIDREGMS
)
IDLS
=
elma
.
read
(
slot
,
UIDREGLS
)
#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"
ret
=
subprocess
.
call
([
"ls ./log | grep "
+
fname
],
shell
=
True
,
stdout
=
None
,
stderr
=
None
)
#print ("%d" % ret)
if
(
ret
!=
0
):
f
=
open
(
"./log/"
+
fname
,
"w"
)
f
.
write
(
"
\n
"
)
f
.
write
(
"CONV-TTL-XXX Upgrade log created on
%
s
\n
"
%
time
.
strftime
(
"
%
Y-
%
m-
%
d-
%
Hh
%
Mm
%
Ss"
,
time
.
localtime
()))
f
.
write
(
"---------------------------------------------------------------------------------
\n
"
)
f
.
write
(
"* Target version is (v
%2.1
f)
\n
"
%
gwvers_target
)
f
.
write
(
"* Hardware (v0.0) means board is (v3.0) or earlier
\n
"
)
f
.
write
(
"
\n
"
)
f
.
write
(
"---------------------------------------------------------------------------------
\n
"
)
f
.
write
(
"Crate name| Slot |Barcode | PCB ID | HW version | Old gw version | New gw version
\n
"
)
f
.
write
(
"---------------------------------------------------------------------------------
\n
"
)
f
.
close
()
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.1
f)
\t
(
%2.1
f)
\t
(
%2.1
f)
\n
"
%
(
ip
,
slot
,
sn1
,
IDMS
,
IDLS
,
hwvers
,
gwvers
,
gwvers_new
)
)
f
.
close
()
men_off
()
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment