亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dbgserial.c

?? WinCE5.0BSP for Renesas SH7770
?? C
字號:
//
//  Copyright(C) Renesas Technology Corp. 2002-2005. All rights reserved.
//
//  debug serial routine for ITS-DS7 Ver.1.0.0
//
//  FILE      : dbgserial.c
//  CREATED   : 2002.04.25
//  MODIFIED  : 2005.11.14
//  AUTHOR    : Renesas Technology Corp.
//  HARDWARE  : RENESAS ITS-DS7
//  HISTORY   : 
//              2003.06.12
//              - Created release code.
//                (based on RENESAS ITS-DS4 Source Kit Ver.1.2.0 for WCE4.2)
//              2005.11.14
//              - Changed OAL file and directory structures to production-qualiry OAL model.

//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this source code is subject to the terms of the Microsoft end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to use
// this source code. For a copy of the EULA, please see the LICENSE.RTF on your
// install media.
//
//------------------------------------------------------------------------------
//
//  File:  dbgserial.c            
//
//  This module is provides the interface to the serial port.
//

#include <windows.h>
#include <nkintr.h>
#include <ethdbg.h>
#include <halether.h>

#include "shx.h"
#include "platform.h"
#include "sh7770.h"
#include "drv_glob.h"
 
//------------------------------------------------------------------------------
// Defines 
//
#define pDriverGlobals  ((PDRIVER_GLOBALS) DRIVER_GLOBALS_PHYSICAL_MEMORY_START)

// For converting net byte order to host byte order
#define htons( value ) ((UINT16)((((UINT16)value) << 8) | (((UINT16)((UINT16)value)) >> 8)))
#define ntohs( value ) htons( value )      

#define SCIF_SCSMR_OFFSET			0x0000		// Serial Mode Register 
#define	SCIF_SCBRR_OFFSET			0x0004		// Bit rate register 
#define SCIF_SCSCR_OFFSET			0x0008		// Serial Control Register 
#define SCIF_SCFTDR_OFFSET			0x000c		// transmit FIFO data register 
#define	SCIF_SCFSR_OFFSET			0x0010		// Serail Status Register 
#define SCIF_SCFRDR_OFFSET			0x0014		// Receive Data FIFO register 
#define	SCIF_SCFCR_OFFSET			0x0018		// FIFO Control Register 
#define	SCIF_SCFDR_OFFSET			0x001c		// FIFO Data Count set register 
#define	SCIF_SCSPTR_OFFSET			0x0020		// FIFO Data Count set register 
#define	SCIF_SCLSR_OFFSET			0x0024		// FIFO Data Count set register 
#define	SCIF_BRG_DL_OFFSET			0x0030		// DL register
#define	SCIF_BRG_CKS_OFFSET			0x0034		// CKS register


#define SCSMR2  *(USHORT volatile *)(SCIF2_REGBASE + SCIF_SCSMR_OFFSET)   // Serial Mode
#define SCBRR2  *(UCHAR  volatile *)(SCIF2_REGBASE + SCIF_SCBRR_OFFSET)   // Serial Bit Rate
#define SCSCR2  *(USHORT volatile *)(SCIF2_REGBASE + SCIF_SCSCR_OFFSET)   // Serial Control
#define SCFTDR2 *(UCHAR  volatile *)(SCIF2_REGBASE + SCIF_SCFTDR_OFFSET)  // Transmit FIFO Data
#define SCFSR2  *(USHORT volatile *)(SCIF2_REGBASE + SCIF_SCFSR_OFFSET)   // Serial Status
#define SCFRDR2 *(UCHAR  volatile *)(SCIF2_REGBASE + SCIF_SCFRDR_OFFSET)  // Receive FIFO Data
#define SCSPTR2 *(USHORT volatile *)(SCIF2_REGBASE + SCIF_SCSPTR_OFFSET)  // Port I/O Control
#define SCFCR2  *(USHORT volatile *)(SCIF2_REGBASE + SCIF_SCFCR_OFFSET)   // FIFO Control
#define SCFDR2  *(USHORT volatile *)(SCIF2_REGBASE + SCIF_SCFDR_OFFSET)   // FIFO Data Count
#define SCLSR2  *(USHORT volatile *)(SCIF2_REGBASE + SCIF_SCLSR_OFFSET)   // Line Status
#define BRG_DL  *(DWORD  volatile *)(SCIF2_REGBASE + SCIF_BRG_DL_OFFSET)  // Baudrate Generator (DL)
#define BRG_CKS *(DWORD  volatile *)(SCIF2_REGBASE + SCIF_BRG_CKS_OFFSET) // Baudrate Generator (CKS)
 
