Files
E3/e3_176_ref/middleware/flashloader/include/FlashOS.h
2025-10-21 19:40:27 +08:00

116 lines
6.1 KiB
C

/***********************************************************************
* SEGGER Microcontroller GmbH *
* The Embedded Experts *
************************************************************************
* *
* (c) SEGGER Microcontroller GmbH *
* All rights reserved *
* www.segger.com *
* *
************************************************************************
* *
************************************************************************
* *
* *
* Licensing terms *
* *
* Redistribution and use in source and binary forms, with or without *
* modification, are permitted provided that the following conditions *
* are met: *
* *
* 1. Redistributions of source code must retain the above copyright *
* notice, this list of conditions and the following disclaimer. *
* *
* 2. Redistributions in binary form must reproduce the above *
* copyright notice, this list of conditions and the following *
* disclaimer in the documentation and/or other materials provided *
* with the distribution. *
* *
* *
* THIS SOFTWARE IS PROVIDED BY COPYRIGHT HOLDER "AS IS" AND ANY *
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE *
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR *
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER BE *
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, *
* OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, *
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR *
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY *
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT *
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE *
* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH. *
* DAMAGE. *
* *
************************************************************************
-------------------------- END-OF-HEADER -----------------------------
File : FlashOS.h
Purpose : Contains all defines and prototypes of public functions.
*/
#include <flash_wrapper.h>
#define U8 unsigned char
#define U16 unsigned short
#define U32 unsigned long
#define I8 signed char
#define I16 signed short
#define I32 signed long
struct SEGGER_OPEN_CMD_INFO; // Forward declaration of OFL lib private struct
extern flash_wrapper_t *jflash_wrapper;
typedef struct {
//
// Optional functions may be be NULL
//
void (*pfFeedWatchdog)(void); // Optional
int (*pfInit)(U32 Addr, U32 Freq, U32 Func); // Mandatory
int (*pfUnInit)(U32 Func); // Mandatory
int (*pfEraseSector)(U32 Addr); // Mandatory
int (*pfProgramPage)(U32 Addr, U32 NumBytes, U8 *pSrcBuff); // Mandatory
int (*pfBlankCheck)(U32 Addr, U32 NumBytes, U8 BlankData); // Optional
int (*pfEraseChip)(void); // Optional
U32 (*pfVerify)(U32 Addr, U32 NumBytes, U8 *pSrcBuff); // Optional
U32(*pfSEGGERCalcCRC)
(U32 CRC, U32 Addr, U32 NumBytes, U32 Polynom); // Optional
int (*pfSEGGERRead)(U32 Addr, U32 NumBytes, U8 *pDestBuff); // Optional
int (*pfSEGGERProgram)(U32 DestAddr, U32 NumBytes,
U8 *pSrcBuff); // Optional
int (*pfSEGGERErase)(U32 SectorAddr, U32 SectorIndex,
U32 NumSectors); // Optional
void (*pfSEGGERStart)(
volatile struct SEGGER_OPEN_CMD_INFO *pInfo); // Optional
} SEGGER_OFL_API;
//
// Keil / CMSIS API
//
int Init(U32 Addr, U32 Freq, U32 Func); // Mandatory
int UnInit(U32 Func); // Mandatory
int EraseSector(U32 Addr); // Mandatory
int ProgramPage(U32 Addr, U32 NumBytes, U8 *pSrcBuff); // Mandatory
int BlankCheck(U32 Addr, U32 NumBytes, U8 BlankData); // Optional
int EraseChip(void); // Optional
U32 Verify(U32 Addr, U32 NumBytes, U8 *pSrcBuff); // Optional
//
// SEGGER extensions
//
U32 SEGGER_OPEN_CalcCRC(U32 CRC, U32 Addr, U32 NumBytes,
U32 Polynom); // Optional
int SEGGER_OPEN_Read(U32 Addr, U32 NumBytes, U8 *pDestBuff); // Optional
int SEGGER_OPEN_Program(U32 DestAddr, U32 NumBytes, U8 *pSrcBuff); // Optional
int SEGGER_OPEN_Erase(U32 SectorAddr, U32 SectorIndex,
U32 NumSectors); // Optional
void SEGGER_OPEN_Start(volatile struct SEGGER_OPEN_CMD_INFO *pInfo); // Optional
//
// SEGGER OFL lib helper functions that may be called by specific algo part
//
U32 SEGGER_OFL_Lib_CalcCRC(const SEGGER_OFL_API *pAPI, U32 CRC, U32 Addr,
U32 NumBytes, U32 Polynom);
void SEGGER_OFL_Lib_StartTurbo(const SEGGER_OFL_API *pAPI,
volatile struct SEGGER_OPEN_CMD_INFO *pInfo);
/**************************** End of file ***************************/