helper.c

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

C
258
字号
/****************************************************************************/
/*																			*/
/*         Copyright 2000 Detlef Jenett										*/
/*																			*/
/*         This software is supplied under the terms of a license			*/
/*         agreement or nondisclosure agreement and may not be copied		*/
/*         or disclosed except in accordance with the terms of that			*/
/*         agreement.														*/
/*																			*/
/****************************************************************************/
/*																			*/
/* Author         : Detlef Jenett											*/
/* Creation date  : 05.07.2000												*/
/* Filename       : helper.c												*/
/*																			*/
/* Abstract       :															*/
/*	helper routines	not found in standard C library							*/
/*																			*/
/****************************************************************************/
/*																			*/
/* Rev. Date        Author      Description									*/
/*--------------------------------------------------------------------------*/
/* 1.0	05.07.2000	D.Jenett	initial version								*/
/****************************************************************************/


#include <conio.h>
/****************************************************************************/
/* proprietary include files												*/
/****************************************************************************/
#include "unitinc.h"


/****************************************************************************/
/* Function to open a text file												*/
/*--------------------------------------------------------------------------*/
/*	Input:																	*/
/*		pName:			pointer to file name buffer							*/
/*		pFileHandle		pointer to file handle buffer						*/
/*	Output:																	*/
/*		Status:			successfull		-> STATUS_NOERROR					*/
/*						unsuccessfull	-> STATUS_ERROR						*/
/****************************************************************************/

FLStatus
OpenTextFile()
{
  FLStatus Status = flOK;
#if 0

  if( Option.LogFileName ) {
		/*
    * try create new log file
    */
    Option.LogFileHandle = open( Option.LogFileName, O_CREAT | O_TRUNC | O_RDWR | O_TEXT, S_IWRITE );
    if ( FILE_OPEN_ERROR( Option.LogFileHandle ) )
    {
    /*
			 * try to open existing log file
      */
      Option.LogFileHandle = open( Option.LogFileName, O_CREAT | O_RDWR | O_TEXT, S_IWRITE );
      if ( FILE_OPEN_ERROR(Option.LogFileHandle) )
      {
        return ( EX_TEXT("\nCan not Create log file %s"), Option.LogFileName );
        Status = flBadParameter;
      }
    }
  }
  else
  {
    /* TBD: MABEY NOT ALLOWING THE USER TO USE DINFO WITHOUT SPECIFING A LOG FILE */
  }
#endif
  return( Status );
}



/****************************************************************************/
/* Function to print the flash type							*/
/*--------------------------------------------------------------------------*/
/*	Input:																	*/
/*	Output:																	*/
/****************************************************************************/

EXCHAR* TransVendorType( EXWORD flashType )
{
  switch(flashType)
	{
  case KM29N16000_FLASH:
	return ( "Samsung ") ;
  case KM29N32000_FLASH:
	return ( "Samsung ") ;
  case KM29V64000_FLASH:
	return ( "Samsung ") ;
  case KM29V128000_FLASH:
	return ( "Samsung ") ;
  case KM29V256000_FLASH:
	return ( "Samsung ") ;
  case KM29V512000_FLASH:
	return ( "Samsung ") ;
  case KM29V1024000_FLASH:
	return ( "Samsung ") ;
  case K9F1G08U0M_FLASH:
	return ( "Samsung ") ;
  case K9F2G08U0M_FLASH:
	return ( "Samsung ") ;
  case K9F4G08U0M_FLASH:
	return ( "Samsung ") ;
  case KF2816U0C:
	return ( "Samsung ") ;
  case KF2832U0C:
	return ( "Samsung ") ;



  case NM29N16_FLASH:
	return ( "National Semiconductor " ) ;
  case NM29N32_FLASH:
	return ( "National Semiconductor " ) ;
  case NM29N64_FLASH:
	return ( "National Semiconductor " ) ;


  case TC5816_FLASH:
	return ( "Toshiba " ) ;
  case TC5832_FLASH:
	return ( "Toshiba " ) ;
  case TC5864_FLASH:
	return ( "Toshiba " ) ;
  case TC58128_FLASH:
	return ( "Toshiba " ) ;
  case TC58256_FLASH:
	return ( "Toshiba " ) ;
  case TC58512_FLASH:
	return ( "Toshiba " ) ;
  case TC581024_FLASH:
	return ( "Toshiba " ) ;
  case TC58100FT:
	return ( "Toshiba " ) ;
  case TC58NVG0S3AFT05:
	return ( "Toshiba " ) ;
  case TC58NVG1S3AFT05:
	return ( "Toshiba " ) ;



  default:
	return ( "Unknown") ;
	}
}


/****************************************************************************/
/* Function to get the unit number starts with "BNAND"							*/
/*--------------------------------------------------------------------------*/
/*	Input:																	*/
/*	Output:																	*/
/****************************************************************************/
EXBYTE* TransFlashTechnology( EXWORD flashType )
{
  if( flashType == TC58100FT )
    return "MLC";
  else if( flashType == TC58020FT )
    return "MLC";
  else
    return "SLC";
}


/****************************************************************************/
/* Function to fill a buffer with randomize values							            */
/*--------------------------------------------------------------------------*/
/*	Input:																	*/
/*	Output:																	*/
/****************************************************************************/
void
CreateRandBuffer( byte FAR1 *buf, word len )
{
  int  i;
  ExSrand( ( EXWORD )ExTime( NULL ) );
  for(i=0;( i < len );i++)
    buf[i] = (byte)ExRand();
}

/****************************************************************************/
/* Function to fill a buffer with 							            */
/*--------------------------------------------------------------------------*/
/*	Input:																	*/
/*	Output:																	*/
/****************************************************************************/
void
CreateCheckSumBuffer( EXBYTE FAR1 *buf, EXWORD len )
{
  EXWORD  i;
  EXBYTE  sum = 0;

  CreateRandBuffer( buf, (EXWORD)(len - 1) );
  for(i=0;( i < len-1 );i++)
    sum += buf[i];
  buf[i] = -sum;
}


/****************************************************************************/
/* Function to fill a buffer with the values of 0x88						*/
/*--------------------------------------------------------------------------*/
/*	Input:																	*/
/*	Output:																	*/
/****************************************************************************/
void
CreateBuffer( EXBYTE FAR1 *buf, EXWORD len, EXBYTE ch )
{
  int  i;

  for(i=0;( i < len );i++)
    buf[i] = ch;
}

/****************************************************************************/
/* Function to fill a buffer with the values of 0x88						*/
/*--------------------------------------------------------------------------*/
/*	Input:																	*/
/*	Output:																	*/
/****************************************************************************/
void
OppositeBuffer( byte FAR1 *buf, word len )
{
  int  i;

  for(i=0;( i < len );i++)
    buf[i] = ~buf[i];
}


extern ExDevice logFileDev;

void DinfoPrint( EXCHAR* pFormatString, ... )
{
	va_list		pArguments;
	EXCHAR    Buffer[150];

	ExMemSet( Buffer, 0x00, 150);
	va_start( pArguments, pFormatString );
	vsprintf( Buffer, pFormatString, pArguments );
	va_end( pArguments );

  /* PRINT TO SCREEN USING EXPRINT() */
  ExPrint( Buffer );

  /* WRITE TO LOG FILE */
  if( Option.LogFileName )
  {
    WriteSerialFileDevice( &logFileDev, Buffer, ExStrLen( Buffer ) );
  }
}

⌨️ 快捷键说明

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