音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

Boot Args與Driver Globals—WinCE EBOOT

出處:互聯(lián)網(wǎng)    發(fā)布于:2011-09-04 14:42:42

  EBoot是WinCE一種默認(rèn)的Bootloader,用來(lái)引導(dǎo)WinCE,升級(jí)WinCE,及各種調(diào)試工具。在EBoot中打開(kāi)一些全局變量從而控制WinCE中的功能,比如USB的模式等(就是與WinCE約定了一個(gè)內(nèi)存區(qū)域存放這種標(biāo)志),還有在
EBOOT中包含的一個(gè)重要的緩沖區(qū)叫Driver Globals,它用于在設(shè)備驅(qū)動(dòng)和WinCE OS之間共享數(shù)據(jù)。而在EBOOT中會(huì)用到的啟動(dòng)參數(shù)結(jié)構(gòu)被稱(chēng)為Boot Args,是指用于EBOOT和WinCE OS之間共享一些參數(shù)信息。一般來(lái)說(shuō)Boot Args會(huì)
在EBOOT運(yùn)行的時(shí)候被賦值或者更新,常用的就是網(wǎng)絡(luò)設(shè)備的相關(guān)信息設(shè)置,比如IP地址,MAC地址,中斷等信息。
  Driver Globals包含了Boot Args,也就是說(shuō)Driver Globals是一塊內(nèi)存緩沖區(qū),其中里面也包含了Boot Args的內(nèi)存緩沖區(qū)。這里要說(shuō)明的是Driver Globals是一個(gè)可選用的功能,無(wú)非就是一塊內(nèi)存,在EBOOT和WinCE OS之
