📄 debugport.c
字号:
/*****************************************************************************//* High Level Debug Port Functions $Id: debugport.c,v 1.1 1997/07/31 22:13:23 joel Exp $ *//*****************************************************************************/#include <stdio.h>#include <stdarg.h>#include "debugport.h"#include "m68302scc.h"#include "bsp.h"static int initialised;void debug_port_initialise(void){ scc_initialise(CONSOLE_PORT, CONSOLE_BAUD, FALSE);#if defined(DEBUG_PORT) scc_initialise(DEBUG_PORT, DEBUG_BAUD, FALSE);#endif}unsigned char debug_port_status(const unsigned char status){ if (!initialised) { initialised = 1; debug_port_initialise(); } return scc_status(CONSOLE_PORT, status);}unsigned char debug_port_in(void){ if (!initialised) { initialised = 1; debug_port_initialise(); } return scc_in(CONSOLE_PORT);}void debug_port_out(const unsigned char character){ if (!initialised) { initialised = 1; debug_port_initialise(); } scc_out(CONSOLE_PORT, character);}void debug_port_write(const char *buffer){ while (*buffer != '\0') { debug_port_out(*buffer++); }}void debug_port_write_buffer(const char *buffer, unsigned int size){ unsigned int count; for (count = 0; count < size; count++) { debug_port_out(buffer[count]); }}void debug_port_write_hex_uint(const unsigned int value){ unsigned int bits = sizeof(value) * 8; unsigned char c; do { bits -= 4; c = (unsigned char) ((value >> bits) & 0x0F); if (c < 10) { c += '0'; } else { c += 'a' - 10; } debug_port_out((char) c); } while (bits);}void debug_port_write_hex_ulong(const unsigned long value){ unsigned int bits = sizeof(value) * 8; unsigned char c; do { bits -= 4; c = (unsigned char) ((value >> bits) & 0x0F); if (c < 10) { c += '0'; } else { c += 'a' - 10; } debug_port_out((char) c); } while (bits);}#define BUFFER_SIZE (256)static char buffer[BUFFER_SIZE];void debug_port_printf(const char *format, ...){ va_list args; int written; /* gain access to the argument list */ va_start(args, format); /* set the trap */ buffer[BUFFER_SIZE - 2] = '\xAA'; buffer[BUFFER_SIZE - 1] = '\x55'; /* format the string and send to stdout */ written = vsprintf(buffer, format, args); /* try an trap format buffer overflows */ if ((buffer[BUFFER_SIZE - 2] != '\xAA') || (buffer[BUFFER_SIZE - 1] != '\x55')) { debug_port_write("debug port buffer overflow, halting..."); DISABLE_WATCHDOG(); while (1 == 1); } /* see if an error occurred, if not flush the output buffer */ if (written != -1) { debug_port_write_buffer(buffer, written); }}void debug_port_banner(void){#define CARD_LABEL "ods68302-" #VARIANT debug_port_write("\n\n\r"); debug_port_write(_Copyright_Notice); debug_port_write("\n\r " CARD_ID "\n\r");}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -