tao_z
2022-05-25 1044ba0d2286698d0da28112bffc0f114bef2134
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
/**
 ******************************************************************************
 * @file    EEPROM_Emul/Porting/STM32L4/flash_interface.h
 * @author  MCD Application Team
 * @brief   This file contains all the functions prototypes for the EEPROM
 *          emulation flash interface.
 ******************************************************************************
 * @attention
 *
 * <h2><center>&copy; Copyright (c) 2020 STMicroelectronics.
 * All rights reserved.</center></h2>
 *
 * This software component is licensed by ST under BSD 3-Clause license,
 * the "License"; You may not use this file except in compliance with the
 * License. You may obtain a copy of the License at:
 *                        opensource.org/licenses/BSD-3-Clause
 *
 ******************************************************************************
 */
 
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __FLASH_INTERFACE_H
#define __FLASH_INTERFACE_H
 
#ifdef __cplusplus
extern "C"
{
#endif
 
/* Includes ------------------------------------------------------------------*/
#include "xl_flash.h"
#include "eeprom_emul_types.h"
/** @addtogroup EEPROM_Emulation
 * @{
 */
 
/* Exported types ------------------------------------------------------------*/
/* Exported macro ------------------------------------------------------------*/
/* Exported functions ------------------------------------------------------- */
 
/* Private types -------------------------------------------------------------*/
/* Private constants ---------------------------------------------------------*/
/** @addtogroup EEPROM_Private_Constants
 * @{
 */
 
/** @addtogroup Private_Other_Constants
 * @{
 */
#define __weak __attribute__((weak))
 
#if defined(__GNUC__) || defined(__IAR_SYSTEMS_ICC__)
 
#define __disable_irq() __asm volatile("cpsid i")
#define __enable_irq() __asm volatile("cpsie i")
 
#endif
 
#define FLASH_BASE 0x000
#define FLASH_PAGE_SIZE 0x400
#define BANK_SIZE 0x40000 /*!< Alias to FLASH_BANK_SIZE definition from XL6600 */
#define EE_ACCESS_32BITS  /*!< Enable EEPROM 32bits R/W functions, only valid for flash allowing 64bits access*/
 
/* Page state header */
#define EE_PAGESTAT_ERASED (uint64_t)0xFFFFFFFFFFFFFFFFU  /*!< State saved in 1st,2nd,3rd,4th data type of page header */
#define EE_PAGESTAT_RECEIVE (uint64_t)0xAAAAAAAAAAAAAAAAU /*!< State saved in 1st data type of page header */
#define EE_PAGESTAT_ACTIVE (uint64_t)0xAAAAAAAAAAAAAAAAU  /*!< State saved in 2nd data type of page header */
#define EE_PAGESTAT_VALID (uint64_t)0xAAAAAAAAAAAAAAAAU   /*!< State saved in 3rd data type of page header */
#define EE_PAGESTAT_ERASING (uint64_t)0xAAAAAAAAAAAAAAAAU /*!< State saved in 4th data type of page header */
 
/* Description of the 8 Bytes (64 bits) element in flash   */
/* Bit:  63                  32  31      16  15         0  */
/*       <--- Data Value ----->  <-unused->  <-VirtAddr->  */
#define EE_ELEMENT_SIZE 8U              /*!< Size of element in Bytes */
#define EE_ELEMENT_TYPE uint64_t        /*!< Type of element */
#define EE_VIRTUALADDRESS_TYPE uint16_t /*!< Type of Virtual Address */
#define EE_VIRTUALADDRESS_SHIFT 0U      /*!< Bits Shifting to get Virtual Address in element */
#define EE_CRC_TYPE uint16_t            /*!< Type of Crc */
#define EE_CRC_SHIFT 16U                /*!< Bits Shifting to get Crc in element */
#define EE_DATA_TYPE uint32_t           /*!< Type of Data */
#define EE_DATA_SHIFT 32U               /*!< Bits Shifting to get Data value in element */
#define EE_MASK_VIRTUALADDRESS (uint64_t)0x000000000000FFFFU
#define EE_MASK_CRC (uint64_t)0x00000000FFFF0000U
#define EE_MASK_DATA (uint64_t)0xFFFFFFFF00000000U
#define EE_MASK_FULL (uint64_t)0xFFFFFFFFFFFFFFFFU
#define EE_POLY_CRC16 (0x8005)
  /**
   * @}
   */
 
  /**
   * @}
   */
 
  /* Private macro -------------------------------------------------------------*/
  /** @addtogroup EEPROM_Private_Macros
   * @{
   */
 
  /**
   * @}
   */
 
  /**
   * @}
   */
 
  /* Private functions ---------------------------------------------------------*/
  /** @addtogroup EEPROM_Private_Functions
   * @{
   */
  EE_Status FI_WriteDoubleWord(uint32_t Address, uint64_t Data) _Init_Flash_Ram;
  EE_Status FI_PageErase(uint32_t Page, uint16_t NbPages) _Init_Flash_Ram;
  EE_Status FI_PageErase_IT(uint32_t Page, uint16_t NbPages) _Init_Flash_Ram;
  EE_Status FI_DeleteCorruptedFlashAddress(uint32_t Address) _Init_Flash_Ram;
  EE_Status FI_CheckBankConfig(void) _Init_Flash_Ram;
  void FI_CacheFlush(void) _Init_Flash_Ram;
 
  /**
   * @}
   */
 
#ifdef __cplusplus
}
#endif
 
/**
 * @}
 */
 
#endif /* __FLASH_INTERFACE_H */
 
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/