亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? drv.h

?? MMI層OBJ不能完全編譯
?? H
字號:
/******************************************************************************
 * Flash File System (ffs)
 * Idea, design and coding by Mads Meisner-Jensen, mmj@ti.com
 *
 * ffs low level flash driver
 *
 * $Id: drv.h 1.15.1.25.1.1.1.20 Mon, 17 Nov 2003 08:51:37 +0100 tsj $
 *
 ******************************************************************************/

#ifndef TARGET
#include "ffs.cfg"
#endif

#if (TARGET == 1)
#include "chipset.cfg"
#include "board.cfg"
#endif


/******************************************************************************
 * Compile constants
 ******************************************************************************/

// FFS driver version (in four-digit BCD format). Format is MMID, where MM
// is major revision number, incremented e.g. for major revision or support
// for new flash family/driver. I is minor revision that is incremented for
// minor changes or when a bug is corrected. D is incremented when support
// of another device is added.
#define FFS_DRV_VERSION ((uint16) 0x1011)

// Default Allocation granularity of ffs data sectors (as power of two)
#define FFS_ATOM_LOG2 4


// Maximum supported flash write buffer size. It can easily be increased but
// note that this amount of words is allocated on the FFS stack.
#define FFS_WR_BUF_MAX_WORDS 32

/******************************************************************************
 * Macros
 ******************************************************************************/

// Convert between address and block index. Only works if all blocks are the
// same size!
#define block2addr(block) (dev.base + dev.binfo[block].offset)

// Note that it is *VERY* important that pointers to hardware and flash are
// declared volatile, otherwise the compiler optimizes some reads and writes
// out and this results in non-working code!

  #define FLASH_WRITE_HALFWORD(addr, data) (*((volatile uint16 *) (addr))) = (data)
  #define FLASH_READ_HALFWORD(addr) (*((volatile uint16 *) (addr)))

#if (TARGET == 1)

#include "memif/mem.h"
#if ((CHIPSET == 12) || (CHIPSET==15))
  #include "inth/sys_inth.h"
#else
#include "inth/inth.h" 
#endif

#if (CHIPSET == 3)
#define INT_REQUESTED (*(volatile uint16 *) INTH_IT_REG) & \
                        ~(*(volatile uint16 *) INTH_MASK_REG)
#elif (CHIPSET == 4 || CHIPSET == 5 || CHIPSET == 6 || CHIPSET == 7 || CHIPSET == 8 || CHIPSET == 9 || CHIPSET == 10 || CHIPSET == 11 || CHIPSET == 14)
#define INT_REQUESTED ((*(volatile uint16 *) INTH_IT_REG1) & \
                         ~(*(volatile uint16 *) INTH_MASK_REG1)) || \
                        ((*(volatile uint16 *) INTH_IT_REG2) & \
                         ~(*(volatile uint16 *) INTH_MASK_REG2))
#elif ((CHIPSET == 12) || (CHIPSET ==15))
#define INT_REQUESTED ((*(volatile uint16 *) C_INTH_IT_REG1) & \
                         ~(*(volatile uint16 *) C_INTH_MASK_REG1)) || \
                        ((*(volatile uint16 *) C_INTH_IT_REG2) & \
                         ~(*(volatile uint16 *) C_INTH_MASK_REG2))
#endif

#endif // (TARGET == 1)

/******************************************************************************
 * Commands for Intel flash memory devices
 ******************************************************************************/

//read
#define INTEL_READ_ARRAY         (0xFF)
#define INTEL_READ_STATUS        (0x70)
#define INTEL_CLR_STATUS         (0x50)

//program
#define INTEL_WORD_PRG           (0x40)
#define INTEL_BUFFER_PRG         (0xE8)
#define INTEL_BUFFER_PRG_CONFIRM (0xD0)

//unlock
#define INTEL_LOCK_SETUP         (0x60)
#define INTEL_UNLOCK_BLK         (0xD0)

//erase
#define INTEL_BLOCK_ERASE_SETUP        (0x20)
#define INTEL_ERASE_CONFIRM      (0xD0)

//suspend
#define INTEL_SUSPEND            (0xB0)
#define INTEL_RESUME             (0xD0)

/******************************************************************************
 * Status bits for Intel flash memory devices
 ******************************************************************************/

