#! /usr/bin/env python # coding: utf8 # Copyright CERN, 2011 # Author: Matthieu Cattin # 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 * """ test26: Read FMC EEPROM Note: Requires test00.py to run first to load the firmware! """ def main (default_directory = '.'): # Constants declaration TEST_NB = 26 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("Read FMC EEPROM and dump it to %s"%EEPROM_BIN_FILENAME) # Read entire EEPROM eeprom_data_read = fmc.sys_i2c_eeprom_read(0, EEPROM_SIZE) # Write EEPROM data to binary file f_eeprom = open(EEPROM_BIN_FILENAME, "wb") for byte in eeprom_data_read: f_eeprom.write(chr(byte)) #print "0x%04X" % byte f_eeprom.close() 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()