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

📄 iodriver.h

📁 好记星的控件,包括button,list,对文件操作
💻 H
📖 第 1 页 / 共 2 页
字号:
/****************************************************************************/
/******************** POWER电池电压管理驱动的相关定义与说明 *****************/
UINT  GetVoltage(VOID);         // 得到当前的电池电压值,最高位为1表示低电压
BOOL  GetUsbChargeState(VOID);  // 得到当前的充电状态
BOOL	USBIsConnect(VOID);
BOOL	USBDisConnect(VOID);
BOOL	CheckUSBConnectOnce(VOID);
VOID USBDisableAutoMode (VOID);
VOID USBEnableAutoMode (VOID);
BOOL BatteryCheck(void);
/****************************************************************************/
/****************************************************************************/
// for Alarm Power on
#if 0
    BOOL    CheckIsAlarmPowerOn(VOID);
    VOID    ClearAlarmPowerOnFlag(VOID);
    VOID    AlarmPowerOnSetHook(VOID);
#else
    BOOL CheckAlarmOPenPower(void);
    void ClearAlarmOPenPower(void);
    void AlarmCallBackOpenPowerOn(void);

    #define CheckIsAlarmPowerOn     CheckAlarmOPenPower
    #define ClearAlarmPowerOnFlag   ClearAlarmOPenPower
    #define AlarmPowerOnSetHook     AlarmCallBackOpenPowerOn

#endif

/****************************************************************************/
/******************** WatchDog系统监视的相关函数定义与说明 ******************/
BOOL  SysWatchInitialize(VOID);     // 系统WATCHDOG监视初始化
VOID  SysWatchStart(int nTime);     // 开始系统WATCHDOG监视
VOID  SysWatchEnd(VOID);            // 结束系统WATCHDOG监视
VOID  SysWatchClean(VOID);          // 系统WATCHDOG监视计数清零
/****************************************************************************/
/****************************************************************************/


/****************************************************************************/
/******************************* 硬写屏功能函数 *****************************/
void    HwClearScreen(UINT16 wColor);
void    HwShowString( int x, int y, UINT8 *pStr, UINT16 wColor );
UINT16 *HwGetVirtualBuffer(void);
void    HwDisplayVirtualBuffer(void);

#define IO_DRV_ERROR_DOOR_OPEN          0
#define IO_DRV_ERROR_DRIVER_INIT        1
void    ShowBmp1BitErrorShow(const UINT8 *pHint);
void    ShowError(int nError);
/****************************************************************************/
/****************************************************************************/


/****************************************************************************/
/************************* CACHE协处理器操作相关函数 ************************/
VOID  IntCoprocessorInitialize(VOID);   // 初始化协处理器,即CACHE
VOID  EnableCache(VOID);                // 允许CACHE缓冲
VOID  DisableCache(VOID);               // 禁止CACHE缓冲
VOID  CleanCache(VOID);                 // 清除CACHE中数据
UINT  GetCacheDeviceID(VOID);           // read cache device ID code
UINT  GetCacheType(VOID);               // read Cache type
/****************************************************************************/
/****************************************************************************/



/****************************************************************************/
/**************************** 驱动中用于延时的函数 **************************/
VOID  DriverDelayMs(int nMilliseconds);     // 延时毫秒的函数
        // 参数: nMilliseconds - 要延时的毫秒数,最大131071
VOID  DriverDelay64Microsecond(int n64Microsecond); // 延时数64微秒的函数
        // 参数: n64Microsecond - 要延时64微秒数,最大1048575
/****************************************************************************/
/****************************************************************************/
VOID  MachineSwReset(VOID);     // 软件RESET机器

VOID  MachinePowerOff(VOID);    // 关机


#define PLL_CLOCK       192000000   // PLL频率192MHz
#define CPU_RUN_CLOCK   120000000   // CPU主频120MHz

// 运行频率改变相关函数
void  MachineRunHigh(void);
void  MachineRunNormal(void);
void  MachineRunLow(void);
void  MachineRunIdle(void);

/************************************************************/
/*  For Target Driver										*/
/************************************************************/
#ifndef	_WIN32
#include	"IoDriverL05.h"
#endif


/****************************************************************************/
#ifdef _WIN32
//    #define FLASHMNG_ED136_EN   1 
                            //must be same as kerner.h
#endif

#ifdef	FLASHMNG_ED136_EN

/****************************************************************************/
/******************** NandFlash存储设备驱动的相关定义与说明 *****************/
/* 定义Flash操作的类型 */
#define FLASH_IO_ONLYDATA       0   // 仅操作FLASH页的数据区
#define FLASH_IO_DATASPARE      1   // 同时操作FLASH页的数据区和SPARE区
#define FLASH_IO_ONLYSPARE      2   // 仅操作FLASH页的SPARE区

#define FLASH_IO_ERASEBLK       10   // FLASH擦除操作
#define FLASH_IO_GETPARAM       11   // 获取FLASH的信息

/* 相关结构定义 */
typedef struct tagDRIVER_INFO
{
    void    *pParamTable;
    void    *hMutex;
} DRIVER_INFO, *PDRIVER_INFO;

typedef struct tagNFLASH_BLOCKMAP
{
    UNSIGNED    uStartAddress;      // 线性地址
    UINT32        nBlockName;         // 块号
} NFLASH_BLOCKMAP, *PNFLASH_BLOCKMAP;

