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

📄 reginfo.c

📁 M-System DOC(Disk on a Chip) Flash芯片的诊断工具, 可以从Flash芯片中获取特定的数据信息, 用于判断芯片当前的状态.
💻 C
字号:
#include "reginfo.h"

FLStatus DINFO_REG( EXBYTE handle )
{
    DinfoPrint( EX_TEXT("\n REGISTER INFO.\n") );
	ExPrintLine( 16 );

  switch( curFlash->mediaType )
  {
  case( FL_DOC_OREN ):
/*    DinfoPrint( "DOC CONTROL REGISTES   \n" );  */
    DinfoPrint( "   OREN CHIP ID REGISTER                0x1000\n" );
    DinfoPrint( "   OREN CHIP ID CONFIRM REGISTER        0x1074\n" );
    DinfoPrint( "   OREN NOP REGISTER                    0x1002\n" );
    DinfoPrint( "   OREN ALIAS RESOLUTION REGISTER       0x1004\n" );
    DinfoPrint( "   OREN BUS LOCK REGISTERISTER          0x1006\n" );
    DinfoPrint( "   OREN BUS SWAP REGISTER               0x1008\n" );
    DinfoPrint( "   OREN DEVICE ID SELECT REGISTER       0x100A\n" );
    DinfoPrint( "   OREN DOC CONTROL REGISTER            0x100C\n" );
    DinfoPrint( "   OREN DOC CONTROL CONFIRM REGISTER    0x1072\n" );
    DinfoPrint( "   OREN CONFIGURATION REGISTER          0x100E\n" );
    DinfoPrint( "   OREN INTERRUPT CONTROL REGISTER      0x1010\n" );
    DinfoPrint( "   OREN FOUNDRY TEST REGISTER           0x1076\n" );
    DinfoPrint( "   OREN HW PROTECTION CONTROL REGISTER  0x1012\n" );
    DinfoPrint( "   OREN FOUNDRY KEY REGISTER            0x1078\n" );
    DinfoPrint( "   OREN OUTPUT CONTROL REGISTER         0x1014\n" );
/*    DinfoPrint( "DOC ICMU REGISTES   \n" );  */
    DinfoPrint( "   OREN ICMU CORRECT FACTOR REG    0x1016\n" );
    DinfoPrint( "   OREN ICMU CONTROL REG           0x1018\n" );
    DinfoPrint( "   OREN CLOCK COUNTER REG          0x101A\n" );
/*    DinfoPrint( "DOC LPC REGISTES   \n" );  */
    DinfoPrint( "   OREN LPC CONFIGURATION REG      0x1020\n" );
    DinfoPrint( "   OREN LPC STRAPPING REG          0X1022 \n" );
    DinfoPrint( "   OREN LPC DMA REG                0x1024\n" );
    DinfoPrint( "   OREN LPC INTERRUPT REG          0x1026\n" );
    DinfoPrint( "   OREN LPC IO INDEX REG           0x0007\n" );
/*    DinfoPrint( "DOC FLASH REGISTES   \n" );  */
    DinfoPrint( "   OREN FLASH CONTROL REG          0x1038\n" );
    DinfoPrint( "   OREN FLASH STATUS REG           0x103A \n" );  
    DinfoPrint( "   OREN FLASH ACCESS CONFIG REG    0x103E\n" );
    DinfoPrint( "   OREN FLASH SEQUENCE REG         0x1032\n" );
    DinfoPrint( "   OREN FLASH COMMAND REG          0x1034\n" );
    DinfoPrint( "   OREN FLASH ADDRESS REG          0x1036\n" );
    DinfoPrint( "   OREN FLASH DATA REG             0x1030\n" );
    DinfoPrint( "   OREN FLASH DATA REG LB BYTE     0x103C\n" );
/*    DinfoPrint( "DOC ECC REGISTES   \n" );  */
    DinfoPrint( "   OREN FLASH BCH PARITY REG       0x1048\n" );
    DinfoPrint( "   OREN HAMMING PARITY REG         0x1046 \n" );
    DinfoPrint( "   OREN ECC PRESET REG             0x1044\n" );
    DinfoPrint( "   OREN ECC CONTROL REG 0          0x1040\n" );
    DinfoPrint( "   OREN ECC CONTROL REG 1          0x1042\n" );
/*    DinfoPrint( "DOC PROTECTION REGISTES   \n" );  */
    DinfoPrint( "   OREN COTP POINTER REG           0x1050 \n" );
    DinfoPrint( "   OREN COTP LOCK POINTER REG      0x1052 \n" );
    DinfoPrint( "   OREN BBT POINTER REG            0x1054 \n" );
    DinfoPrint( "   OREN PROTECTION STATUS REG      0x1056 \n" );
    DinfoPrint( "   OREN DPS0 ADDRESS LOW REG       0x1060 \n" );
    DinfoPrint( "   OREN DPS0 ADDRESS HIGH REG      0x1062 \n" );
    DinfoPrint( "   OREN DPS1 ADDRESS LOW REG       0x1064 \n" );
    DinfoPrint( "   OREN DPS1 ADDRESS HIGH REG      0x1066 \n" );
    DinfoPrint( "   OREN DPS0 POINTER REG           0x1068 \n" );
    DinfoPrint( "   OREN DPS1 POINTER REG           0x106A \n" );
    DinfoPrint( "   OREN DPS0 STATUS REG            0x106c \n" );
    DinfoPrint( "   OREN DPS1 STATUS REG            0x106e \n" );
    DinfoPrint( "   OREN DPS 0 KEY REG              0x105c \n" );
    DinfoPrint( "   OREN DPS 1 KEY REG              0x105e \n" );
    DinfoPrint( "   OREN FLASH GEOMETRY REG 0       0x1058 \n" );
    DinfoPrint( "   OREN FLASH GEOMETRY REG 1       0x105a \n" );
/*    DinfoPrint( "DOC DOWNLOAD REGISTES   \n" );  */
    DinfoPrint( "   OREN DOWNLOAD STATUS REGISTER0  0x1070\n" );
    DinfoPrint( "   OREN SEQUENCE CASH RAM START    0x1100\n" );
    break;

  case  FL_MDOC512_G3 :
  case  FL_MDOC256_P3 :

/*    DinfoPrint( "DOC CONTROL REGISTES   \n" );  */
    DinfoPrint( "   MDOC CHIP ID REGISTER                 0x1000\n" );
    DinfoPrint( "   MDOC CHIP ID CONFIRM REGISTER         0x1074\n" );
    DinfoPrint( "   MDOC NOP REGISTER                     0x103E\n" );
    DinfoPrint( "   MDOC ALIAS RESOLUTION REGISTER        0x1004\n" );
    DinfoPrint( "   MDOC BUS LOCK REGISTER                0x1006\n" );
    DinfoPrint( "   MDOC BUS SWAP REGISTER                0x1008\n" );
    DinfoPrint( "   MDOC DEVICE ID SELECT REGISTER        0x100A\n" );
    DinfoPrint( "   MDOC DOC CONTROL REGISTER             0x100C\n" );
    DinfoPrint( "   MDOC DOC CONTROL CONFIRM REGISTER     0x1072\n" );
    DinfoPrint( "   MDOC CONFIGURATION REGISTER           0x100E\n" );
    DinfoPrint( "   MDOC INTERRUPT CONTROL REGISTER       0x1010\n" );
	 DinfoPrint( "   MDOC INTERRUPT STATUS REGISTER        0x1020\n" );
    DinfoPrint( "   MDOC FOUNDRY TEST REGISTER            0x1076\n" );
    DinfoPrint( "   MDOC READ ADDRESS REGISTER            0x1076\n" );
    DinfoPrint( "   MDOC OUTPUT CONTROL REGISTER          0x1014\n" );

    DinfoPrint( "   MDOC DMA CONTROL REGISTER 0           0x1078\n" );
	 DinfoPrint( "   MDOC DMA CONTROL REGISTER 1           0x107A\n" );
	 DinfoPrint( "   MDOC BURST MODE CONTROL REGISTER      0x101C\n" );

	 DinfoPrint( "   MDOC REAL TIME CLK CONTROL REGISTER   0x1016\n" );
 	 DinfoPrint( "   MDOC REAL TIME CLOCK REGISTER         0x1018\n" );

/*    DinfoPrint( "DOC FLASH REGISTES   \n" );  */
    DinfoPrint( "   MDOC FLASH CONTROL REG                0x1038\n" );
    DinfoPrint( "   MDOC FLASH ACCESS CONFIG REG          0x103E\n" );
    DinfoPrint( "   MDOC FLASH SEQUENCE REG               0x1032\n" );
    DinfoPrint( "   MDOC FLASH COMMAND REG                0x1034\n" );
    DinfoPrint( "   MDOC FLASH ADDRESS REG                0x1036\n" );
    DinfoPrint( "   MDOC FLASH DATA REG                   0x103C\n" );
    DinfoPrint( "   MDOC FLASH END OF DATA REG            0x101E\n" );
/*    DinfoPrint( "DOC ECC REGISTES   \n" );  */
    DinfoPrint( "   MDOC BCH PARITY REGISTERS             0x1048-0x104E\n" );
    DinfoPrint( "   MDOC HAMMING PARITY REG               0x1046 \n" );
    DinfoPrint( "   MDOC ECC PRESET REG                   0x1044\n" );
    DinfoPrint( "   MDOC ECC CONTROL REG 0                0x1040\n" );
    DinfoPrint( "   MDOC ECC CONTROL REG 1                0x1042\n" );
/*    DinfoPrint( "DOC PROTECTION REGISTES   \n" );  */
    DinfoPrint( "   MDOC PROTECTION STATUS REG            0x1056 \n" );
    DinfoPrint( "   MDOC DPS0 ADDRESS LOW REG             0x1060 \n" );
    DinfoPrint( "   MDOC DPS0 ADDRESS HIGH REG            0x1062 \n" );
    DinfoPrint( "   MDOC DPS1 ADDRESS LOW REG             0x1064 \n" );
    DinfoPrint( "   MDOC DPS1 ADDRESS HIGH REG            0x1066 \n" );
    DinfoPrint( "   MDOC DPS0 STATUS REG                  0x106c \n" );
    DinfoPrint( "   MDOC DPS1 STATUS REG                  0x106e \n" );
    DinfoPrint( "   MDOC DPS 0 KEY REG                    0x105c \n" );
    DinfoPrint( "   MDOC DPS 1 KEY REG                    0x105e \n" );
/*    DinfoPrint( "DOC DOWNLOAD REGISTES   \n" );  */
    DinfoPrint( "   MDOC DOWNLOAD STATUS REGISTER0        0x1070\n" );
	 DinfoPrint( "   MDOC FIRST GOOD UNIT REG              0x1022\n" );

    break;



  default:
    DinfoPrint( "   Can't display register information\n" );
    break;
  }

  return flOK;;
}


EXBYTE readRegContent( EXDWORD base, EXWORD address )
{
	volatile unsigned char* win;
	win = (volatile unsigned char *)physicalToPointer((base+address),0,0);
	return (*win);
}

⌨️ 快捷键说明

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