TI OAD API Documentation  9.14.00
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 #endif
90 
91 /*********************************************************************
92  * INCLUDES
93  */
94 #include <string.h>
95 #include <stdlib.h>
96 #include <stdbool.h>
97 #include <stdint.h>
98 
99 #include <ti/devices/DeviceFamily.h>
100 #include DeviceFamily_constructPath(driverlib/flash.h)
101 
102 /*********************************************************************
103  * CONSTANTS
104  */
105 
109 #define FLASH_SUCCESS 0x00
110 
114 #define FLASH_FAILURE 0xFF
115 
119 #define SPI_MAX_READ_SZ 1024
120 
121 /*********************************************************************
122  * MACROS
123  */
124 #if defined(CC26XX_R2)
125  #define FLASH_ADDRESS(page, offset) (((page) << 12) + (offset))
126  #define FLASH_PAGE(addr) (addr >> 12)
127  #define INTFLASH_PAGE_MASK 0xFFFFF000
128  #define INTFLASH_PAGE_SIZE 0x1000
129  #define MAX_ONCHIP_FLASH_PAGES 32
130  #define MAX_OFFCHIP_METADATA_PAGES MAX_ONCHIP_FLASH_PAGES
131 #elif defined(DeviceFamily_CC26X2) || defined(DeviceFamily_CC13X2) || defined(DeviceFamily_CC26X2X7) || \
132  defined(DeviceFamily_CC13X2X7) || defined(DeviceFamily_CC26X1) || defined(DeviceFamily_CC13X1)
133  #define FLASH_ADDRESS(page, offset) (((page) << 13) + (offset))
134  #define FLASH_PAGE(addr) (addr >> 13)
135  #define INTFLASH_PAGE_MASK 0xFFFFE000
136  #define INTFLASH_PAGE_SIZE 0x2000
137  #if defined(DeviceFamily_CC26X2X7) || defined(DeviceFamily_CC13X2X7)
138  #define MAX_ONCHIP_FLASH_PAGES 88
139  #else
140  #define MAX_ONCHIP_FLASH_PAGES 44
141  #endif
142  #define MAX_OFFCHIP_METADATA_PAGES MAX_ONCHIP_FLASH_PAGES
143 #elif defined(DeviceFamily_CC13X4) || defined(DeviceFamily_CC26X4) || defined(DeviceFamily_CC26X3) || \
144  defined(DeviceFamily_CC23X0R5) || defined(DeviceFamily_CC23X0R53) || defined(DeviceFamily_CC23X0R2) || \
145  defined(DeviceFamily_CC23X0R22) || defined(DeviceFamily_ID_CC27XX)
146  #define FLASH_ADDRESS(page, offset) (((page) << 11) + (offset))
147  #define FLASH_PAGE(addr) (addr >> 11)
148  #define INTFLASH_PAGE_MASK 0xFFFFF800
149  #define INTFLASH_PAGE_SIZE 0x800
150  #if defined(DeviceFamily_CC23X0R5) || defined(DeviceFamily_CC23X0R53)
151  #define MAX_ONCHIP_FLASH_PAGES 256
152  #elif defined(DeviceFamily_CC23X0R2) || defined(DeviceFamily_CC23X0R22)
153  #define MAX_ONCHIP_FLASH_PAGES 128
154  #else
155  #define MAX_ONCHIP_FLASH_PAGES 512
156  #endif
157  #define MAX_OFFCHIP_METADATA_PAGES MAX_ONCHIP_FLASH_PAGES
158 #else
159  #error
160 #endif
161 
171 #define EXT_FLASH_ADDRESS(page, offset) (((page) << 12) + (offset))
172 
177 #define EXT_FLASH_PAGE(addr) (addr >> 12)
178 
182 #define EXTFLASH_PAGE_MASK 0xFFFFF000
183 
187 #define EFL_PAGE_SIZE 0x1000
188 
192 #define EFL_FLASH_SIZE 0x100000
193 
199 extern void flash_init(void);
200 
206 extern bool flash_open(void);
207 
211 extern void flash_close(void);
212 
218 extern bool hasExternalFlash(void);
219 
230 extern uint8_t readFlash(uint_least32_t addr, uint8_t *pBuf, size_t len);
231 
243 extern uint8_t readFlashPg(uint8_t page, uint32_t offset, uint8_t *pBuf, uint16_t len);
244 
255 extern uint8_t writeFlash(uint_least32_t addr, uint8_t *pBuf, size_t len);
256 
268 extern uint8_t writeFlashPg(uint8_t page, uint32_t offset, uint8_t *pBuf, uint16_t len);
269 
278 extern uint8_t eraseFlashPg(uint8_t page);
279 
288 extern uint8_t eraseFlash(uint8_t page);
289 
290 /*********************************************************************
291 *********************************************************************/
292 
295 #ifdef __cplusplus
296 }
297 #endif
298 
299 #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)
uint32_t len
Image length in bytes.
Definition: oad_image_header.h:701
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)