mirror of
https://github.com/silenty4ng/uv-k5-firmware-chinese-lts
synced 2025-01-15 14:54:40 +00:00
119 lines
3.9 KiB
C
119 lines
3.9 KiB
C
|
/**************************************************************************//**
|
||
|
* @file FlashPrg.c
|
||
|
* @brief Flash Programming Functions adapted for New Device Flash
|
||
|
* @version V1.0.0
|
||
|
* @date 10. January 2018
|
||
|
******************************************************************************/
|
||
|
/*
|
||
|
* Copyright (c) 2010-2018 Arm Limited. All rights reserved.
|
||
|
*
|
||
|
* SPDX-License-Identifier: Apache-2.0
|
||
|
*
|
||
|
* Licensed under the Apache License, Version 2.0 (the License); you may
|
||
|
* not use this file except in compliance with the License.
|
||
|
* You may obtain a copy of the License at
|
||
|
*
|
||
|
* www.apache.org/licenses/LICENSE-2.0
|
||
|
*
|
||
|
* Unless required by applicable law or agreed to in writing, software
|
||
|
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
|
||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
* See the License for the specific language governing permissions and
|
||
|
* limitations under the License.
|
||
|
*/
|
||
|
|
||
|
#include "FlashOS.h" // FlashOS Structures
|
||
|
|
||
|
/*
|
||
|
Mandatory Flash Programming Functions (Called by FlashOS):
|
||
|
int Init (unsigned long adr, // Initialize Flash
|
||
|
unsigned long clk,
|
||
|
unsigned long fnc);
|
||
|
int UnInit (unsigned long fnc); // De-initialize Flash
|
||
|
int EraseSector (unsigned long adr); // Erase Sector Function
|
||
|
int ProgramPage (unsigned long adr, // Program Page Function
|
||
|
unsigned long sz,
|
||
|
unsigned char *buf);
|
||
|
|
||
|
Optional Flash Programming Functions (Called by FlashOS):
|
||
|
int BlankCheck (unsigned long adr, // Blank Check
|
||
|
unsigned long sz,
|
||
|
unsigned char pat);
|
||
|
int EraseChip (void); // Erase complete Device
|
||
|
unsigned long Verify (unsigned long adr, // Verify Function
|
||
|
unsigned long sz,
|
||
|
unsigned char *buf);
|
||
|
|
||
|
- BlanckCheck is necessary if Flash space is not mapped into CPU memory space
|
||
|
- Verify is necessary if Flash space is not mapped into CPU memory space
|
||
|
- if EraseChip is not provided than EraseSector for all sectors is called
|
||
|
*/
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Initialize Flash Programming Functions
|
||
|
* Parameter: adr: Device Base Address
|
||
|
* clk: Clock Frequency (Hz)
|
||
|
* fnc: Function Code (1 - Erase, 2 - Program, 3 - Verify)
|
||
|
* Return Value: 0 - OK, 1 - Failed
|
||
|
*/
|
||
|
|
||
|
int Init (unsigned long adr, unsigned long clk, unsigned long fnc) {
|
||
|
|
||
|
/* Add your Code */
|
||
|
return (0); // Finished without Errors
|
||
|
}
|
||
|
|
||
|
|
||
|
/*
|
||
|
* De-Initialize Flash Programming Functions
|
||
|
* Parameter: fnc: Function Code (1 - Erase, 2 - Program, 3 - Verify)
|
||
|
* Return Value: 0 - OK, 1 - Failed
|
||
|
*/
|
||
|
|
||
|
int UnInit (unsigned long fnc) {
|
||
|
|
||
|
/* Add your Code */
|
||
|
return (0); // Finished without Errors
|
||
|
}
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Erase complete Flash Memory
|
||
|
* Return Value: 0 - OK, 1 - Failed
|
||
|
*/
|
||
|
|
||
|
int EraseChip (void) {
|
||
|
|
||
|
/* Add your Code */
|
||
|
return (0); // Finished without Errors
|
||
|
}
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Erase Sector in Flash Memory
|
||
|
* Parameter: adr: Sector Address
|
||
|
* Return Value: 0 - OK, 1 - Failed
|
||
|
*/
|
||
|
|
||
|
int EraseSector (unsigned long adr) {
|
||
|
|
||
|
/* Add your Code */
|
||
|
return (0); // Finished without Errors
|
||
|
}
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Program Page in Flash Memory
|
||
|
* Parameter: adr: Page Start Address
|
||
|
* sz: Page Size
|
||
|
* buf: Page Data
|
||
|
* Return Value: 0 - OK, 1 - Failed
|
||
|
*/
|
||
|
|
||
|
int ProgramPage (unsigned long adr, unsigned long sz, unsigned char *buf) {
|
||
|
|
||
|
/* Add your Code */
|
||
|
return (0); // Finished without Errors
|
||
|
}
|