間進(jìn)行數(shù)據(jù)共享。如果你想用,你就用,不想用,也可以不用。我們?cè)谑褂肈river Globals的時(shí)候,一般會(huì)在eboot.bib和config.bib文件定義一塊預(yù)留的內(nèi)存區(qū)域,在這兩個(gè)文件中定義的這塊內(nèi)存區(qū)域的起始地址和大小必須一致,相
信這個(gè)大家都能理解,至于類(lèi)型肯定是RESERVED。這樣一來(lái),在EBOOT和WinCE運(yùn)行的時(shí)候,這塊共享內(nèi)存就被預(yù)留出來(lái)了。當(dāng)然,我們還需要在BSP中通過(guò)宏定義來(lái)定義這塊內(nèi)存的起始地址和大小,這樣就可以在BSP中訪(fǎng)問(wèn)這塊內(nèi)存了。
   舉例:
   首先在eboot.bib和config.bib都要有下面的定義:
  MEMORY
  ;   Name     Start     Size      Type
  ;   -------  --------  --------  ----
  ARGS     80020800  00000800  RESERVED
  上面的描述表示Driver Globals的共享內(nèi)存的起始地址是0x80020800,大小是0x800。
  然后還要在BSP中對(duì)其起始地址和大小進(jìn)行宏定義,如下:
  #define IMAGE_SHARE_ARGS_UA_START       0xA0020000
  #define IMAGE_SHARE_ARGS_CA_START       0x80020800
  #define IMAGE_SHARE_ARGS_SIZE           0x00000800
  這樣,EBOOT就可以通過(guò)上面的宏定義的地址來(lái)訪(fǎng)問(wèn)共享內(nèi)存了。這塊共享區(qū)域是用Driver Globals結(jié)構(gòu)來(lái)描述的,具體定義如下:
  typedef struct _DRIVER_GLOBALS
  {
  //
  // 之后,可以定義用于驅(qū)動(dòng)程序和WinCE OS之間的共享信息
  //
  BOOT_ARGS        bootargs;
  } DRIVER_GLOBALS, *PDRIVER_GLOBALS;
  可以看出里面包含了用于描述Boot Args的BOOT_ARGS結(jié)構(gòu),當(dāng)然用戶(hù)也可以在結(jié)構(gòu)中添加用于驅(qū)動(dòng)和WinCE OS之間共享的數(shù)據(jù)類(lèi)型。
  下面介紹一下Boot Args的BOOT_ARGS結(jié)構(gòu),定義如下:
  #define BOOTARG_SIG  0x544F4F42 // "BOOT"
  typedef struct BOOT_ARGS
  {
  DWORD   dwSig;
  DWORD   dwLen;                // BOOT_ARGS的結(jié)構(gòu)長(zhǎng)度
  UCHAR   ucLoaderFlags;        // Boot loader設(shè)定的標(biāo)志
  UCHAR   ucEshellFlags;        // EShell標(biāo)志
  DWORD   dwEdbgDebugZone;      // 調(diào)試域Debug Zone的定義
  EDBG_ADDR EshellHostAddr;     // Host端的IP地址和EShell的UDP端口號(hào)
  EDBG_ADDR DbgHostAddr;        // IP地址和接收Debug信息的UDP端口號(hào)
  EDBG_ADDR CeshHostAddr;       // IP地址和以太網(wǎng)cesh的UDP端口號(hào)
  EDBG_ADDR KdbgHostAddr;       // IP地址和Kenel Debugger的UDP端口號(hào)
  ETH_HARDWARE_SETTINGS   Edbg; // 調(diào)試以太網(wǎng)卡的硬件設(shè)置信息
  } BOOT_ARGS, *PBOOT_ARGS;
  其中Boot loader的設(shè)置標(biāo)志定義如下:
  #define    LDRFL_USE_EDBG     0x0001  // 設(shè)置嘗試使用調(diào)試以太網(wǎng)
  //如果設(shè)置了LDRFL_USE_EDBG,下面兩個(gè)標(biāo)志才會(huì)被看到
  #define    LDRFL_ADDR_VALID  0x0002  // 當(dāng)EdbgAddr有效時(shí)設(shè)置
  #define    LDRFL_JUMPIMG      0x0004  // 不使用與Eshell通信
  在上面的BOOT_ARGS結(jié)構(gòu)中的ETH_HARDWARE_SETTINGS結(jié)構(gòu)定義如下:
  typedef struct _ETH_HARDWARE_SETTINGS
  {
  EDBG_ADAPTER    Adapter;             // 與Platform Builder通信的網(wǎng)卡
  UCHAR           ucEdbgAdapterType;   // 調(diào)試以太網(wǎng)卡的類(lèi)型
  UCHAR           ucEdbgIRQ;           // 調(diào)試以太網(wǎng)卡的IRQ
  DWORD           dwEdbgBaseAddr;      // 調(diào)試以太網(wǎng)卡的基地址
  DWORD           dwEdbgDebugZone;     // 調(diào)試以太網(wǎng)卡的調(diào)試域
  char szPlatformString[EDBG_MAX_DEV_NAMELEN];   //一個(gè)的目標(biāo)板設(shè)備名
  UCHAR           ucCpuId;             // 處理器類(lèi)型
  } ETH_HARDWARE_SETTINGS, *PETH_HARDWARE_SETTINGS;

  相關(guān)發(fā)表

  1.nanjianhui 發(fā)表于2009年2月25日 20:45:39
  我的是2440 5.0采用的是三星08年的BSP,系統(tǒng)可以啟動(dòng)但是 pBSPArgs->nfsblk = -1 ,跟蹤了一下了是:pBSPArgs = ((BSP_ARGS *) IMAGE_SHARE_ARGS_UA_START);這個(gè)參數(shù)可以該其他的嗎?I
  2.AMOROUS 發(fā)表于2009年2月26日 10:46:58
  你是指pBSPArgs么?改是可以改,它實(shí)際上是一個(gè)共享內(nèi)存的起始地址。至于為什么pBSPArgs->nfsblk = -1,我想根本原因是該變量對(duì)應(yīng)的內(nèi)存沒(méi)有被初始化,我想你首先要確定該變量是在哪里被初始化的。
  3.nanjianhui 發(fā)表于2009年2月27日 15:04:35
  大俠小弟有個(gè)關(guān)于EP9315WINCE里面PHYSICAL_EQUAL_VIRTUAL的問(wèn)題 PHYSICAL_EQUAL_VIRTUAL在oempreinit.c置了1,memorymap.h里用它來(lái)使sdram/flash/sram等虛擬地址和對(duì)應(yīng)的物理地址等同起來(lái),就拿sdram來(lái)說(shuō),片選物理地址0X00000000,