typedef enum {
	ECC_NO_ERROR		= 0,		/* no error */
	ECC_CORRECTABLE_ERROR	= 1,		/* one bit data error */
	ECC_ECC_ERROR		= 2,		/* one bit ECC error */
	ECC_UNCORRECTABLE_ERROR	= 3		/* uncorrectable error */
}	eccdiff_t,Bool_EccDiff;
eccdiff_t compare_ecc( UINT8 *iEccdata1, UINT8 *iEccdata2,
		               UINT8 *pPagedata, UINT *pOffset, UINT8 *pCorrected);
/****************************************************************************/
/****************************************************************************/


// Flash parameter. there are some redundance fields
// uPagePerBlock = uDataPerBlock/uDataPerPage = uSparePerBlock/uSparePerPage
// flash size = uDataPerPage * uPageSum = uDataPerBlock * uBlockSum
// uBlockSum = uUserBlockNum + uPrepareBlockNum
typedef struct tagNFLASH_PARAMETER
{
    UINT8               chipID;             // Chip ID
    UINT8               factoryID;          // factory ID
    UINT8               factoryName[10];    // factory name string

    UINT32              uDataPerPage;       // data size per page
    UINT32              uSparePerPage;      // spare size per page
    UINT32              uPageSum;           // total page number,

    UINT32              uPagePerBlock;      // page number per block

    UINT32              uDataPerBlock;      // data size per block
    UINT32              uSparePerBlock;     // spare  size per block
    UINT32              uBlockSum;          // total block number

    UINT32              uUserBlockNum;      // user block
    UINT32              uPrepareBlockNum;   // prepare block
} NFLASH_PARAMETER, *PNFLASH_PARAMETER;

#else
    // Not _WIN32
/****************************************************************************/
/******************** NandFlash存储设备驱动的相关定义与说明 *****************/


#define NORMAL_PAGE_SIZE            512
#define NORMAL_SPARE_SIZE           16

#define FLASH_RESERVE_BLOCK         1

/* Flash命令类型 */
#define FLASH_COMMAND_FORMAT        0x1000      // FLASH低级格式化
#define FLASH_COMMAND_GETINFO       0x1001      // FLASH相关信息

/* Flash Error type*/
#define FLASH_ERR_NONE               0          // 没有错误
#define FLASH_ERR_NOFORMAT          -1          // 没有格式化
#define FLASH_ERR_NOPREPARE         -3          // 没有备用块
#define FLASH_ERR_LOWVOLTAGE        -2          // 低电压(格式化才检查)
#define FLASH_ERR_DRV               -4          // 驱动错误
#define FLASH_ERR_MEM               -12         // 内存申请错误
#define FLASH_ERR_COUNTER           -14         // 擦除计数器错误(调试使用)
#define FLASH_ERR_UNKNOW            -15         // 其他错误

// following should be processed by application
#define NFLS_ERR_NO                  0          // ok
#define NFLS_ERR_FORMAT             -1          // format error, need format
#define NFLS_ERR_LOWVOLTAGE         -2          // battery low

// following should be processed by system
#define NFLS_ERR_NOSPACE            -3          // bad blocks are too many to use
#define NFLS_ERR_DRIVER             -4          // nucleus driver manager error
#define NFLS_ERR_OVER               -5          // address is out of range
#define NFLS_ERR_COMMAND            -6          // illegal command
#define NFLS_ERR_BOUNDARY           -7          // not align linear address with page boundary
#define NFLS_ERR_PARAMETER          -8          // NFLASH_PARAMETER in not available
#define NFLS_ERR_UNKNOWNID          -9          // unknown chip ID
#define NFLS_ERR_TIMEOUT            -10         // busy phase is too long
#define NFLS_ERR_INTERNAL           -11         // some internal error occur
#define NFLS_ERR_NEM                -12         // memory is not enough
#define NFLS_ERR_ECC                -13         // ECC error






/* 定义Flash操作的类型 */
#define FLASH_IO_ONLYDATA       0   // 仅操作FLASH页的数据区
#define FLASH_IO_DATASPARE      1   // 同时操作FLASH页的数据区和SPARE区
#define FLASH_IO_ONLYSPARE      2   // 仅操作FLASH页的SPARE区

#define FLASH_IO_ERASEBLK       10   // FLASH擦除操作
#define FLASH_IO_GETPARAM       11   // 获取FLASH的信息
#define FLASH_IO_RESET       	12   // reset flash and ECC module


/* 相关结构定义 */
typedef struct tagDRIVER_INFO
{
    void    *pParamTable;
    void    *hMutex;
} DRIVER_INFO, *PDRIVER_INFO;

typedef struct tagNFLASH_BLOCKMAP
{
    UNSIGNED    uStartAddress;      // 线性地址
    UINT32        nBlockName;         // 块号
} NFLASH_BLOCKMAP, *PNFLASH_BLOCKMAP;

typedef struct tagNFLASH_PARAMETER {
    UINT8               chipID;             // Chip ID
    UINT8               factoryID;          // factory ID
    UINT8               factoryName[10];    // factory name string

    UINT32              uDataPerPage;       // data size per page
    UINT32              uSparePerPage;      // spare size per page
    UINT32              uPageSum;           // total page number,

    UINT32              uPagePerBlock;      // page number per block

    UINT32              uDataPerBlock;      // data size per block
    UINT32              uSparePerBlock;     // spare  size per block
    UINT32              uBlockSum;          // total block number

    UINT32              uUserBlockNum;      // user block
    UINT32              uPrepareBlockNum;   // prepare block
} NFLASH_PARAMETER, *PNFLASH_PARAMETER;

#endif

#endif  /* #ifndef __IODRIVER_H__ */

⌨️ 快捷键说明

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