#define INTEL_STATE_MACHINE_DONE     (1<<7)
#define INTEL_ERASE_SUSPEND          (1<<6)
#define INTEL_BLOCK_ERASE_ERROR      (1<<5)
#define INTEL_CMD_SEQ_ERROR          ((1<<4)|(1<<5))
#define INTEL_PROGRAMMING_ERROR      (1<<4)
#define INTEL_VPP_RANGE_ERROR        (1<<3)
#define INTEL_PROGRAM_SUSPEND        (1<<2)  
#define INTEL_BLOCK_LOCKED_ERROR     (1<<1)
#define INTEL_ALL_PERMISSION_ERROR   (0x1a)

/******************************************************************************
 * Types
 ******************************************************************************/

// Flash driver identifiers.
enum FFS_DRIVER {
    FFS_DRIVER_NULL          =  0, // Null driver

    FFS_DRIVER_AMD           =  2, // AMD dual/multi-bank driver
    FFS_DRIVER_AMD_SB        =  3, // AMD single-bank driver
    FFS_DRIVER_AMD_NOR       =  4,       /* for locosto NOR flash driver, Spansion multibank driver */ 	
    FFS_DRIVER_AMD_MIRROR_BIT = 5,       /* for locosto Mirror bit NOR flash driver, Spansion multibank driver */ 	
    //OMAPS62129
    FFS_DRIVER_AMD_NOR_PSEUDO_SB =  6,   /* for locosto NOR flash driver, Spansion multibank driver in pseudo SB mode to allow */
                                         /* reuse of the 3Mb flash in same bank as FFS for code /data */

    FFS_DRIVER_SST           =  8, // SST dual/multi-bank driver
    FFS_DRIVER_SST_SB        =  9, // SST single-bank driver

    FFS_DRIVER_INTEL         = 16, // Intel dual/multi-bank driver
    FFS_DRIVER_INTEL_SB      = 17, // Intel single-bank driver
    FFS_DRIVER_INTEL_BW      = 18, // Intel buffer write driver

    FFS_DRIVER_AMD_PSEUDO_SB = 32, // Test driver
    FFS_DRIVER_TEST          = 34, // Test driver
    FFS_DRIVER_TEST_BW       = 35, // Test driver (use buffer write)

    FFS_DRIVER_RAM           = 64  // Ram driver
};


// Manufacturer identifiers. These should never have to be changed. They are
// ordered in alphabetically ascending order.
enum FFS_MANUFACTURER {
    MANUFACT_AMD     = 0x01,
    MANUFACT_ATMEL   = 0x1F,
    MANUFACT_FUJITSU = 0x04,
    MANUFACT_INTEL   = 0x89,
    MANUFACT_MXIC    = 0xC2,
    MANUFACT_SAMSUNG = 0xEC,
    MANUFACT_SHARP   = 0xB0,
    MANUFACT_ST      = 0x20,
    MANUFACT_SST     = 0xBF,
    MANUFACT_TOSHIBA = 0x98,
    MANUFACT_RAM     = 0xFE, // Ram 
    MANUFACT_TEST    = 0x54  // 'T'est manufacturer
};


// Flash block information for one ffs block (flash sector). Note that the
// ffs block definition might be of a smaller size then the physical flash
// sector. The ffs blocks must be defined in ascending order of addresses.
struct block_info_s {
    uint32 offset;
    uint8  size_ld;   // log2 of block size
    uint8  unused1;
    uint8  unused2;
    uint8  unused3;
};


// General flash information for one flash device
struct flash_info_s {
    const struct block_info_s *binfo; // block info array for this device
    char   *base;      // base flash address of ffs blocks
    uint16 manufact;   // read with flash A0 = 0
    uint16 device;     // read with flash A0 = 1
    uint8  driver;     // flash driver type
    uint8  numblocks;  // number of blocks defined for use by ffs
};
extern const struct flash_info_s flash_info[];

enum DEVICE_STATE {
    DEV_READ,
    DEV_ERASE,
    DEV_ERASE_SUSPEND,
    DEV_WRITE,
    DEV_WRITE_SUSPEND
};

enum DEVICE_STATUS {
    DEV_OK,
    DEV_VPP_RANGE_ERROR,
    DEV_PROGRAM_ERROR,
    DEV_PERMISSION_ERROR,
    DEV_CMD_SEQ_ERROR,
    DEV_BLK_ERASE_ERROR,
    DEV_BLK_LOCKED_ERROR
};