如果虛擬地址也等于0X00000000,是否與用戶(hù)進(jìn)程沖突?為什么要這樣做?而不是把虛擬地址映射從0X80000000開(kāi)始?還有就是OEMAddressTable和config.bib里的MEMORY設(shè)置虛擬地址是否有關(guān)?
  4.AMOROUS 發(fā)表于2009年2月27日 15:51:23
  在oempreinit.c中確實(shí)將PHYSICAL_EQUAL_VIRTUAL設(shè)置為1,但是它對(duì)OEMAddressTable沒(méi)有影響。OEMAddressTable會(huì)受memorymap.h中#define的影響,而memorymap.h應(yīng)該包含了memorymap-9315.h。
  我目前手上沒(méi)有EP93系列的BSP,不過(guò)我記得應(yīng)該是這樣的。也就是說(shuō)oempreinit.c中的定義是沒(méi)有意義的,不會(huì)對(duì)OEMAddressTable產(chǎn)生影響。這屬于歷史遺留問(wèn)題。
  關(guān)于OEMAddressTable和config.bib是否有關(guān)。我想應(yīng)該說(shuō)OEMAddressTable是一個(gè)物理地址/虛擬地址的映射表,我專(zhuān)門(mén)有一篇blog介紹OEMAddressTable,你可以看看。而config.bib實(shí)際上是確定了在WinCE系統(tǒng)中RAM的分配。
  5.AMOROUS 發(fā)表于2009年2月27日 15:54:59
  明白大俠,還有另外一個(gè)問(wèn)題,現(xiàn)在在板上加了一個(gè)512k的可掉電sram,選通用cs2(主要是參考了原來(lái)BSP上OEMAddressTable也有sram的配置,不用再添加),想讓它作為硬盤(pán)用,并在系統(tǒng)中以盤(pán)符形式顯示,并可以實(shí)現(xiàn)讀寫(xiě)存儲(chǔ),