//------------------------------------------------------------------------------
// Externs
//
 
//------------------------------------------------------------------------------
// Global Variables 

//------------------------------------------------------------------------------
// Local Variables 
//
static BOOL DebugEtherPresent;


//------------------------------------------------------------------------------
// Local Functions 
//
/* Message LED support functions */
void PrintLED(char *p) // display character string
{
    volatile char *pAlphaLED;
    int i;

    pAlphaLED = (volatile char*)LED_ALPHA;
    i = 0;
    while (i < 8 && *p != '\0') {
        *pAlphaLED++ = *p++;
        *pAlphaLED++; // byte size registers allocated in word space
        i++;
    }
}

void WriteLED(DWORD val) // display hexadecimal value
{
    volatile char *pAlphaLED;
    int i;
    char c;

    pAlphaLED = (volatile char*)LED_ALPHA;

    for (i = 7; i >= 0; i--) {
        c = (char)((val >> i * 4) & 0x0f);
        if (c < 10) c += '0'; // '0' - '9'
        else c += 'A' - 10; // 'A' - 'F'
        *pAlphaLED++ = c;
        *pAlphaLED++; // byte size registers allocated in word space
    }
}

//------------------------------------------------------------------------------
//
//  Function: OEMInitDebugSerial
//
//  Initializes the debug serial port
//

VOID InitDebugSerial() 
{
	if (ENABLE_DEBUG_SERIAL)
	{
		SCSCR2 = 0x0000;		// Clear TE, RE bits.

		SCFCR2 = 0x0006;		// Set TFRST, RFRST bits and clear FIFOs.

		SCFSR2 = 0x0000;		// clear Status Register.

		SCSCR2 = 0x0002;		// CKE1

		SCSMR2 = 0x0000;		// 8 bit data, non parity, 1 stop bit

//		SCBRR2  = 0x00;			// 

		BRG_DL  = 0x0006;		// 38400
//		BRG_DL  = 0x0002;		// 115200

		BRG_CKS = 0x0000;		// CKS = 0;

		SCFCR2  = 0x0000;		// Trigger count, receive = 1, transmit = 1.

		SCSCR2 |= 0x0032;		// Set TE, RE, CKE1

	}
}


//------------------------------------------------------------------------------
//
//  Function: OEMWriteDebugByte
//
//  Transmits a character out the debug serial port.
//
VOID OEMWriteDebugByte(UINT8 ch) 
{
	if (ENABLE_DEBUG_SERIAL)
	{
waitTX:
	if ((SCFSR2 & 0x0020)==0x20){
		SCFTDR2 = ch;
		SCFSR2 &= 0xFF9F;
		return;
	}
		goto waitTX;
	}
}


//------------------------------------------------------------------------------
//
//  Function: OEMReadDebugByte
//
//  Reads a byte from the debug serial port. Does not wait for a character. 
//  If a character is not available function returns "OEM_DEBUG_READ_NODATA".
//
int OEMReadDebugByte() 
{
	UCHAR ch;
	if (ENABLE_DEBUG_SERIAL)
	{
		if (SCFSR2 & 0x009C)			// See if there is an error
		{
			OEMClearDebugCommError();
		}

		if( !( SCFSR2 & 0x0002 ) )	// See if RDF = 1
		{
			DWORD dwWaitCount=8;
			while(dwWaitCount--);

			return OEM_DEBUG_READ_NODATA;
		}
		ch = SCFRDR2;
		SCFSR2 &= ~0x0002;		// Clear RDF
		return ch;
	}
	return (0);
}


