📄 iodriver.h
字号:
/****************************************************************************/
/******************** 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 + -