我拷了wince自帶的ramdisk驅(qū)動(dòng)過(guò)來(lái)進(jìn)行了修改,作為驅(qū)動(dòng)來(lái)添加,并在注冊(cè)表添加了sram的起始地址來(lái)定位(\\builtin\\ramdisk\\address),現(xiàn)在燒進(jìn)去后可以在存儲(chǔ)屬性里看到ramdisk的信息,問(wèn)題是無(wú)法裝入分區(qū),也就無(wú)法看到盤(pán)符,請(qǐng)問(wèn)這種思路是否正確,
是否由于地址定位錯(cuò)誤引起的呢?請(qǐng)大俠抽空幫小弟看看。
  6.nanjianhui 發(fā)表于2009年2月28日 12:12:53
  還有我的config.bib也reserved了一個(gè)ramdisk,是從0x8c000000開(kāi)始的1m空間這種問(wèn)題,我建議先看看WinCE的ramdisk的代碼,理解了然后進(jìn)行調(diào)試。

 關(guān)于Windows CE概述

  Windows CE作業(yè)系統(tǒng)是Windows家族中的成員,專(zhuān)門(mén)設(shè)計(jì)給掌上型電腦(HPCs)所使用的電腦環(huán)境。這樣的作業(yè)系統(tǒng)可使完整的可攜式技術(shù)與現(xiàn)有的Windows桌面技術(shù)整合工作。 Windows CE 被設(shè)計(jì)成針對(duì)小型設(shè)備(它是典型的擁有有限內(nèi)存的無(wú)磁盤(pán)系統(tǒng))的通用操作系統(tǒng),
  Windows CE 可以通過(guò)設(shè)計(jì)一層位于內(nèi)核和硬件之間代碼來(lái)用設(shè)定硬件平臺(tái),這即是眾所周知的硬件抽象層(HAL)(在以前解釋時(shí),這被稱(chēng)為 OEMC (原始設(shè)備制造)適應(yīng)層,即 OAL; 內(nèi)核壓縮層,即 KAL。 以免與微軟的 Windows NT 操作系統(tǒng) HAL 混淆) 。
 

   關(guān)于WinCE 開(kāi)發(fā)體系結(jié)構(gòu)

  WinCE 是微軟推出的面向移動(dòng)和手持設(shè)備的嵌入式實(shí)時(shí)操作系統(tǒng),為了適應(yīng)嵌入式系
  統(tǒng)多變、靈活的硬件構(gòu)成,WinCE 也采用可定制的組件模型。
  總的說(shuō)來(lái),WinCE 的開(kāi)發(fā)分為以下幾個(gè)層次
  1.驅(qū)動(dòng)程序編寫(xiě)
  在操作系統(tǒng)底層,響應(yīng)硬件事件及讀寫(xiě)硬件的工作由OEM 適配層(OAL)完成,設(shè)備
  驅(qū)動(dòng)程序?qū)儆贠AL。
  2.內(nèi)核定制及裁減
  定制系統(tǒng)組件的工作在Platform Builder 中完成,配套光盤(pán)中提供了針對(duì)PB 5.0 的BSP。
  需要注意的是,我們并不提供正版的Platform Builder,如果需要,請(qǐng)到微軟網(wǎng)站上試用
  版。
  3.應(yīng)用程序開(kāi)發(fā)
  系統(tǒng)建立起來(lái)以后,經(jīng)過(guò)編譯生成名為NK.Bin 的操作系統(tǒng)鏡像,將此鏡像到ARM9
  開(kāi)發(fā)板上,就可以在平臺(tái)上運(yùn)行Windows CE。此時(shí)也可以在此系統(tǒng)上運(yùn)行相關(guān)的應(yīng)用程序。
  開(kāi)發(fā)應(yīng)用程序有幾種工具可供選擇,其中包括EVC(with SP4 )和VS2005 。配合由PB 導(dǎo)
  出的SDK,我們就可以編譯出針對(duì)特定平臺(tái)的應(yīng)用程序。

  Platform Builder、WinCE、BSP 與 SDK 的關(guān)系

  Platform Builder:定制WinCE 操作系統(tǒng)的工具,借助此工具的幫助,我們可以定制出
  滿(mǎn)足自己需要的WinCE 操作系統(tǒng)。一般來(lái)講,Platform Builder 的版本號(hào)和由它定制出的
  WinCE 操作系統(tǒng)的版本號(hào)是一致的。例如,Platform Builder 5.0 定制出Windows CE.NET 5.0;
  Platform Builder 5.0 定制出Windows CE 5.0;Platform Builder 6.0 定制出Windows Embedded
  CE 6.0。
  WinCE 5.0:Windows CE.NET 5.0 的簡(jiǎn)寫(xiě),由PB 編譯出來(lái)。是針對(duì)嵌入式平臺(tái)的實(shí)時(shí)
  操作系統(tǒng),提供了與桌面Windows 類(lèi)似的圖形界面以及幾乎相同的應(yīng)用程序接口。
  BSP 針對(duì)特定的硬件平臺(tái)對(duì)WinCE 操作系統(tǒng)提供支持。一個(gè)BSP 只能針對(duì)特定版本的Platform Builder。
  SDK:Software Development Kit,軟件開(kāi)發(fā)包。是編寫(xiě)基于WinCE 的應(yīng)用程序的必備
  工具,可以在Platform Builder 中導(dǎo)出。SDK 針對(duì)特定的操作系統(tǒng)對(duì)WinCE 應(yīng)用程序提供支
  持。一般來(lái)講,在PB 中定制的操作系統(tǒng)針對(duì)特定的BSP,針對(duì)此特定操作系統(tǒng)的應(yīng)用程序
  需要特定的 SDK 支持。需要指出,基于。NET Framework 的應(yīng)用程序不需要SDK 支持。
  PB,WinCE,BSP 和 SDK 是不同層面的不同含義的名詞。
 
  


  

版權(quán)與免責(zé)聲明

凡本網(wǎng)注明“出處:維庫(kù)電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫(kù)電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫(kù)電子市場(chǎng)網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類(lèi)作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。

如涉及作品內(nèi)容、版權(quán)等問(wèn)題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機(jī)號(hào)碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線(xiàn)人工客服

買(mǎi)家服務(wù):
賣(mài)家服務(wù):
技術(shù)客服:

0571-85317607

網(wǎng)站技術(shù)支持

13606545031

客服在線(xiàn)時(shí)間周一至周五
9:00-17:30

關(guān)注官方微信號(hào),
第一時(shí)間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫(kù)提出的寶貴意見(jiàn),您的參與是維庫(kù)提升服務(wù)的動(dòng)力!意見(jiàn)一經(jīng)采納,將有感恩紅包奉上哦!