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

📄 halnok.c

📁 WinCE 3.0 BSP, 包含Inter SA1110, Intel_815E, Advantech_PCM9574 等
💻 C
字号:
#include <windows.h>
#include "nkintr.h"
#include "SA11x0.h"
#include "sa11x0bd.h"
#include "drv_glob.h"
#include "halether.h"
#include "ethdbg.h"

#define pDriverGlobals  ((PDRIVER_GLOBALS) DRIVER_GLOBALS_PHYSICAL_MEMORY_START)
static BOOL DebugEtherPresent;


void InitDebugEther (void)
{

	  // Initialize ethernet debug support.  This requires that the ethernet
	  // bootloader (eboot) is loaded.  Check for magic cookie in uninitialized
	  // section of driver globals to determine if eboot is present or not.  If
	  // not, don't touch the ethernet HW (will hang if FPGA doesn't have ether support)
  if (pDriverGlobals->eth.EbootMagicNum == EBOOT_MAGIC_NUM) {
		  // Eboot is present, attempt to init the ethernet HW.  If the ethernet card
		  // is not present, EdbgInit will return failure. Also, this will
		  // read our IP and ethernet address from the serial EEPROM on the ethernet board.
      EdbgOutputDebugString("Ethernet bootloader present, peer IP address: %s\r\n",
                            inet_ntoa(pDriverGlobals->eth.DownloadHostAddr.dwIP));
      if (EdbgInit()) {
         // OEMWriteDebugString(TEXT("Debug ethernet card initialized\r\n"));
          DebugEtherPresent = 1;
			  // Attempt to configure debug services over ethernet.  SetKernelCommDev will block
			  // (calling EdbgRegisterDfltClient) until the desktop application is started, and
			  // will set up the necessary kernel hooks to route data to the peer.
          if ((pDriverGlobals->eth.etherFlags & EDBG_FL_DBGMSG) && 
              SetKernelCommDev(KERNEL_SVC_DBGMSG,KERNEL_COMM_ETHER)) { 
              EdbgOutputDebugString("Switched to ethernet for debug messages, host: %s, port: %d\r\n",
                                    inet_ntoa(pDriverGlobals->eth.DbgHostAddr.dwIP),
                                    ntohs(pDriverGlobals->eth.DbgHostAddr.wPort));
          }
          if ((pDriverGlobals->eth.etherFlags & EDBG_FL_PPSH) &&
              SetKernelCommDev(KERNEL_SVC_PPSH,KERNEL_COMM_ETHER)) {
              EdbgOutputDebugString("Switched to ethernet for PPSH, host: %s, port: %d\r\n",
                                    inet_ntoa(pDriverGlobals->eth.PpshHostAddr.dwIP),
                                    ntohs(pDriverGlobals->eth.PpshHostAddr.wPort));
          }
          if ((pDriverGlobals->eth.etherFlags & EDBG_FL_KDBG) &&
              SetKernelCommDev(KERNEL_SVC_KDBG,KERNEL_COMM_ETHER)) {
              EdbgOutputDebugString("Switched to ethernet for KDBG, host: %s, port: %d\r\n",
                                    inet_ntoa(pDriverGlobals->eth.KdbgHostAddr.dwIP),
                                    ntohs(pDriverGlobals->eth.KdbgHostAddr.wPort));
          }
      }
      else {
          OEMWriteDebugString(TEXT("Debug ethernet card not present or failed init\r\n"));
	  }
      pDriverGlobals->eth.EbootMagicNum = 0;
    } else if (DebugEtherPresent) {
			// This is the case where we are resuming from OEMPowerOff. Just reinitialize the HW here..
        EdbgInit();
    }
#ifdef PPSH_SERIAL
  // If we're running PPSH over serial, switch now, so that debug messages will get
  // formatted correctly (through lpWriteDebugStringFunc). 
  SetKernelCommDev(KERNEL_SVC_PPSH,KERNEL_COMM_SERIAL);
#endif // PPSH_SERIAL

}

⌨️ 快捷键说明

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