📄 ecc.h
字号:
/*
********************************************************
// Copyright (c)2004 Ark Pioneer Microelectronics Ltd.,
// All Rights Reserved
//
// Filename:ecc.h
// Version:1.0
// Created:2004.02.16 By: Philip
*********************************************************
*/
#ifndef _ECC_H_
#define _ECC_H_
#include "config.h"
#define ECC_REG_OFFSET 0xBFF28C00
//allocate to store result of ecc operation (Error address and error mask)
//just for test
#define ECC_TEMP_OFFSET 0xa0500000
#define ECC_RESULT_OFFSET 0xa0500010
/*----------------------------------------------------------------
USB ECC control
----------------------------------------------------------------*/
// for ECC_CTL_REG register
#define ECC_RESET 0x01
#define ECC_512_MODE 0x00 //bit1 = 0
#define ECC_520_MODE 0x02 //bit1 = 1
// bit7: ecc done; bit6: error flag
#define ECC_DONE_FIND_ERR 0xa0
#define ECC_DONE_NO_ERR 0x80
#define bmECC_DONE bmBIT7
#define EXT_DATA_LEN 0x08
enum eEccModeSelect {
mode512,
mode520
};
typedef enum eEccModeSelect eMode_t;
typedef struct _DATA_TO_MODIFY
{
WORD DataSerialNumber[3]; // serial number of the data to modify
WORD LengthToModify; // how many BYTEs to modify
} DATA_TO_MODIFY, *PDATA_TO_MODIFY;
/*----------------------------------------------------------------
Declaration
----------------------------------------------------------------*/
extern void ram512_init(void);
extern void EccStart(enum eEccModeSelect eMode);
extern void WaitEccEnd(void);
extern void ecc_test(void);
extern BOOLEAN ModifyData(PBYTE RamStart, PDATA_TO_MODIFY Mdf);
extern void fun(WORD funn, PWORD outres);
extern WORD parameter();
/*----------------------------------------------------------------
USB ECC Registers (32-bits width, but only low-8-bits valid)
----------------------------------------------------------------*/
#define ECC_CTL_REG (ECC_REG_OFFSET + 0x000)
#define SFR_0_LOW (ECC_REG_OFFSET + 0x004)
#define SFR_0_HIGH (ECC_REG_OFFSET + 0x008)
#define SFR_1_LOW (ECC_REG_OFFSET + 0x00c)
#define SFR_1_HIGH (ECC_REG_OFFSET + 0x010)
#define SFR_2_LOW (ECC_REG_OFFSET + 0x014)
#define SFR_2_HIGH (ECC_REG_OFFSET + 0x018)
#define SFR_3_LOW (ECC_REG_OFFSET + 0x01c)
#define SFR_3_HIGH (ECC_REG_OFFSET + 0x020)
#define SFR_4_LOW (ECC_REG_OFFSET + 0x024)
#define SFR_4_HIGH (ECC_REG_OFFSET + 0x028)
#define SFR_5_LOW (ECC_REG_OFFSET + 0x02c)
#define SFR_5_HIGH (ECC_REG_OFFSET + 0x030)
#define SFR_6_LOW (ECC_REG_OFFSET + 0x034)
#define SFR_6_HIGH (ECC_REG_OFFSET + 0x038)
#define SFR_7_LOW (ECC_REG_OFFSET + 0x03c)
#define SFR_7_HIGH (ECC_REG_OFFSET + 0x040)
#define SFR_8_LOW (ECC_REG_OFFSET + 0x044)
#define SFR_8_HIGH (ECC_REG_OFFSET + 0x048)
#define SFR_9_LOW (ECC_REG_OFFSET + 0x04c)
#define SFR_9_HIGH (ECC_REG_OFFSET + 0x050)
#define SFR_10_LOW (ECC_REG_OFFSET + 0x054)
#define SFR_10_HIGH (ECC_REG_OFFSET + 0x058)
#define SFR_11_LOW (ECC_REG_OFFSET + 0x05c)
#define SFR_11_HIGH (ECC_REG_OFFSET + 0x060)
#define SFR_12_LOW (ECC_REG_OFFSET + 0x064)
#define SFR_12_HIGH (ECC_REG_OFFSET + 0x068)
#define SFR_13_LOW (ECC_REG_OFFSET + 0x06c)
#define SFR_13_HIGH (ECC_REG_OFFSET + 0x070)
#define SFR_14_LOW (ECC_REG_OFFSET + 0x074)
#define SFR_14_HIGH (ECC_REG_OFFSET + 0x078)
#define SFR_15_LOW (ECC_REG_OFFSET + 0x07c)
#define SFR_15_HIGH (ECC_REG_OFFSET + 0x080)
#define SFR_16_LOW (ECC_REG_OFFSET + 0x084)
#define SFR_16_HIGH (ECC_REG_OFFSET + 0x088)
#define SFR_17_LOW (ECC_REG_OFFSET + 0x08c)
#define SFR_17_HIGH (ECC_REG_OFFSET + 0x090)
#define SFR_18_LOW (ECC_REG_OFFSET + 0x094)
#define SFR_18_HIGH (ECC_REG_OFFSET + 0x098)
#define PAR_0 (ECC_REG_OFFSET + 0x09c)
#define PAR_1 (ECC_REG_OFFSET + 0x0a0)
#define PAR_2 (ECC_REG_OFFSET + 0x0a4)
#define PAR_3 (ECC_REG_OFFSET + 0x0a8)
#define PAR_4 (ECC_REG_OFFSET + 0x0ac)
#define PAR_5 (ECC_REG_OFFSET + 0x0b0)
#define PAR_6 (ECC_REG_OFFSET + 0x0b4)
#define PAR_7 (ECC_REG_OFFSET + 0x0b8)
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -