intel_k3_flash.h

来自「motorola 针对coldfire 5275 评估板的Dbug bootlo」· C头文件 代码 · 共 100 行

H
100
字号
/*
 * File:        intel_k3_flash.h
 * Purpose:     Flash driver for programming Intel Flash devices
 *
 * Notes:       This driver supports a single banks of Intel Flash.
 *              A bank is defined as one or more of the same Flash 
 *              device connected to a single chip-select.
 */

#ifndef _INTEL_K3_FLASH_H_
#define _INTEL_K3_FLASH_H_

/********************************************************************/

void
intel_k3_flash_init(ADDRESS);

int
intel_k3_flash_erase(ADDRESS, int, void(*)(char));

int 
intel_k3_flash_program(ADDRESS, ADDRESS, int, int, void(*)(void), void(*)(char));

ADDRESS 
intel_k3_flash_sector_start(ADDRESS);

ADDRESS 
intel_k3_flash_sector_end(ADDRESS);

/********************************************************************/

#ifndef INTEL_K3_FLASH_DEVICES
#define INTEL_K3_FLASH_DEVICES  1
#endif

/********************************************************************/
/*
 * Defines used to correctly address the Flash device(s)
 *
 * INTEL_K3_FLASH_BUS_SHIFT - Number of bits to right-shift the byte
 *                            offsets of the sectors
 * INTEL_K3_FLASH_CELL      - Port size of Flash device(s)
 * INTEL_K3_FLASH_CMD_DATA  - Format of data when issuing commands
 *                        
 */
#if (INTEL_K3_FLASH_DEVICES == 1)
    #define INTEL_K3_FLASH_BUS_SHIFT        1
    #define INTEL_K3_FLASH_CELL             vuint16
    #define INTEL_K3_FLASH_CELL_BYTES       2
    #define INTEL_K3_FLASH_CELL_MASK        0x1
    #define INTEL_K3_FLASH_CMD_DATA(x)      ((uint16)x)
#elif (INTEL_K3_FLASH_DEVICES == 2)
    #define INTEL_K3_FLASH_BUS_SHIFT        2
    #define INTEL_K3_FLASH_CELL             vuint32
    #define INTEL_K3_FLASH_CELL_BYTES       4
    #define INTEL_K3_FLASH_CELL_MASK        0x3
    #define INTEL_K3_FLASH_CMD_DATA(x)      ((uint32)((x<<16)|x))
#else
#error "Unsupported number of Flash devices"
#endif

/********************************************************************/
/*
 * Flash sector definitions - addresses are given in bytes (not words!)
 */
#if (defined(INTEL_K3_FLASH_28F640K3) || defined(INTEL_K3_FLASH_28F640K18))
    /*
     * Uniform sectors of 128 KBytes
     */
    #define INTEL_K3_FLASH_SECTORS  64
    #define K3_SSIZE(n)             (0x20000 * INTEL_K3_FLASH_DEVICES)
    #define K3_SOFFSET(n)           (0x20000 * n)
    #define K3_SADDR(n)             ((0x20000 * n) >> INTEL_K3_FLASH_BUS_SHIFT)

#elif (defined(INTEL_K3_FLASH_28F128K3) || defined(INTEL_K3_FLASH_28F128K18))
    /*
     * Uniform sectors of 128 KBytes
     */
    #define INTEL_K3_FLASH_SECTORS  128
    #define K3_SSIZE(n)             (0x20000 * INTEL_K3_FLASH_DEVICES)
    #define K3_SOFFSET(n)           (0x20000 * n)
    #define K3_SADDR(n)             ((0x20000 * n) >> INTEL_K3_FLASH_BUS_SHIFT)

#elif (defined(INTEL_K3_FLASH_28F256K3) || defined(INTEL_K3_FLASH_28F256K18))
    /*
     * Uniform sectors of 128 KBytes
     */
    #define INTEL_K3_FLASH_SECTORS  256
    #define K3_SSIZE(n)             (0x20000 * INTEL_K3_FLASH_DEVICES)
    #define K3_SOFFSET(n)           (0x20000 * n)
    #define K3_SADDR(n)             ((0x20000 * n) >> INTEL_K3_FLASH_BUS_SHIFT)

#else
#error "Unsupported Flash device"
#endif

/********************************************************************/

#endif /* _INTEL_K3_FLASH_H */

⌨️ 快捷键说明

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