g00125767

    1. Cadence OrCad v.16.3 HTTP 下载 14/13333 PCB设计 2010-02-07
      在此先感謝您的提供 但是我想問為什麼我看不到零件?
    2. 引用 6 楼 baiminsheng 的回复: 下面是blcommon.c中的BootloaderMain代码 void BootloaderMain (void) { ? ? DWORD dwAction;? ? ? DWORD dwpToc = 0; ? ? DWORD dwImageStart = 0, dwImageLength = 0, dwLaunchAddr = 0; ? ? BOOL bDownloaded = FALSE; ? ? // relocate globals to RAM ? ? if (!KernelRelocate (pTOC)) ? ? { ? ? ? ? // spin forever ? ? ? ? HALT (BLERR_KERNELRELOCATE); ? ? } ? ? // (1) Init debug support. We can use OEMWriteDebugString afterward. ? ? if (!OEMDebugInit ()) ? ? { ? ? ? ? // spin forever ? ? ? ? HALT (BLERR_DBGINIT); ? ? } ? ? // output banner ? ? EdbgOutputDebugString (NKSignon, CURRENT_VERSION_MAJOR, CURRENT_VERSION_MINOR); ? ? // (3) initialize platform (clock, drivers, transports, etc) ? ? if (!OEMPlatformInit ()) ? ? { ? ? ? ? // spin forever ? ? ? ? HALT (BLERR_PLATINIT); ? ? } ? ? // system ready, preparing for download ? ? EdbgOutputDebugString ("System ready!\r\nPreparing for download...\r\n"); ? ? // (4) call OEM specific pre-download function ? ? switch (dwAction = OEMPreDownload ()) ? ? { ? ? case BL_DOWNLOAD: ? ? ? ? // (5) download image ? ? ? ? if (!DownloadImage (&dwImageStart, &dwImageLength, &dwLaunchAddr)) ? ? ? ? { ? ? ? ? ? ? // error already reported in DownloadImage ? ? ? ? ? ? SPIN_FOREVER; ? ? ? ? } ? ? ? ? bDownloaded = TRUE; ? ? ? ? // Check for pTOC signature ("CECE") here, after image in place ? ? ? ? if (*(LPDWORD) OEMMapMemAddr (dwImageStart, dwImageStart + ROM_SIGNATURE_OFFSET) == ROM_SIGNATURE) ? ? ? ? { ? ? ? ? ? ? dwpToc = *(LPDWORD) OEMMapMemAddr (dwImageStart, dwImageStart + ROM_SIGNATURE_OFFSET + sizeof(ULONG)); ? ? ? ? ? ? // need to map the content again since the pointer is going to be in a fixup address ? ? ? ? ? ? dwpToc = (DWORD) OEMMapMemAddr (dwImageStart, dwpToc + g_dwROMOffset); ? ? ? ? ? ? EdbgOutputDebugString ("ROMHDR at Address %Xh\r\n", dwImageStart + ROM_SIGNATURE_OFFSET + sizeof (DWORD)); // right after signature bms ? ? ? ? } ? ? ? ? // fall through ? ? case BL_JUMP: ? ? ? ? // Before jumping to the image, optionally check the image signature. ? ? ? ? // NOTE: if we haven't downloaded the image by now, we assume that it'll be loaded from local storage in OEMLaunch (or it ? ? ? ? // already resides in RAM from an earlier download), and in this case, the image start address might be 0.? This means ? ? ? ? // that the image signature routine will need to find the image in storage or in RAM to validate it.? Since the OEM"s ? ? ? ? // OEMLaunch function will need to do this anyways, we trust that it's within their abilities to do it here. ? ? ? ? // ? ? ? ? if (g_bBINDownload && g_pOEMCheckSignature) ? ? ? ? { ? ? ? ? ? ? if (!g_pOEMCheckSignature(dwImageStart, g_dwROMOffset, dwLaunchAddr, bDownloaded)) ? ? ? ? ? ? ? ? HALT(BLERR_CAT_SIGNATURE); ? ? ? ? } ? ? ? ? // (5) final call to launch the image. never returned ? ? ? ? OEMLaunch (dwImageStart, dwImageLength, dwLaunchAddr, (const ROMHDR *)dwpToc); ? ? ? ? // should never return ? ? ? ? // fall through ? ? default: ? ? ? ? // ERROR! spin forever ? ? ? ? HALT (BLERR_INVALIDCMD); ? ? } } 现在程序已经执行通过了DownloadImage函数,运行到了OEMMapMemAddr函数以后 就进入了该函数里面了。并且运行到? ? ? ? ? ? EdbgOutputDebugString ("ROMHDR at Address %Xh\r\n", dwImageStart + ROM_SIGNATURE_OFFSET + sizeof (DWORD));的时候就在超级终端显示了ROMHDR at Address 80201044h 就不动了,能给出进一步的解释吗?谢谢了
      看一下OEMLaunch 中执行到了哪里?

最近访客

< 1/1 >

统计信息

已有55人来访过

  • 芯积分:--
  • 好友:--
  • 主题:--
  • 回复:2

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言