TI OAD API Documentation  2.02.08.01
flash_interface.h
Go to the documentation of this file.
1 /******************************************************************************
2 
3  @file flash_interface
4 
5  @brief An interface that abstracts flash operations for OAD
6  this allows on-chip and off-chip OAD to use the same flash APIs
7 
8  Group: WCS, BTS
9  $Target Device: DEVICES $
10 
11  ******************************************************************************
12  $License: BSD3 2017 $
13  ******************************************************************************
14  $Release Name: PACKAGE NAME $
15  $Release Date: PACKAGE RELEASE DATE $
16  *****************************************************************************/
17 
84 #ifndef FLASH_INTERFACE
85 #define FLASH_INTERFACE
86 
87 #ifdef __cplusplus
88 extern "C"
89 {
90 #endif
91 
92 /*********************************************************************
93  * INCLUDES
94  */
95 #include <string.h>
96 #include <stdlib.h>
97 #include <stdbool.h>
98 #include <stdint.h>
99 
100 #include <ti/devices/DeviceFamily.h>
101 #include DeviceFamily_constructPath(driverlib/flash.h)
102 
103 /*********************************************************************
104  * CONSTANTS
105  */
106 
110 #define FLASH_SUCCESS 0x00
111 
115 #define FLASH_FAILURE 0xFF
116 
120 #define SPI_MAX_READ_SZ 1024
121 
122 /*********************************************************************
123  * MACROS
124  */
125 #if defined(CC26XX_R2)
126  #define FLASH_ADDRESS(page, offset) (((page) << 12) + (offset))
127  #define FLASH_PAGE(addr) (addr >> 12)
128  #define INTFLASH_PAGE_MASK 0xFFFFF000
129  #define INTFLASH_PAGE_SIZE 0x1000
130  #define MAX_ONCHIP_FLASH_PAGES 32
131  #define MAX_OFFCHIP_METADATA_PAGES MAX_ONCHIP_FLASH_PAGES
132 #elif defined(DeviceFamily_CC26X2) || defined(DeviceFamily_CC13X2) || \
133  defined(DeviceFamily_CC26X2X7) || defined(DeviceFamily_CC13X2X7) || \
134  defined(DeviceFamily_CC26X1) || defined(DeviceFamily_CC13X1)
135  #define FLASH_ADDRESS(page, offset) (((page) << 13) + (offset))
136  #define FLASH_PAGE(addr) (addr >> 13)
137  #define INTFLASH_PAGE_MASK 0xFFFFE000
138  #define INTFLASH_PAGE_SIZE 0x2000
139  #if defined(DeviceFamily_CC26X2X7) || defined(DeviceFamily_CC13X2X7)
140  #define MAX_ONCHIP_FLASH_PAGES 88
141  #else
142  #define MAX_ONCHIP_FLASH_PAGES 44
143  #endif
144  #define MAX_OFFCHIP_METADATA_PAGES MAX_ONCHIP_FLASH_PAGES
145 #elif defined(DeviceFamily_CC13X4) || defined(DeviceFamily_CC26X4) || \
146  defined(DeviceFamily_CC26X3) || defined(DeviceFamily_CC23X0R5) || \
147  defined(DeviceFamily_CC23X0R2)
148  #define FLASH_ADDRESS(page, offset) (((page) << 11) + (offset))
149  #define FLASH_PAGE(addr) (addr >> 11)
150  #define INTFLASH_PAGE_MASK 0xFFFFF800
151  #define INTFLASH_PAGE_SIZE 0x800
152  #if defined(DeviceFamily_CC23X0R5)
153  #define MAX_ONCHIP_FLASH_PAGES 256
154  #elif defined(DeviceFamily_CC23X0R2)
155  #define MAX_ONCHIP_FLASH_PAGES 128
156  #else
157  #define MAX_ONCHIP_FLASH_PAGES 512
158  #endif
159  #define MAX_OFFCHIP_METADATA_PAGES MAX_ONCHIP_FLASH_PAGES
160 #else
161  #error
162 #endif
163 
173 #define EXT_FLASH_ADDRESS(page, offset) (((page) << 12) + (offset))
174 
179 #define EXT_FLASH_PAGE(addr) (addr >> 12)
180 
184 #define EXTFLASH_PAGE_MASK 0xFFFFF000
185 
189 #define EFL_PAGE_SIZE 0x1000
190 
194 #define EFL_FLASH_SIZE 0x100000
195 
201 extern void flash_init(void);
202 
208 extern bool flash_open(void);
209 
213 extern void flash_close(void);
214 
220 extern bool hasExternalFlash(void);
221 
232 extern uint8_t readFlash(uint_least32_t addr, uint8_t *pBuf, size_t len);
233 
245 extern uint8_t readFlashPg(uint8_t page, uint32_t offset, uint8_t *pBuf,
246  uint16_t len);
247 
258 extern uint8_t writeFlash(uint_least32_t addr, uint8_t *pBuf, size_t len);
259 
271 extern uint8_t writeFlashPg(uint8_t page, uint32_t offset, uint8_t *pBuf,
272  uint16_t len);
273 
282 extern uint8_t eraseFlashPg(uint8_t page);
283 
292 extern uint8_t eraseFlash(uint8_t page);
293 
294 /*********************************************************************
295 *********************************************************************/
296 
299 #ifdef __cplusplus
300 }
301 #endif
302 
303 #endif /* FLASH_INTERFACE */
uint8_t eraseFlashPg(uint8_t page)
uint8_t eraseFlash(uint8_t page)
uint8_t writeFlash(uint_least32_t addr, uint8_t *pBuf, size_t len)
uint8_t readFlash(uint_least32_t addr, uint8_t *pBuf, size_t len)
void flash_init(void)
void flash_close(void)
uint8_t readFlashPg(uint8_t page, uint32_t offset, uint8_t *pBuf, uint16_t len)
uint8_t writeFlashPg(uint8_t page, uint32_t offset, uint8_t *pBuf, uint16_t len)
bool flash_open(void)
bool hasExternalFlash(void)
© Copyright 1995-2023, Texas Instruments Incorporated. All rights reserved.
Trademarks | Privacy policy | Terms of use | Terms of sale