?? flash_drv_sharp.c
字號:
/*******************************************************************************
* Copyright Statement:
* --------------------
* This software is protected by Copyright and the information contained
* herein is confidential. The software may not be copied and the information
* contained herein may not be used or disclosed except with the written
* permission of MediaTek Inc. (C) 2004
*
*******************************************************************************/
/*******************************************************************************
*
* Filename:
* ---------
* flash_drv_SHARP.c
*
* Project:
* --------
* FlashTool Download Agent
*
* Description:
* ------------
* This Module defines the SHARP flash driver.
*
* Author:
* -------
* Amos Hsu
*
*==============================================================================
* HISTORY
* Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*------------------------------------------------------------------------------
* $Revision: 1.1 $
* $Modtime: Jan 12 2006 14:22:14 $
* $Log: //mtkvs01/vmdata/flash_tool/archives/DA/SRC/flash_drv_SHARP.c-arc $
*
* Rev 1.1 Jan 14 2006 00:20:40 mtk00539
* Bug fixes:
* 1. [DA] Fix SHARP LH28F16 flash download fail problem.
* Resolution for 159: [FlashTool v2.7.1015]
*
* Rev 1.0 Nov 22 2004 12:30:28 mtk00539
* Initial revision.
*
*------------------------------------------------------------------------------
* Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*==============================================================================
*******************************************************************************/
#include "flash_drv_SHARP.h"
//------------------------------------------------------------------------------
// Callback Function Set
//------------------------------------------------------------------------------
const NOR_CMD_Callback_S SHARP_CMD_CB_WORD_PGM = {
INTEL_CheckDevID,
DUMMY_CheckDevIdle,
INTEL_Erase_Block_CMD,
SHARP_CheckDone,
DUMMY_Program_PreProcess,
DUMMY_Program_PostProcess,
INTEL_Block_Unlock,
DUMMY_Program_Exit,
INTEL_Word_Program,
SHARP_CheckDone,
NULL,
NULL
};
const NOR_CMD_Callback_S SHARP_CMD_CB_16WORD_BUF_PGM = {
INTEL_CheckDevID,
DUMMY_CheckDevIdle,
INTEL_Erase_Block_CMD,
SHARP_CheckDone,
SHARP_PreProcess_16WORD_BUFPGM,
DUMMY_Program_PostProcess,
INTEL_Block_Unlock,
DUMMY_Program_Exit,
INTEL_Word_Program,
SHARP_CheckDone,
INTEL_Buf_Program,
SHARP_CheckDone
};
const NOR_CMD_Callback_S SHARP_CMD_CB_WORD_PGM_NO_UNLOCK = {
INTEL_CheckDevID,
DUMMY_CheckDevIdle,
SHARP_Erase_Block_CMD,
SHARP_CheckDone,
DUMMY_Program_PreProcess,
DUMMY_Program_PostProcess,
DUMMY_Program_Enter,
DUMMY_Program_Exit,
INTEL_Word_Program,
SHARP_CheckDone,
NULL,
NULL
};
//------------------------------------------------------------------------------
// Memory Sector Layout Set
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
// Check Device ID Callback Function
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
// Check If Device Is Idle Callback Function
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
// Erase Related Callback Function
//------------------------------------------------------------------------------
void SHARP_Erase_Block_CMD(const uint32 blockaddr)
{
volatile uint16 *ba = (volatile uint16 *)blockaddr;
// clear status register first
ba[0x0] = INTEL_CMD_CLR_SR;
// erase
ba[0x0] = INTEL_CMD_ERASE_STEP1;
ba[0x0] = INTEL_CMD_ERASE_STEP2;
}
STATUS_E SHARP_CheckDone(const uint32 blockaddr)
{
volatile uint16 *ba = (volatile uint16 *)blockaddr;
volatile uint16 sr;
// read SR
ba[0x0] = INTEL_CMD_READ_SR;
sr = *ba;
if( !(sr&SHARP_SR7_WSMS_BIT) ) {
return S_IN_PROGRESS;
}
else if(sr&SHARP_SR3_VPPS_BIT) {
return S_VPP_RANGE_ERR;
}
else if(sr&SHARP_SR1_DPS_BIT) {
return S_BLOCK_LOCKED_ERR;
}
else if( (sr&SHARP_SR4_PS_BIT) && (sr&SHARP_SR5_ES_BIT) ) {
return S_CMD_ERR;
}
else if(sr&SHARP_SR4_PS_BIT) {
return S_PGM_FAILED;
}
else if(sr&SHARP_SR5_ES_BIT) {
return S_ERASE_FAILED;
}
// reset to read mode
ba[0x0] = INTEL_CMD_READ_ARRAY;
return S_DONE;
}
//------------------------------------------------------------------------------
// Program Related Callback Function
//------------------------------------------------------------------------------
void SHARP_PreProcess_16WORD_BUFPGM(const uint16 dev) {
// set max buffered program size
g_FLASH_MAX_BUFPGM_SIZE_IN_BYTE = 32; // 16 WORDs
}
//------------------------------------------------------------------------------
// Protection Related Callback Function
//------------------------------------------------------------------------------
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -