/****************************************************************************** * * Title : flashUtility.h * Version 0.0 * * Description: header file * Related files: flashUtility.c * * Author: Lukas Tomasek, tomasekl@fzu.cz * ******************************************************************************/ #ifndef FLASH_UTILITY_H /* multiple inclusion protection */ #define FLASH_UTILITY_H /****************************************************************************** * Header files * ******************************************************************************/ #include "hostDefinitions.h" /****************************************************************************** * Definitions * ******************************************************************************/ #define FLASH_MEMORY_SIZE 0x80000 /* 512kB */ #define FLASH_SECTOR_SIZE 0x1000 /* 4kB */ #define NUMBER_OF_SECTORS (FLASH_MEMORY_SIZE/FLASH_SECTOR_SIZE) /* 128 sectors 4kB */ #define SECTOR_ADDR(sectorNumber) ((FLASH_SECTOR_SIZE)*(sectorNumber)) /* start sector relative address */ /* * Time intervals (flash type specs) */ #define CHIP_ERASE_TIME_ms 100 /* max. chip-erase time in miliseconds */ #define SECTOR_ERASE_TIME_ms (2*25) /* max. sector-erase time in miliseconds*2 for sure */ #define BYTE_PROGRAM_TIME_micros 20 /* max. byte-program time in MICROseconds!! */ /* byte program timeout in seconds (only PROGRAM constant/variable, NOT flash spec) */ #define FLASH_TIMEOUT 5.0 /* seconds */ /* * FPGA Program Flash memory - 8bit size registers - NOT DIRECT VME access!!! * Access through FPGA Control registers!! */ #define FPGA_FLASH_0_BOTTOM_REL_ADDR 0xE00000 #define FPGA_FLASH_1_BOTTOM_REL_ADDR 0xE80000 #define FPGA_FLASH_2_BOTTOM_REL_ADDR 0xF00000 #define MDSP_FLASH_BOTTOM_REL_ADDR CE1_BASE // should be BOOT_ROM_BASE - TestStand doesn't have access now! /****************************************************************************** * Global Function Declarations * ******************************************************************************/ ERROR_ID chipErase(unsigned char slotNumber, unsigned int flashBaseAddr); ERROR_ID chipEraseHpi(unsigned char slotNumber); ERROR_ID sectorErase(unsigned char slotNumber, unsigned int sectorBaseAddr); ERROR_ID sectorEraseHpi(unsigned char slotNumber, unsigned int sectorBaseAddr); ERROR_ID writeByteToFlash(unsigned char slotNumber, UINT32 address, UINT8 data); ERROR_ID writeByteToFlashHpi(unsigned char slotNumber, UINT32 address, UINT8 data); ERROR_ID writeBlockToFlash(unsigned char slotNumber, UINT32 address, UINT8 *data, unsigned int numberOfBytes); ERROR_ID writeBlockToFlashHpi(unsigned char slotNumber, UINT32 address, UINT8 *data, unsigned int numberOfBytes); ERROR_ID readByteFromFlash(unsigned char slotNumber, UINT32 address, UINT8 *value, int updateAddress); ERROR_ID readBlockFromFlash(unsigned char slotNumber, UINT32 address, UINT8 *buffer, unsigned int numberOfBytes); /******************************************************************************/ #endif /* FLASH_UTILITY_H */