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 + -
显示快捷键?