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

📄 _bcmd232.c

📁 at91rm9200 mac control源码
💻 C
字号:

/****************************************************************
 *                                                              *
 *  Program : _BCMD232.C                                        *
 *                                                              *
 *  Purpose : Proc RS232 command.                               *
 *                                                              *
 *  Compile : HEW2 Ver7.0                                       *
 *                                                              *
 *  Version : 1.0                                               *
 *                                                              *
 *  Create  : 2003-07-05 Saturday            By Kim Won Myong   *
 *                                                              *
 *  Copyright (C) 2003  Amnokgang Technology Development Corp.  *
 *  All Rights Reserved.                                        *
 *                                                              *
 ****************************************************************/

#include "_MyType.h"  
#include "_Bios.h"  

/* Test command */
#define BCMD_FlashWriter		0x01
#define BCMD_Execute			0x02
#define BCMD_DataFromPC			0x03
#define BCMD_Image256ToPC		0x04
#define BCMD_Image256FromPC		0x05
#define BCMD_DataToPC			0x06
#define BCMD_Image512ToPC		0x07
#define BCMD_Image512FromPC		0x08
#define BCMD_SetupInfoToPC		0x0B
#define BCMD_SetupInfoFromPC	0x0C
#define BCMD_SetTime			0x0F
#define BCMD_FpGetVersion		0x13
#define BCMD_GetTime			0x14
#define BCMD_ClearData			0x16
#define BCMD_ClearFlash			0x17
#define BCMD_NewMonitorWrite	0x18
#define BCMD_Download			0x19
#define BCMD_BMP1Write			0x1A
#define BCMD_BMP2Write			0x1B
#define BCMD_GetVersion2		0x79


/*========================================================================
 Function    : RemoteWriteFlash
 Description : Down load from SCI0 and write to flash. 
 Return type : int 
 Argument
    (In/Out) : void *apDst
    (In/Out) : void *apCommand
// Create      : 2003-07-07 17:15:23		   By Kim Won Myong
========================================================================*/
int RemoteWriteFlash( void *apDst, int aBlock_Number, int aBlock_Size )
{
	register BYTE *vpDstAddr;
	char vBuff[BLOCK_SIZE];

	if( aBlock_Number == 0xffff ) return TRUE;

	if( !RecBlockData232( vBuff, sizeof(vBuff), 0, aBlock_Size ) ) return FALSE;
	vpDstAddr = (BYTE*)apDst + BLOCK_SIZE*aBlock_Number;
	if( !WriteFlash( vBuff, vpDstAddr, aBlock_Size ) ) return FALSE;
	if( memcmp( vBuff, vpDstAddr, aBlock_Size ) != 0 ) return FALSE;
	return TRUE;
}

/*========================================================================
 Function    : RS232CommandProc
 Description : Process command from RS232. 
 Return type : int 
 Argument
    (In/Out) : void
// Create      : 2003-07-09 16:29:46		   By Kim Won Myong
========================================================================*/
int RS232BCommandProc( void )
{	
	int vResult;
	int vCommand, vBlock_Number, vBlock_Size;
	long vInParam;	
	
	if( !GetCommand232( &vCommand, &vInParam, &vBlock_Number, &vBlock_Size ) ) return FALSE;
	SendCmdAck232();

	switch( vCommand ){
		case BCMD_FlashWriter:
			SendExeResult232( RemoteWriteFlash( (void*)vInParam, vBlock_Number, vBlock_Size ), 0 );
			break;

		case BCMD_Execute:
			SendExeResult232( TRUE, 0 );
		{
			register void (*vpMonitorAddr)(void) = (void (*)(void))vInParam;

			(*vpMonitorAddr)();
		}	break;

		case BCMD_DataToPC:
			if(	( vInParam < PROGRAM_MSZ ) ||
				(0x0C000000 <= vInParam && vInParam<(0x0C000000 + PROGRAM_MSZ))){
				SendExeResult232( FALSE, 0 );
			}
			else{
				SendExeResult232( TRUE, 0 );
				SendBlockData232( (void *)(vInParam), 512*1024, vBlock_Number, vBlock_Size );
			}
			break;
		case BCMD_DataFromPC:
			vResult = RecBlockData232( (void *)(vInParam), 512*1024, vBlock_Number, vBlock_Size );
			SendExeResult232( vResult, 0 );		
			break;
			
		case BCMD_Image256ToPC:
//			if( vBlock_Number == 0 ) DeviceInactive();
//			if( vBlock_Number == 255 ) DeviceActive();
			if( vBlock_Number == 0 )    ReadFpImage256();
			SendExeResult232( TRUE, 0 );
			SendBlockData232( GetFpImage256(), 256*256, vBlock_Number, vBlock_Size );
			break;
		case BCMD_Image256FromPC:
			RecBlockData232( GetFpImage256(), 256*256, vBlock_Number, vBlock_Size );
			SendExeResult232( TRUE, 0 );
			break;
		case BCMD_Image512ToPC:
			if( vBlock_Number == 0 ) ReadFpImage512(); 
			SendExeResult232( TRUE, 0 );
			SendBlockData232( GetFpImage512(), 512*512, vBlock_Number, vBlock_Size );
			break;
		case BCMD_Image512FromPC:
			RecBlockData232( GetFpImage512(), 512*512, vBlock_Number, vBlock_Size );
			SendExeResult232( TRUE, 0 );
			break;
	
	}
	
	return TRUE;
}

/****************************************************************
 *
 *                End of file : _BCMD232.C
 *
 ****************************************************************/

⌨️ 快捷键说明

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