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  #define FLASH_ADDRESS(page, offset) (((page) << 11) + (offset))
148  #define FLASH_PAGE(addr) (addr >> 11)
149  #define INTFLASH_PAGE_MASK 0xFFFFF800
150  #define INTFLASH_PAGE_SIZE 0x800
151  #if defined(DeviceFamily_CC23X0R5)
152  #define MAX_ONCHIP_FLASH_PAGES 256
153  #else
154  #define MAX_ONCHIP_FLASH_PAGES 512
155  #endif
156  #define MAX_OFFCHIP_METADATA_PAGES MAX_ONCHIP_FLASH_PAGES
157 #else
158  #error
159 #endif
160 
170 #define EXT_FLASH_ADDRESS(page, offset) (((page) << 12) + (offset))
171 
176 #define EXT_FLASH_PAGE(addr) (addr >> 12)
177 
181 #define EXTFLASH_PAGE_MASK 0xFFFFF000
182 
186 #define EFL_PAGE_SIZE 0x1000
187 
191 #define EFL_FLASH_SIZE 0x100000
192 
198 extern void flash_init(void);
199 
205 extern bool flash_open(void);
206 
210 extern void flash_close(void);
211 
217 extern bool hasExternalFlash(void);
218 
229 extern uint8_t readFlash(uint_least32_t addr, uint8_t *pBuf, size_t len);
230 
242 extern uint8_t readFlashPg(uint8_t page, uint32_t offset, uint8_t *pBuf,
243  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,
269  uint16_t len);
270 
279 extern uint8_t eraseFlashPg(uint8_t page);
280 
289 extern uint8_t eraseFlash(uint8_t page);
290 
291 /*********************************************************************
292 *********************************************************************/
293 
296 #ifdef __cplusplus
297 }
298 #endif
299 
300 #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