flash.h
Go to the documentation of this file.
1 //*****************************************************************************
2 //
3 // flash.h - Prototypes for the flash driver.
4 //
5 // Copyright (c) 2005-2017 Texas Instruments Incorporated. All rights reserved.
6 // Software License Agreement
7 //
8 // Redistribution and use in source and binary forms, with or without
9 // modification, are permitted provided that the following conditions
10 // are met:
11 //
12 // Redistributions of source code must retain the above copyright
13 // notice, this list of conditions and the following disclaimer.
14 //
15 // Redistributions in binary form must reproduce the above copyright
16 // notice, this list of conditions and the following disclaimer in the
17 // documentation and/or other materials provided with the
18 // distribution.
19 //
20 // Neither the name of Texas Instruments Incorporated nor the names of
21 // its contributors may be used to endorse or promote products derived
22 // from this software without specific prior written permission.
23 //
24 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
27 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
28 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
29 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
30 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
31 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
32 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
33 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
34 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35 //
36 //*****************************************************************************
37 
38 #ifndef __DRIVERLIB_FLASH_H__
39 #define __DRIVERLIB_FLASH_H__
40 
41 #include <stdint.h>
42 #include <stdbool.h>
43 
44 //*****************************************************************************
45 //
46 // If building with a C++ compiler, make all of the definitions in this header
47 // have a C binding.
48 //
49 //*****************************************************************************
50 #ifdef __cplusplus
51 extern "C"
52 {
53 #endif
54 
55 //*****************************************************************************
56 //
57 // Values that can be passed to FlashProtectSet(), and returned by
58 // FlashProtectGet().
59 //
60 //*****************************************************************************
61 typedef enum
62 {
63  FlashReadWrite, // Flash can be read and written
64  FlashReadOnly, // Flash can only be read
65  FlashExecuteOnly // Flash can only be executed
66 }
68 
69 //*****************************************************************************
70 //
71 // Values passed to FlashIntEnable(), FlashIntDisable() and FlashIntClear() and
72 // returned from FlashIntStatus().
73 //
74 //*****************************************************************************
75 #define FLASH_INT_PROGRAM 0x00000002 // Programming Interrupt Mask
76 #define FLASH_INT_ACCESS 0x00000001 // Access Interrupt Mask
77 #define FLASH_INT_EEPROM 0x00000004 // EEPROM Interrupt Mask
78 #define FLASH_INT_VOLTAGE_ERR 0x00000200 // Voltage Error Interrupt Mask
79 #define FLASH_INT_DATA_ERR 0x00000400 // Invalid Data Interrupt Mask
80 #define FLASH_INT_ERASE_ERR 0x00000800 // Erase Error Interrupt Mask
81 #define FLASH_INT_PROGRAM_ERR 0x00002000 // Program Verify Error Interrupt Mask
82 
83 //*****************************************************************************
84 //
85 // Prototypes for the APIs.
86 //
87 //*****************************************************************************
88 extern int32_t FlashErase(uint32_t ui32Address);
89 extern int32_t FlashProgram(uint32_t *pui32Data, uint32_t ui32Address,
90  uint32_t ui32Count);
91 extern tFlashProtection FlashProtectGet(uint32_t ui32Address);
92 extern int32_t FlashProtectSet(uint32_t ui32Address,
93  tFlashProtection eProtect);
94 extern int32_t FlashProtectSave(void);
95 extern int32_t FlashUserGet(uint32_t *pui32User0, uint32_t *pui32User1);
96 extern int32_t FlashUserSet(uint32_t ui32User0, uint32_t ui32User1);
97 extern int32_t FlashAllUserRegisterGet(uint32_t *pui32User0,
98  uint32_t *pui32User1,
99  uint32_t *pui32User2,
100  uint32_t *pui32User3);
101 extern int32_t FlashAllUserRegisterSet(uint32_t ui32User0,
102  uint32_t ui32User1,
103  uint32_t ui32User2,
104  uint32_t ui32User3);
105 extern int32_t FlashUserSave(void);
106 extern int32_t FlashAllUserRegisterSave(void);
107 extern void FlashIntRegister(void (*pfnHandler)(void));
108 extern void FlashIntUnregister(void);
109 extern void FlashIntEnable(uint32_t ui32IntFlags);
110 extern void FlashIntDisable(uint32_t ui32IntFlags);
111 extern uint32_t FlashIntStatus(bool bMasked);
112 extern void FlashIntClear(uint32_t ui32IntFlags);
113 
114 //*****************************************************************************
115 //
116 // Mark the end of the C bindings section for C++ compilers.
117 //
118 //*****************************************************************************
119 #ifdef __cplusplus
120 }
121 #endif
122 
123 #endif // __DRIVERLIB_FLASH_H__
Definition: flash.h:65
Definition: flash.h:63
int32_t FlashUserSave(void)
Definition: flash.c:663
int32_t FlashErase(uint32_t ui32Address)
Definition: flash.c:125
int32_t FlashAllUserRegisterGet(uint32_t *pui32User0, uint32_t *pui32User1, uint32_t *pui32User2, uint32_t *pui32User3)
Definition: flash.c:591
int32_t FlashProgram(uint32_t *pui32Data, uint32_t ui32Address, uint32_t ui32Count)
Definition: flash.c:187
void FlashIntUnregister(void)
Definition: flash.c:799
tFlashProtection
Definition: flash.h:61
void FlashIntRegister(void(*pfnHandler)(void))
Definition: flash.c:771
int32_t FlashProtectSet(uint32_t ui32Address, tFlashProtection eProtect)
Definition: flash.c:358
void FlashIntDisable(uint32_t ui32IntFlags)
Definition: flash.c:876
int32_t FlashAllUserRegisterSave(void)
Definition: flash.c:715
tFlashProtection FlashProtectGet(uint32_t ui32Address)
Definition: flash.c:270
uint32_t FlashIntStatus(bool bMasked)
Definition: flash.c:902
Definition: flash.h:64
void FlashIntClear(uint32_t ui32IntFlags)
Definition: flash.c:957
int32_t FlashUserGet(uint32_t *pui32User0, uint32_t *pui32User1)
Definition: flash.c:527
void FlashIntEnable(uint32_t ui32IntFlags)
Definition: flash.c:840
int32_t FlashUserSet(uint32_t ui32User0, uint32_t ui32User1)
Definition: flash.c:561
int32_t FlashAllUserRegisterSet(uint32_t ui32User0, uint32_t ui32User1, uint32_t ui32User2, uint32_t ui32User3)
Definition: flash.c:632
int32_t FlashProtectSave(void)
Definition: flash.c:484
Copyright 2018, Texas Instruments Incorporated