// Note that it is *VERY* important that pointers to hardware and flash are
// declared volatile, otherwise the compiler optimizes some reads and writes
// out and this results in non-working code!
struct dev_s {
    char   *base;       // base flash address of ffs blocks
    struct block_info_s *binfo;
    uint16 manufact;
    uint16 device;
    volatile uint16 *addr; // address being written or erased
    uint16 data;           // data currently being written (dev.state = WRITE)
    uint16  write_buffersize;  // Size of write buffer 
    uint32 blocksize;
    uint8  blocksize_ld;
    uint8  atomlog2;
    uint8  driver;
    volatile uint8  state;       // state of device (DEVICE_STATE)
    uint8  numblocks;
    uint8  atomsize;
    uint8  atomnotmask;

};
extern struct dev_s dev;

    
// Flash low level driver function pointers
struct ffsdrv_s {
    int  (* init)(void);
    void (* erase)(uint8 block);
    void (* write_buffer)(volatile uint16 *dst, volatile uint16 *src, 
                          uint16 num_words );
    void (* write_halfword)(volatile uint16 *dst, uint16 value);
    void (* write)(void *dst, const void *src, uint16 size);
    void (* write_suspend)(void);
    void (* write_resume)(void);
    void (* erase_suspend)(void);
    void (* erase_resume)(void);
    void (* erase_sector)(void *dst);

};
extern struct ffsdrv_s ffsdrv;


/******************************************************************************
 * Function Prototypes
 ******************************************************************************/

void ffsdrv_write_byte(void *dst, uint8 value);
effs_t ffsdrv_init(void);

void ffsdrv_write_error(uint16 old, uint16 new);

