Commit b3c1c3f4 authored by Matthieu Cattin's avatar Matthieu Cattin

test33: Add test33 to write a binary file to the eeprom.

parent 6a43f358
#! /usr/bin/env python
# coding: utf8
# Copyright CERN, 2013
# Author: Matthieu Cattin <matthieu.cattin@cern.ch>
# Licence: GPL v2 or later.
# Website: http://www.ohwr.org
# Last modifications: 7/6/2012
# Import system modules
import sys
import time
import os
# Add common modules and libraries location to path
sys.path.append('../../../')
sys.path.append('../../../gnurabbit/python/')
sys.path.append('../../../common/')
sys.path.append('../../fmceeprom/python/')
# Import common modules
from ptsexcept import *
from fmc_eeprom import *
import rr
# Import specific modules
from fmc_adc_spec import *
from fmc_adc import *
"""
test33: Write FMC EEPROM
Note: Requires test00.py to run first to load the firmware!
"""
def main (default_directory = '.'):
# Constants declaration
TEST_NB = 33
EXPECTED_BITSTREAM_TYPE = 0x1
EEPROM_BIN_FILENAME = "eeprom_content.out"
EEPROM_BIN_FILENAME = os.path.join(default_directory, EEPROM_BIN_FILENAME)
EEPROM_SIZE = 8192 # in Bytes
start_test_time = time.time()
print "================================================================================"
print "Test%02d start\n" % TEST_NB
# SPEC object declaration
print "Loading hardware access library and opening device.\n"
spec = rr.Gennum()
# Carrier object declaration (SPEC board specific part)
# Used to check that the firmware is loaded.
try:
carrier = CFmcAdc100mSpec(spec, EXPECTED_BITSTREAM_TYPE)
except FmcAdc100mSpecOperationError as e:
raise PtsCritical("Carrier init failed, test stopped: %s" % e)
# Mezzanine object declaration (FmcAdc100m14b4cha board specific part)
try:
fmc = CFmcAdc100m(spec)
except FmcAdc100mOperationError as e:
raise PtsCritical("Mezzanine init failed, test stopped: %s" % e)
try:
print("Write FMC EEPROM with data from file: %s"%EEPROM_BIN_FILENAME)
# Read binary file
f_bin_eeprom = open(EEPROM_BIN_FILENAME, "rb")
eeprom_data = []
byte = f_bin_eeprom.read(1) # reads one byte
while byte:
eeprom_data.append(ord(byte))
byte = f_bin_eeprom.read(1) # reads one byte
f_bin_eeprom.close()
ask = "";
while ((ask != "Y") and (ask != "N")) :
ask = raw_input("Do you want to continue and erase/rewrite the EEPROM content? [y,n]")
ask = ask.upper()
print " "
if ask == 'Y':
print "Erase EEPROM content.\n"
eeprom_dummy_data = [0x0] * EEPROM_SIZE
fmc.sys_i2c_eeprom_write(eeprom_dummy_data)
print "Write EEPROM content.\n"
if eeprom_data != []:
fmc.sys_i2c_eeprom_write(eeprom_data)
except(FmcAdc100mOperationError) as e:
raise PtsError("Test failed: %s" % e)
print ""
print "==> End of test%02d" % TEST_NB
print "================================================================================"
end_test_time = time.time()
print "Test%02d elapsed time: %.2f seconds\n" % (TEST_NB, end_test_time-start_test_time)
if __name__ == '__main__' :
main()
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