//------------------------------------------------------------------------------
//
//  Function: OEMWriteDebugLED
//
//  Writes a pattern to the on-board hex LEDs.
//
void OEMWriteDebugLED(UINT16 Index, DWORD Pattern)
{
	WriteLED(Pattern);
}


//------------------------------------------------------------------------------
//
//  Function: OEMClearDebugCommError
//
//  Clears communications errors (flushes the serial FIFO).
//
void OEMClearDebugCommError(void) 
{
	if (ENABLE_DEBUG_SERIAL)
	{
		SCFSR2 &= ~0x0090;			// Clear ORER,PER,FER
	}
}


//------------------------------------------------------------------------------
/*****************************************************************************
*
*
*   @func   void    |   OEMWriteDebugString | Display string to the monitor port.
*
*   @parm   unsigned short * | str |
*           Points to the receiving buffer.
*/
void OEMWriteDebugString(unsigned short *str) 
{
	if (ENABLE_DEBUG_SERIAL)
	{
		while (*str)
			OEMWriteDebugByte((unsigned char)*str++);
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲六月丁香色婷婷综合久久 | 国内偷窥港台综合视频在线播放| 午夜伊人狠狠久久| 日本亚洲天堂网| 激情五月激情综合网| 99在线热播精品免费| 99re这里都是精品| 欧美午夜精品一区| 欧美精品一区二区三区在线 | 欧美极品aⅴ影院| 一区二区三区国产| 亚洲18影院在线观看| 国产精品香蕉一区二区三区| 成人亚洲精品久久久久软件| 欧美色视频在线| 国产女主播一区| 亚洲男同1069视频| 美女一区二区久久| 色94色欧美sute亚洲线路一久| 欧美成人高清电影在线| 国产精品色在线| 麻豆成人久久精品二区三区红| 国产99久久久国产精品潘金 | 精品av久久707| 亚洲精品乱码久久久久久日本蜜臀| 日本免费新一区视频| 国产成人av一区二区三区在线观看| 色婷婷狠狠综合| 欧美国产国产综合| 婷婷中文字幕一区三区| 精品一区二区免费视频| 欧美日韩精品三区| 亚洲视频狠狠干| 国产成人综合亚洲网站| 欧美大片在线观看一区二区| 国产精品久久二区二区| 国产伦精品一区二区三区在线观看 | aaa国产一区| 久久久一区二区三区| 免播放器亚洲一区| 欧美乱妇一区二区三区不卡视频| 一区在线观看免费| 粉嫩av一区二区三区在线播放| 精品视频一区二区不卡| 一区二区三区四区不卡视频| 丁香桃色午夜亚洲一区二区三区| 日韩亚洲电影在线| 水野朝阳av一区二区三区| 欧美手机在线视频| 国产人成亚洲第一网站在线播放 | 欧美激情中文字幕一区二区| 久久av老司机精品网站导航| 欧美日韩欧美一区二区| 亚洲国产日产av| 欧美亚洲国产一区二区三区va | 中文字幕精品一区二区三区精品| 国产一区二区0| 国产三级三级三级精品8ⅰ区| 激情图区综合网| 久久精品一区二区三区不卡| 国产不卡视频在线播放| 国产日韩欧美精品电影三级在线| 精彩视频一区二区三区| 精品国产91乱码一区二区三区| 麻豆一区二区三| 久久久国产午夜精品| 高清国产一区二区| 亚洲三级电影全部在线观看高清| 波多野结衣亚洲一区| 亚洲欧美日韩人成在线播放| 成人久久视频在线观看| 亚洲精品大片www| 欧美日韩国产经典色站一区二区三区| 亚洲成精国产精品女| 一区二区三区四区精品在线视频| 激情偷乱视频一区二区三区| 99久久精品免费| 亚洲国产精品一区二区尤物区| 欧美午夜宅男影院| 日韩黄色免费电影| 精品国产乱码91久久久久久网站| 午夜精品福利久久久| 精品成人一区二区| 97久久久精品综合88久久| 午夜欧美在线一二页| 精品久久久久久久久久久久包黑料| 国产精品99久久久久久似苏梦涵 | 日本不卡一二三| www国产成人免费观看视频 深夜成人网| 一本色道久久综合亚洲aⅴ蜜桃| 国内精品国产成人| 婷婷一区二区三区| 亚洲激情图片一区| 国产日韩欧美亚洲| 精品国产99国产精品| 欧美区视频在线观看| 99久久精品国产毛片| 国产成人99久久亚洲综合精品| 免费日本视频一区| 午夜激情久久久| 一个色综合网站| 成人欧美一区二区三区1314| 2021国产精品久久精品| 欧美tickling网站挠脚心| 欧美少妇bbb| 欧美色图天堂网| 色老头久久综合| 91在线观看高清| 91在线看国产| av在线一区二区三区| 成人性色生活片| 北条麻妃一区二区三区| 成人午夜伦理影院| 成人午夜在线播放| 成人综合日日夜夜| 成人精品视频.| 欧美在线free| 97se亚洲国产综合在线| 91同城在线观看| 在线观看亚洲精品视频| 欧美色视频在线观看| 欧美日韩精品免费| 欧美一级日韩不卡播放免费| 欧美老女人在线| 91精品国产福利| 日韩精品一区二区在线| 欧美videos中文字幕| 精品国产免费一区二区三区四区| 日韩女优毛片在线| 久久无码av三级| 国产精品嫩草影院com| 亚洲日本在线天堂| 亚洲精品五月天| 丝袜a∨在线一区二区三区不卡| 麻豆精品一区二区| 国产一区二区91| 99久久精品国产毛片| 欧美亚洲日本国产| 欧美本精品男人aⅴ天堂| 国产精品三级av| 一区二区视频在线| 奇米影视7777精品一区二区| 国产精品456| 在线视频中文字幕一区二区| 在线不卡中文字幕| 国产欧美一区二区三区在线看蜜臀| 国产精品久线在线观看| 一区2区3区在线看| 精品亚洲成a人在线观看| 成人爱爱电影网址| 91.麻豆视频| 国产精品每日更新在线播放网址| 一区二区三区中文在线| 久久99精品网久久| 日本黄色一区二区| 久久久久99精品国产片| 亚洲成人你懂的| 国产精品一区二区视频| 欧美在线小视频| 久久久精品综合| 亚洲国产视频网站| 波多野结衣中文一区| 欧美一区二区视频观看视频| 国产精品大尺度| 精品一区二区免费| 制服丝袜成人动漫| 亚洲精品日日夜夜| 国产成人在线视频播放| 欧美男生操女生| 综合色天天鬼久久鬼色| 韩国v欧美v日本v亚洲v| 欧美日韩视频在线一区二区| 日本一区二区三区国色天香| 日韩av一区二区在线影视| 99久久伊人久久99| 久久精品一区四区| 美女爽到高潮91| 欧美日韩精品一区二区在线播放| 国产精品国模大尺度视频| 另类小说图片综合网| 欧美色精品天天在线观看视频| 国产精品久久久久国产精品日日| 狠狠色狠狠色综合| 日韩一区二区三区视频| 天天综合天天综合色| 欧美图区在线视频| 一区二区三区中文字幕在线观看| 成人影视亚洲图片在线| 久久久www成人免费无遮挡大片 | 久久精品二区亚洲w码| 欧美另类久久久品| 偷拍自拍另类欧美| 欧美剧情电影在线观看完整版免费励志电影| 国产欧美一区二区精品性| 国产麻豆精品在线观看| 久久噜噜亚洲综合| 国产成人免费视频网站 | eeuss鲁一区二区三区| 国产三级三级三级精品8ⅰ区| 丁香激情综合国产|