extern uint32 ffs_ram_image_address;
extern volatile uint32 flash_base_addr;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品小仙女| 99国内精品久久| 久久先锋影音av鲁色资源| 极品少妇xxxx偷拍精品少妇| 久久奇米777| 成人黄色软件下载| 亚洲天堂2014| 欧美日韩国产精品成人| 男女男精品网站| 国产网站一区二区| 91女人视频在线观看| 亚洲精品视频自拍| 日韩一区二区电影| 国产91露脸合集magnet | 精品欧美一区二区在线观看| 国产中文字幕精品| 国产精品不卡一区| 欧美日韩精品欧美日韩精品一综合| 日本视频在线一区| 中文字幕国产一区二区| 欧洲av一区二区嗯嗯嗯啊| 蜜桃一区二区三区四区| 国产三级精品视频| 91福利国产精品| 亚洲蜜臀av乱码久久精品| 首页国产丝袜综合| 天天色天天操综合| 国产v日产∨综合v精品视频| 91精品国产综合久久久久久久| 亚洲午夜激情网站| 成人免费毛片app| 97精品国产露脸对白| 国产成人高清在线| 欧美曰成人黄网| 亚洲国产精品传媒在线观看| 日韩久久精品一区| 91精品国产91久久久久久一区二区| 91麻豆精品国产91| 欧美精品日韩综合在线| 中文字幕五月欧美| 久久国产欧美日韩精品| 91精品国产色综合久久不卡蜜臀| 91麻豆精品国产91久久久久久久久 | 国产精品久久精品日日| 精品久久国产老人久久综合| 884aa四虎影成人精品一区| 99精品国产99久久久久久白柏| 极品少妇xxxx偷拍精品少妇| 国产精品538一区二区在线| 久久99在线观看| 美女任你摸久久| 国产成人精品午夜视频免费| 91麻豆高清视频| 色婷婷激情一区二区三区| 亚洲高清视频在线| 久久国内精品视频| 国产91精品一区二区麻豆网站| 日本一区二区免费在线| 日日欢夜夜爽一区| 欧美精品电影在线播放| 99r精品视频| 卡一卡二国产精品 | 丝袜美腿亚洲一区| 国产精品成人一区二区艾草| 日韩精品一区国产麻豆| 欧美综合天天夜夜久久| 国产精品一区二区久久不卡| 日韩精品一级二级| 亚洲精品网站在线观看| 国产精品视频九色porn| 精品少妇一区二区三区在线播放 | 岛国精品一区二区| 老司机免费视频一区二区| 亚洲午夜私人影院| 国产精品久久久久一区二区三区共| 日韩免费高清视频| 欧美久久久影院| 91片在线免费观看| 99久久亚洲一区二区三区青草| 国内精品伊人久久久久av影院| 日韩专区一卡二卡| 亚洲国产日韩一区二区| 亚洲女同一区二区| 中文字幕高清一区| 久久婷婷久久一区二区三区| 日韩无一区二区| 777亚洲妇女| 欧美日韩精品一区视频| 在线看国产日韩| 色综合久久88色综合天天| 99久久免费国产| 91亚洲精品乱码久久久久久蜜桃| 丰满少妇久久久久久久 | 免费在线视频一区| 亚洲6080在线| 亚洲一区在线电影| 一区二区三区精品在线| 亚洲伦理在线免费看| 亚洲人一二三区| 18成人在线视频| 亚洲精选视频在线| 亚洲日本va在线观看| 亚洲免费三区一区二区| 自拍偷拍亚洲激情| 亚洲欧美日韩小说| 一区二区三区欧美亚洲| 夜夜精品视频一区二区| 欧美激情综合网| 精品国产乱码久久久久久蜜臀| 欧美成人一级视频| 久久婷婷色综合| 中文在线一区二区| 中文字幕制服丝袜成人av | 天天操天天色综合| 日韩在线一区二区三区| 男男gaygay亚洲| 国产一区二区三区日韩| 国产精品影视在线| 成人性生交大片| 91亚洲国产成人精品一区二三 | 亚洲色图视频免费播放| 中文字幕制服丝袜一区二区三区| 亚洲视频在线一区观看| 亚洲毛片av在线| 亚洲成人资源在线| 免费高清不卡av| 国产精品 日产精品 欧美精品| 丁香啪啪综合成人亚洲小说| 99久久国产综合精品女不卡| 91久久精品午夜一区二区| 国产精品69毛片高清亚洲| 亚洲午夜羞羞片| 久久精品一区二区三区不卡| 欧美一卡2卡三卡4卡5免费| 精品一区二区成人精品| 日本一区二区电影| 欧美色国产精品| 欧美理论片在线| 在线观看免费一区| 久久99精品国产.久久久久久 | 国产精品成人在线观看| 欧美精品久久天天躁| 欧美日韩亚洲综合一区二区三区| 欧美一二区视频| 欧美人与z0zoxxxx视频| 欧美一区二区三区在线| 2024国产精品视频| 亚洲柠檬福利资源导航| 亚洲成人第一页| 国产一区二区三区美女| 91农村精品一区二区在线| 91.成人天堂一区| 国产亚洲精久久久久久| 亚洲精品久久7777| 成人久久久精品乱码一区二区三区| 蜜桃91丨九色丨蝌蚪91桃色| 精品一区二区三区在线播放视频| 极品瑜伽女神91| 青青草伊人久久| 久久精品国产一区二区三| av电影在线观看一区| 久久久国际精品| 中文字幕一区三区| 国产精品二区一区二区aⅴ污介绍| 亚洲美女免费在线| 国产一区二区三区观看| 欧美日韩大陆一区二区| 91在线观看美女| 精品福利av导航| 中文字幕一区二| 精品亚洲成a人| 国产丶欧美丶日本不卡视频| 色婷婷av久久久久久久| 欧美成人伊人久久综合网| 中文字幕一区二| 精品一区二区国语对白| 91国偷自产一区二区三区成为亚洲经典 | 色综合婷婷久久| 欧美一级夜夜爽| 亚洲欧美一区二区三区孕妇| 精品一区二区三区在线播放 | 欧美狂野另类xxxxoooo| 国产精品私房写真福利视频| 日韩精品电影在线观看| 91在线视频官网| 精品免费一区二区三区| 亚洲激情一二三区| 国产精品自拍av| 欧美老女人第四色| 中文字幕一区二区三区四区不卡| 老司机精品视频在线| 欧洲精品一区二区三区在线观看| 久久久久久久网| 午夜久久久久久久久| 99国产精品久久久| 欧美tk丨vk视频| 亚洲福利一区二区三区| 色综合一区二区三区| 久久久www成人免费毛片麻豆| 日韩电影免费一区|