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

📄 serdbg.c

📁 RTEMS (Real-Time Executive for Multiprocessor Systems) is a free open source real-time operating sys
💻 C
字号:
/*===============================================================*\| Project: RTEMS remote gdb over serial line                      |+-----------------------------------------------------------------+| File: serdbg.c                                                  |+-----------------------------------------------------------------+|                    Copyright (c) 2002 IMD                       ||      Ingenieurbuero fuer Microcomputertechnik Th. Doerfler      ||               <Thomas.Doerfler@imd-systems.de>                  ||                       all rights reserved                       |+-----------------------------------------------------------------+| this file contains intialization and utility functions to add   || a gdb remote debug stub to an RTEMS system                      ||                                                                 |+-----------------------------------------------------------------+|   date                      history                        ID   || ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ || 04.04.02  creation                                         doe  |\*===============================================================*//*  * $Id: serdbg.c,v 1.1.4.1 2003/07/08 08:38:15 ralf Exp $ */#ifdef HAVE_CONFIG_H#include "config.h"#endif#include <rtems.h>#include <stdio.h>#include <string.h>#include <fcntl.h>#include <errno.h>#include <serdbg.h>/*=========================================================================*\| Function:                                                                 |\*-------------------------------------------------------------------------*/int serdbg_init_dbg(/*-------------------------------------------------------------------------*\| Purpose:                                                                  ||   initialize remote gdb session over serial line                          |+---------------------------------------------------------------------------+| Input Parameters:                                                         |\*-------------------------------------------------------------------------*/ void)/*-------------------------------------------------------------------------*\| Return Value:                                                             ||    rtems_status_code                                                      |\*=========================================================================*/{  static boolean is_initialized = FALSE;  rtems_status_code rc = RTEMS_SUCCESSFUL;  extern void set_debug_traps(void);  extern void breakpoint(void);  if (is_initialized) {    return RTEMS_SUCCESSFUL;  }  is_initialized = TRUE;  /*    * try to open serial device   */  if (rc == RTEMS_SUCCESSFUL) {    if ((serdbg_conf.open_io != NULL) && 	(0 > serdbg_conf.open_io(serdbg_conf.devname,serdbg_conf.baudrate))) {      fprintf(stderr,	      "remote_gdb_init: cannot open device %s "	      "for gdb connection:%s\n",serdbg_conf.devname,strerror(errno));      rc = RTEMS_IO_ERROR;    }  }  /*   * initialize gdb stub   */  if (rc == RTEMS_SUCCESSFUL) {    set_debug_traps();  }  /*   * now activate gdb stub   */  if ((rc == RTEMS_SUCCESSFUL) &&       !serdbg_conf.skip_init_bkpt) {    breakpoint();  }  /*   * return to original function   * this may be already unter gdb control   */  return rc;}

⌨️ 快捷键说明

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