📄 serial.c
字号:
/*++
THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
PARTICULAR PURPOSE.
Copyright (c) 2001. Samsung Electronics, co. ltd All rights reserved.
Module Name:
Abstract:
OEM Debug Serial Monitor Routines
rev:
2002.4.3 : first S3C2410 version (SOC)
2002.1.28 : CE.NET initial port (kwangyoon LEE, kwangyoon@samsung.com)
Notes:
--*/
#include <windows.h>
#include "p2.h"
///#define USE_DEC_UART 1
#undef SYSTEM_ASIC_REGS_BASE
//#undef DMA_BUFFER_BASE
#define SYSTEM_ASIC_REGS_BASE 0x20000000
//#define DMA_BUFFER_BASE 0xC7000000
#define READ_REGISTER_ULONG(reg) (*(volatile unsigned long * const)(reg))
#define WRITE_REGISTER_ULONG(reg, val) (*(volatile unsigned long * const)(reg)) = (val)
#define READ_REGISTER_USHORT(reg) (*(volatile unsigned short * const)(reg))
#define WRITE_REGISTER_USHORT(reg, val) (*(volatile unsigned short * const)(reg)) = (val)
#define READ_REGISTER_UCHAR(reg) (*(volatile unsigned char * const)(reg))
#define WRITE_REGISTER_UCHAR(reg, val) (*(volatile unsigned char * const)(reg)) = (val)
// DMA buffers for the HAL's serial port.
#define DMA_PAGE_SIZE 0x800
// Warning: when written to the DMA registers, the high 6 bits (31:26)
// will be read as all zeros.
#define DMA_RX_PAGE DMA_BUFFER_BASE+0x2000
#define DMA_TX_PAGE (DMA_RX_PAGE + 2 * DMA_PAGE_SIZE)
#define pCSRA (DEBUG_SER_BASE + SER_CSR_A)
#define pCSRB (DEBUG_SER_BASE + SER_CSR_B)
extern void WhereAmI(void);
//extern void ShowValue(int value);
/*****************************************************************************
*
*
* @func void | OEMInitDebugSerial | Initialize debug monitor port.
*
* NOTE: This function MUST NOT use any global variables!!!!!!
*/
void InitSerial(void)
{
}
// Define UART physical register.
#define phUTRSTAT0 (*(volatile unsigned int *)0x15000010)
#define phUTXH0 (*(volatile unsigned char *)0x15000020)
/*****************************************************************************
*
*
* @func void | OEMWriteDebugByte | Output byte to the monitor port.
*
* @parm unsigned char *| str |
* Points to the output buffer.
*/
void
WriteByte(UCHAR ch)
{
#if 1
int i;
if(ch == '\n') {
while(!(phUTRSTAT0 & 0x2)) ;
for(i=0; i<0x100; i++) ;//because the slow response of hyper_terminal
phUTXH0 = '\r';
}
while(!(phUTRSTAT0 & 0x2)); //Wait until THR is empty.
for(i=0; i<0x100; i++) ;
phUTXH0 = ch;
#endif
}
/*****************************************************************************
*
*
* @func void | OEMWriteDebugString | Display string to the monitor port.
*
* @parm unsigned short * | str |
* Points to the receiving buffer.
*/
void
WriteString(unsigned char *str) {
// Send message to serial port
while (*str)
WriteByte(*str++);
}
void WriteHex(long *ptr, int length)
{
#if 0 // jlsfix - stub for now
int count;
for (count = 0 ; count < length ; ++count) {
if ((count & 7) == 0) {
WriteByte('\r');
WriteByte('\n');
PutHex((long)ptr);
WriteByte(':');
}
WriteByte(' ');
PutHex(*ptr++);
}
WriteByte('\r');
WriteByte('\n');
#endif
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -