⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flash_drv.c

📁 意法半导体ARM7 STR710+DM9000A的TCP/IP实现
💻 C
字号:
//----------------------------------------------------------------------------
// Filename : Flash_drv.c
//----------------------------------------------------------------------------
//
// Copyright (c) 2008,东莞太平计算机科技有限公司
// All rights reserved.
// www.pacific-gold.com.cn
//
// 历史版本:
//
//    版本:  V1.0
//    作者:  罗先能
//    日期:  2007-12-21
//    描述:  建立第一版本
//
//                                
// 描述:
//    1. 设备st39vf1601的驱动程序
//
//
//----------------------------------------------------------------------------


//----------------------------------------------------------------------------
// Includes
//----------------------------------------------------------------------------
// system headers
#include "71x_lib.h"
// internal headers
#include "Flash_drv.h"
// extern   headers
#include "flashhelper.h"


//----------------------------------------------------------------------------
// Local Constant Definitions
//----------------------------------------------------------------------------
typedef enum 
{
    FLASH_BASE = 0x60000000,
    ASC_BASE   = 0x60004000,
    HZK_BASE   = 0x60005000,
    USER_BASE  = 0x6004a800
    
} FLASH_SPACE_DEF;


//----------------------------------------------------------------------------
// Local Variables Definitions
//----------------------------------------------------------------------------


//----------------------------------------------------------------------------
// Global Variables Definitions
//----------------------------------------------------------------------------


//----------------------------------------------------------------------------
// Local Function Definitions
//----------------------------------------------------------------------------


//----------------------------------------------------------------------------
// Global Function Definitions
//----------------------------------------------------------------------------
/**************************************************************
* Function:     flash_init(...)
* Description:
*               initialize the device of extern flash
* Input:    no
*
* Return:       TRUE : ok
*               FALSE: error
*            
**************************************************************/
public bool flash_init( void )
{  
    Flash_Init();
    return TRUE;
}


/**************************************************************
* Function:     flash_open(...)
* Description:  open the device of extern flash
*
* Input:        no
*          
* Return:       TRUE :  ok
*               FALSE:  error
**************************************************************/
public bool flash_open( void )
{
    return TRUE;
}


/**************************************************************
* Function:     flash_close(...);
* Description:
*               not use
* Input:    
*
* Return:   
*           
**************************************************************/
public bool flash_close( void )
{

    return TRUE;
}


/**************************************************************
* Function:     flash_write(...)
* Description:  write datas to the device of flash
*     
* Input:        offset [--> ]:  start address
*               size   [--> ]:  the number of data bytes
*               buffer [--> ]:  the datas
* Return:       TRUE :  ok
*               FALSE:  error
**************************************************************/
public bool flash_write(u32 addr, u32 size, void* buffer)
{  
    if( ExtFlash_Program(addr, buffer, size) == -1 ) return FALSE;
    return TRUE;
}


/**************************************************************
* Function:     flash_read(...)
* Description:  read datas from flash
*    
* Input:        offset [--> ]: start address of extern flash
*               size   [<-->]:
*                      [ -->]: the size of want to get.
*                      [<-- ]: return the size of have getted data.
*               buffer [<-- ]: the buffer of return data
*
* Return:       TRUE : ok
*               FALSE: error
**************************************************************/
public bool flash_read(u32 addr, u32 size, void* buffer)
{   u32 i;
    vu16 *address_ptr;
        u16  temp;
        u8   *buffer_ptr;

            address_ptr = (vu16*)addr;
                buffer_ptr  = (u8*)buffer;
        if( size==0 || buffer==NULL ) return FALSE;

        for(i=0; i<size; i++) 
        {       
            temp = *address_ptr;            
                        *buffer_ptr = (u8)temp;
                        buffer_ptr++;
                        if((++i)<size) *buffer_ptr = (u8)(temp>>8);
                        
                        address_ptr++;
                        buffer_ptr++;
                        
                        
        }
    return TRUE;
}


/**************************************************************
* Function:     flash_ctrl(...)
* Description:  controll the flash
*  
* Input:        cmd   [--> ]: control command
*               arg   [--> ]: parameter of command
*               buffer[--> ]:
* Parameter:    cmd,          arg,       buffer
*               -------------------------------------
*               CHIP_ERASE,    - ,        -
*               BLOCK_ERASE,  address,    -
*               SECTOR_ERASE, address,    -
*               WORD_PROGRAM, address,    buffer[0]
*               GET_SPACE,    
*               GET_USED_SPACE, 
*               GET_RELEASE_SPACE,
*               GET_ID,
*               
* Return:       TRUE:  ok
*               FALSE: error
**************************************************************/
public bool flash_ctrl( FLASH_CTRL_DEF cmd, u32 arg, void* buffer )
{
    switch(cmd)
    {   // 1. chip erase
        case CHIP_ERASE:
        {
            ExtFlash_ChipErase();
            break;
        }
        // 2. block erase
        case BLOCK_ERASE:
        {
            if( ExtFlash_BlockErase(arg)  == -1)  return FALSE;
            break;
        }
        // 3. sector erase
        case SECTOR_ERASE:
        {
            if( ExtFlash_SectorErase(arg) == -1)  return FALSE;

            break;
        }
        // 4. word program
        case WORD_PROGRAM:
        {
            if( ExtFlash_WordWrite(arg,((u16*)buffer)[0]) == -1 ) return FALSE;
            break;
        }
        // 5. get the size of all space
        case GET_SPACE:
        {

        {   return FALSE;   }
            break;
        }
        // 6. get_the size of used space
        case GET_USED_SPACE:
        {

        {   return FALSE;   }
            break;
        }
        // 7. get the size of release space
        case GET_RELEASE_SPACE:
        {

        {   return FALSE;   }
            break;
        }
        // 8. get the chip's ID
        case GET_ID:
        {

        {   return FALSE;   }
            break;
        }

        default:
        {   return FALSE;   }
    }
    return TRUE;
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -