iplinfo.c

来自「M-System DOC(Disk on a Chip) Flash芯片的诊断工」· C语言 代码 · 共 108 行

C
108
字号
#include "iplinfo.h"

FLStatus DINFO_IPL(EXBYTE handle)
{

  IOreq ioreq;
  PhysicalInfo pInfo;
  FLStatus Status;
  BDKStruct bdkStruct;
  FLExtendedDiskInfo info;




  /* Get the IPL size */
  ioreq.irHandle = handle;
  ioreq.irData = &info;
  ioreq.irLength = FL_ALL_FLOORS;

  ioreq.irCount = 0; /* partition */
  ioreq.irFlags = FL_DISK_PARTITION;
  info.dwStructSize = sizeof(info);
  Status = flGetExtendedDiskInfo( &ioreq );
  if( Status != flOK )
	 return Status;

  ioreq.irHandle  = handle;
  bdkStruct.signOffset = 8;
  bdkStruct.startingBlock = 0;
  ExMemCpy(bdkStruct.oldSign,"BIPO",4);
  ioreq.irData		=  &bdkStruct;
  Status = DINFO_bdkPartitionInfo(&ioreq);

  ioreq.irHandle	= handle;
  ioreq.irData		= &pInfo;
  Status =	DINFO_flGetPhysicalInfo(&ioreq);
  if(STATUS_ERROR)
    return Status;


  DinfoPrint( EX_TEXT("\n IPL INFO.\n") );
  ExPrintLine( 11 );


  if( Option.Extraflag )
  {



    if( (readRegContent((EXDWORD)curFlash->win,0)==0x55) && (readRegContent((EXDWORD)curFlash->win,1)==0xAA) )
	  {
      DinfoPrint( EX_TEXT("   IPL is Loaded\n") ) ;
    }
    else
    {
      DinfoPrint( EX_TEXT("   IPL is not Loaded\n") ) ;
    }
  }

  switch (pInfo.mediaType)
  {
		case FL_DOC_OREN:
      DinfoPrint( EX_TEXT("   IPL type        :  RAM.\n") ) ;
      DinfoPrint( EX_TEXT("   IPL size        :  %d bytes (%d KB).\n"), 1024*flFlashOf(handle)->noOfFloors, flFlashOf(handle)->noOfFloors ) ;
	  break;

    case FL_DOC2000TSOP:
      DinfoPrint( EX_TEXT("   IPL type        :  RAM.\n") ) ;
	  DinfoPrint( EX_TEXT("   IPL size        :  1024 bytes (1 KB).\n") ) ;
	  break;
    case FL_MDOCP:
      DinfoPrint( EX_TEXT("   IPL type        :  RAM.\n") ) ;
      /*            DinfoPrint(( EX_TEXT("   IPL size        :  %d bytes (%d KB).\n"), bdkVol->flash->noOfFloors * KBYTE, bdkVol->flash->noOfFloors ) ; */
	  /*			CheckSumLen = 1024 * bdkVol->flash->noOfFloors; */
      break;
    case FL_MDOCP_16:
      DinfoPrint( EX_TEXT("   IPL type        :  RAM.\n") ) ;
      /*            DinfoPrint(( EX_TEXT("   IPL size        :  %d bytes (%d KB).\n"), bdkVol->flash->noOfFloors * KBYTE, bdkVol->flash->noOfFloors ) ; */
      /*			CheckSumLen = 1024 * bdkVol->flash->noOfFloors; */
      break;
    case FL_MDOC:
      DinfoPrint( EX_TEXT("   IPL type        :  RAM.\n") ) ;
      DinfoPrint( EX_TEXT("   IPL size        :  512 bytes (0.5 KB).\n") ) ;
      break;
    case FL_DOC:
      DinfoPrint( EX_TEXT("   IPL type        :  ROM.\n") ) ;
      DinfoPrint( EX_TEXT("   IPL size        :  Unknown\n") ) ;
      break;

    case FL_MDOC512_G3:
	 case FL_MDOC256_P3:
      DinfoPrint( EX_TEXT("   IPL type        :  RAM.\n") ) ;
      /* DinfoPrint( EX_TEXT("   IPL size        :  2K bytes\n") ) ; */
        DinfoPrint( EX_TEXT("   IPL size        :  %d\n"),info.dwIPLSize );
      break;

    default:
      break;
  }





  return Status;

}

⌨️ 快捷键说明

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