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

📄 mvflash.h

📁 此代码为烧制bios程序的源码
💻 H
字号:
/*******************************************************************************
*
*                   Copyright 2003,MARVELL SEMICONDUCTOR ISRAEL, LTD.
* THIS CODE CONTAINS CONFIDENTIAL INFORMATION OF MARVELL.
* NO RIGHTS ARE GRANTED HEREIN UNDER ANY PATENT, MASK WORK RIGHT OR COPYRIGHT
* OF MARVELL OR ANY THIRD PARTY. MARVELL RESERVES THE RIGHT AT ITS SOLE
* DISCRETION TO REQUEST THAT THIS CODE BE IMMEDIATELY RETURNED TO MARVELL.
* THIS CODE IS PROVIDED "AS IS". MARVELL MAKES NO WARRANTIES, EXPRESSED,
* IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, COMPLETENESS OR PERFORMANCE.
*
* MARVELL COMPRISES MARVELL TECHNOLOGY GROUP LTD. (MTGL) AND ITS SUBSIDIARIES,
* MARVELL INTERNATIONAL LTD. (MIL), MARVELL TECHNOLOGY, INC. (MTI), MARVELL
* SEMICONDUCTOR, INC. (MSI), MARVELL ASIA PTE LTD. (MAPL), MARVELL JAPAN K.K.
* (MJKK), MARVELL SEMICONDUCTOR ISRAEL. (MSIL),  MARVELL TAIWAN, LTD. AND
* SYSKONNECT GMBH.
*
********************************************************************************
* mvFlash.h - FLASH memory interface header file
*
* DESCRIPTION                                                               
*       None.
*
* DEPENDENCIES:
*       None.
*
*******************************************************************************/


#ifndef __INCmvFlashh 
#define __INCmvFlashh

/* Supported Flash Manufactures */ 

#define AMD_FLASH       0x01
#define ST_FLASH        0x20
#define INTEL_FLASH     0x89
#define MICRON_FLASH    0x89
#define ATMEL_FLASH     0x1F
#define SST_FLASH       0xBF

/* Supported Flash Devices */

/* AMD Devices */
#define AM29F400BT      0x2223    
#define AM29F400BB      0x22AB
#define AM29LV800BT     0x22DA
#define AM29LV400BT     0x22B9
#define AM29LV400BB     0x22BA
#define AM29LV040B      0x4f
#define AM29LV160DB     0x2249
#define AM29LV160DT     0x22c4
#define AM29LV001BT     0xED
#define AM29LV001BB     0x6D

/* ST Devices */
#define M29W040         0xE3
/* INTEL Devices - We have added I before the name defintion.*/
#define I28F320J3A      0x16
#define I28F640J3A      0x17
#define I28F128J3A      0x18
#define I28F320B3_B     0x8897
#define I28F320B3_T     0x8896 
#define I28F160B3_B     0x8891
#define I28F160B3_T     0x8890

/* ATMEL Devices */
#define AT49LV040       0x13

/* SST_FLASH */
#define SST39VF020      0xD6

#define FLASH_POINTER_TO_FLASH  mvFlashParametrs[0] 
#define FLASH_BASE_ADDR         mvFlashParametrs[1] 
#define FLASH_WIDTH             mvFlashParametrs[2] /* In Bytes */
#define FLASH_MODE              mvFlashParametrs[3] /* In bits  */
#define FLASH_MANUFACTOR_ID     (FLASH_POINTER_TO_FLASH + 0)
#define FLASH_DEVICE_ID         (FLASH_POINTER_TO_FLASH + 1)
#define FLASH_NUMBER_OF_SECTORS (FLASH_POINTER_TO_FLASH + 2)
#define FLASH_FIRST_SECTOR_SIZE (FLASH_POINTER_TO_FLASH + 3)
#define FLASH_NUM_OF_DEVICES    (FLASH_WIDTH / (FLASH_MODE / 8))
 
/* typedefs */
/* typedefs */
typedef enum _bool {false,true} bool;
typedef enum _flashDevMode {PURE8,X8 = 8,X16 = 16} FLASH_DEV_MODE;
/* PURE8 - when using a Flash device whice can be configurated only as  
            8 bit device.                                                     */
/* X8    - when using a Flash device which is 16 bit wide but configured to
           operate in 8 bit mode.                                             */
/* X16   - when using a Flash device which is 16 bit wide                   */

void mvFlashReset(void);

bool           mvFlashEraseSector(unsigned long sectorNumber);
unsigned long   mvFlashInit         (unsigned long flashBaseAddress,
                                    unsigned long flashWidth,
                                    FLASH_DEV_MODE flashMode);
unsigned long   mvFlashWriteBlock(unsigned long offset,unsigned long numOfByte,
                                 char * blockAddress);
unsigned long   mvFlashReadBlock (unsigned long offset,unsigned long numOfByte,
                                 char * blockAddress);


bool           mvFlashWriteWord  (unsigned long offset,unsigned long data);
bool           mvFlashWriteShort (unsigned long offset,unsigned short sdata);
bool           mvFlashWriteChar  (unsigned long offset,char cdata);
unsigned long   mvFlashReadWord  (unsigned long offset);
unsigned char  mvFlashReadChar  (unsigned long offset);
unsigned short mvFlashReadShort (unsigned long offset);
bool           mvFlashErase(void);
unsigned long   mvFlashInWhichSector(unsigned long offset);
unsigned long   mvFlashGetSectorOffset(unsigned long sectorNum);

unsigned char read8bit(unsigned long offset, unsigned long address);
unsigned short read16bit(unsigned long offset, unsigned long address);
unsigned long read32bit(unsigned long offset, unsigned long address);
void write8bit (unsigned long offset, unsigned long address, unsigned char value);
void write16bit (unsigned long offset, unsigned long address, unsigned short value);
void write32bit (unsigned long offset, unsigned long address, unsigned long value);


/* includes */

/* globals */
#define MV_WRITE_CHAR(offset, address, data) write8bit(offset, address, data)
#define MV_WRITE_SHORT(offset, address, data) write16bit(offset, address, data)
#define MV_WRITE_WORD(offset, address, data) write32bit(offset, address, data)
/* Read 32/16/8 bits NonCacheable - returns data in variable. */
#define MV_READ_CHAR(offset, address, pData) *pData = read8bit(offset, address)
#define MV_READ_SHORT(offset, address, pData) *pData = read16bit(offset, address)
#define MV_READ_WORD(offset, address, pData) *pData = read32bit(offset, address)
/* Read 32/16/8 bit NonCacheable - returns data direct. */
#define MV_READCHAR(offset, address) read8bit(offset, address)
#define MV_READSHORT(offset, address) read16bit(offset, address)
#define MV_READWORD(offset, address) read32bit(offset, address)
#endif /* __INCmvFlashh */

⌨️ 快捷键说明

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