/********************************************************************************************************************** * COPYRIGHT * ------------------------------------------------------------------------------------------------------------------- * \verbatim * * � Copyright 2009-2012 Texas Instruments Incorporated. All rights reserved. * * \endverbatim * ------------------------------------------------------------------------------------------------------------------- * FILE DESCRIPTION * ------------------------------------------------------------------------------------------------------------------- * * Project: Hercules� ARM� Safety MCUs - F021 Flash API * Version: v2.01.01 Build(000830) * Build Date: 2014-10-21 * * File: Registers.h * * Description: A complete mapping of the F021 Flash Registers facilitating named access to the F021 Flash Registers. * This file will select the appropriate definitions based on selected compile Endianness. *--------------------------------------------------------------------------------------------------------------------- * Author: John R Hall *--------------------------------------------------------------------------------------------------------------------- * *********************************************************************************************************************/ #ifndef REGISTERS_H_ #define REGISTERS_H_ /********************************************************************************************************************** * INCLUDES *********************************************************************************************************************/ /*LDRA_NOANALYSIS*/ /*LDRA_INSPECTED 42 S MR: 3.5 "Necessary for FMC register definitions" */ /*LDRA_INSPECTED 74 S MR: 18.4 "Necessary for FMC register definitions" */ #if defined(_LITTLE_ENDIAN) #include "../FlashAPI/Registers_FMC_LE.h" #else #include "Registers_FMC_BE.h" #endif /*LDRA_ANALYSIS*/ /* Certain non released devices did not contain this information in the FMC */ #if defined(_BIG_ENDIAN) && defined(__TI_TMS470_V7M3__) #define WIDTH_MAIN_BANK 0x10U; #define WIDTH_MAIN_ECC 0x2U; #define WIDTH_EEPROM_BANK 0x10U; #define WIDTH_EEPROM_ECC 0x2U; #else /* Macro to get the width of the Data on Main Banks */ #define WIDTH_MAIN_BANK ((uint8_t)(( (uint32_t)FLASH_CONTROL_REGISTER->FcfgBank.FCFG_BANK_BITS.MAIN_BANK_WIDTH \ & (uint32_t)0x1C0U) >> 3U)) /* Macro to get the width of the ECC on Main Banks */ #define WIDTH_MAIN_ECC ((uint8_t)(( (uint32_t)FLASH_CONTROL_REGISTER->FcfgBank.FCFG_BANK_BITS.MAIN_BANK_WIDTH \ & (uint32_t)0x038U) >> 3U)) /* Macro to get the width of the Data on EEPROM Bank */ #define WIDTH_EEPROM_BANK ((uint8_t)(( (uint32_t)FLASH_CONTROL_REGISTER->FcfgBank.FCFG_BANK_BITS.EE_BANK_WIDTH \ & (uint32_t)0x0C0U) >> 3U)) /* Macro to get the width of the ECC on EEPROM Bank */ #define WIDTH_EEPROM_ECC ((uint8_t)(( (uint32_t)FLASH_CONTROL_REGISTER->FcfgBank.FCFG_BANK_BITS.EE_BANK_WIDTH \ & (uint32_t)0x018U) >> 3U)) #endif /* Typedef pointer to Fapi_FmcRegistersType */ typedef Fapi_FmcRegistersType* pFapi_FmcRegistersType; /* Typedef byte pointer to FWPWRITEx Registers */ typedef volatile uint8_t FwpWriteByteAccessorType; /* Typedef dword pointer to FWPWRITEx Registers */ typedef volatile uint32_t FwpWriteDWordAccessorType; /* Offset from FMC base address to the start of the FWPWRITEx registers */ #define FWP_WRITE_OFFSET 0x120U /* Macro that creates a byte accessor pointer to the FWPWRITEx registers */ #define FWPWRITE_BYTE_ACCESSOR_ADDRESS ((FwpWriteByteAccessorType*)(F021_CPU0_REGISTER_ADDRESS + 0x120U)) /* Macro that creates a byte accessor pointer to the FWPWRITE_ECC register */ #define FWPWRITE_ECC_BYTE_ACCESSOR_ADDRESS ((FwpWriteByteAccessorType*)(F021_CPU0_REGISTER_ADDRESS + 0x140U)) /* Macro that creates a dword accessor pointer to the FWPWRITEx registers */ #define FWPWRITE_DWORD_ACCESSOR_ADDRESS ((FwpWriteDWordAccessorType*)(F021_CPU0_REGISTER_ADDRESS + 0x120U)) /* Macro that creates an object pointer to the start of the FMC registers */ #define FLASH_CONTROL_REGISTER ((pFapi_FmcRegistersType)(F021_CPU0_REGISTER_ADDRESS)) /* Macro that defines the base address for the FMC registers structure */ #define F021_CPU0_BASE_ADDRESS ((Fapi_FmcRegistersType*)F021_CPU0_REGISTER_ADDRESS) #endif /* REGISTERS_H_ */ /********************************************************************************************************************** * END OF FILE: Registers.h *********************************************************************************************************************/