RTEMS  5.0.0
flashd.h
Go to the documentation of this file.
1 /* ---------------------------------------------------------------------------- */
2 /* Atmel Microcontroller Software Support */
3 /* SAM Software Package License */
4 /* ---------------------------------------------------------------------------- */
5 /* Copyright (c) 2015, Atmel Corporation */
6 /* */
7 /* All rights reserved. */
8 /* */
9 /* Redistribution and use in source and binary forms, with or without */
10 /* modification, are permitted provided that the following condition is met: */
11 /* */
12 /* - Redistributions of source code must retain the above copyright notice, */
13 /* this list of conditions and the disclaimer below. */
14 /* */
15 /* Atmel's name may not be used to endorse or promote products derived from */
16 /* this software without specific prior written permission. */
17 /* */
18 /* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR */
19 /* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */
20 /* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE */
21 /* DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, */
22 /* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */
23 /* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */
24 /* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */
25 /* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */
26 /* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */
27 /* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
28 /* ---------------------------------------------------------------------------- */
29 
37 #ifndef _FLASHD_
38 #define _FLASHD_
39 
40 #include <stdint.h>
41 
42 #ifdef __cplusplus
43 extern "C" {
44 #endif
45 
46 #define GPNVBit_SecurityBit 0
47 #define GPNVBit_BootMode 1
48 #define GPNVBit_TCMBit1 6
49 #define GPNVBit_TCMBit2 7
50 
51 /*----------------------------------------------------------------------------
52  * Exported functions
53  *----------------------------------------------------------------------------*/
54 
55 extern void FLASHD_Initialize(uint32_t dwMCk, uint32_t dwUseIAP);
56 
57 extern uint32_t FLASHD_Erase(uint32_t dwAddress);
58 
59 extern uint32_t FLASHD_EraseSector(uint32_t dwAddress);
60 
61 extern uint32_t FLASHD_ErasePages(uint32_t dwAddress, uint32_t dwPageNum);
62 
63 extern uint32_t FLASHD_Write(uint32_t dwAddress, const void *pvBuffer,
64  uint32_t dwSize);
65 
66 extern uint32_t FLASHD_Lock(uint32_t dwStart, uint32_t dwEnd,
67  uint32_t *pdwActualStart, uint32_t *pdwActualEnd);
68 
69 extern uint32_t FLASHD_Unlock(uint32_t dwStart, uint32_t dwEnd,
70  uint32_t *pdwActualStart, uint32_t *pdwActualEnd);
71 
72 extern uint32_t FLASHD_IsLocked(uint32_t dwStart, uint32_t dwEnd);
73 
74 extern uint32_t FLASHD_SetGPNVM(uint8_t gpnvm);
75 
76 extern uint32_t FLASHD_ClearGPNVM(uint8_t gpnvm);
77 
78 extern uint32_t FLASHD_IsGPNVMSet(uint8_t gpnvm);
79 
80 #define FLASHD_IsSecurityBitSet() FLASHD_IsGPNVMSet(0)
81 
82 #define FLASHD_SetSecurityBit() FLASHD_SetGPNVM(0)
83 
84 extern uint32_t FLASHD_ReadUniqueID(uint32_t *pdwUniqueID);
85 
86 #ifdef __cplusplus
87 }
88 #endif
89 
90 #endif /* #ifndef _FLASHD_ */
91 
uint32_t FLASHD_ClearGPNVM(uint8_t gpnvm)
Clears the selected GPNVM bit.
Definition: flashd.c:531
uint32_t FLASHD_ErasePages(uint32_t dwAddress, uint32_t dwPageNum)
Erases flash by pages.
Definition: flashd.c:222
uint32_t FLASHD_IsLocked(uint32_t dwStart, uint32_t dwEnd)
Returns the number of locked regions inside the given address range.
Definition: flashd.c:441
uint32_t FLASHD_Lock(uint32_t dwStart, uint32_t dwEnd, uint32_t *pdwActualStart, uint32_t *pdwActualEnd)
Locks all the regions in the given address range. The actual lock range is reported through two outpu...
Definition: flashd.c:356
uint32_t FLASHD_Erase(uint32_t dwAddress)
Erases the entire flash.
Definition: flashd.c:173
uint32_t FLASHD_Unlock(uint32_t dwStart, uint32_t dwEnd, uint32_t *pdwActualStart, uint32_t *pdwActualEnd)
Unlocks all the regions in the given address range. The actual unlock range is reported through two o...
Definition: flashd.c:400
uint32_t FLASHD_EraseSector(uint32_t dwAddress)
Erases flash by sector.
Definition: flashd.c:197
void FLASHD_Initialize(uint32_t dwMCk, uint32_t dwUseIAP)
Initializes the flash driver.
Definition: flashd.c:159
uint32_t FLASHD_Write(uint32_t dwAddress, const void *pvBuffer, uint32_t dwSize)
Writes a data buffer in the internal flash.
Definition: flashd.c:274
uint32_t FLASHD_IsGPNVMSet(uint8_t gpnvm)
Check if the given GPNVM bit is set or not.
Definition: flashd.c:492
uint32_t FLASHD_SetGPNVM(uint8_t gpnvm)
Sets the selected GPNVM bit.
Definition: flashd.c:515