RTEMS 6.1-rc1
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
43extern "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
55extern void FLASHD_Initialize(uint32_t dwMCk, uint32_t dwUseIAP);
56
57extern uint32_t FLASHD_Erase(uint32_t dwAddress);
58
59extern uint32_t FLASHD_EraseSector(uint32_t dwAddress);
60
61extern uint32_t FLASHD_ErasePages(uint32_t dwAddress, uint32_t dwPageNum);
62
63extern uint32_t FLASHD_Write(uint32_t dwAddress, const void *pvBuffer,
64 uint32_t dwSize);
65
66extern uint32_t FLASHD_Lock(uint32_t dwStart, uint32_t dwEnd,
67 uint32_t *pdwActualStart, uint32_t *pdwActualEnd);
68
69extern uint32_t FLASHD_Unlock(uint32_t dwStart, uint32_t dwEnd,
70 uint32_t *pdwActualStart, uint32_t *pdwActualEnd);
71
72extern uint32_t FLASHD_IsLocked(uint32_t dwStart, uint32_t dwEnd);
73
74extern uint32_t FLASHD_SetGPNVM(uint8_t gpnvm);
75
76extern uint32_t FLASHD_ClearGPNVM(uint8_t gpnvm);
77
78extern uint32_t FLASHD_IsGPNVMSet(uint8_t gpnvm);
79
80#define FLASHD_IsSecurityBitSet() FLASHD_IsGPNVMSet(0)
81
82#define FLASHD_SetSecurityBit() FLASHD_SetGPNVM(0)
83
84extern uint32_t FLASHD_ReadUniqueID(uint32_t *pdwUniqueID);
85
86#ifdef __cplusplus
87}
88#endif
89
90#endif /* #ifndef _FLASHD_ */
91
uint32_t FLASHD_Erase(uint32_t dwAddress)
Erases the entire flash.
Definition: flashd.c:173
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_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_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_ErasePages(uint32_t dwAddress, uint32_t dwPageNum)
Erases flash by pages.
Definition: flashd.c:222
uint32_t FLASHD_IsGPNVMSet(uint8_t gpnvm)
Check if the given GPNVM bit is set or not.
Definition: flashd.c:492
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_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_ClearGPNVM(uint8_t gpnvm)
Clears the selected GPNVM bit.
Definition: flashd.c:531
uint32_t FLASHD_SetGPNVM(uint8_t gpnvm)
Sets the selected GPNVM bit.
Definition: flashd.c:515