華為RPR(Resilient Packet ring彈性分組環(huán))教程,對學習網(wǎng)絡路由很有用。
上傳時間: 2014-12-02
上傳用戶:許小華
ring cross game witch minmax algorithm
標簽: algorithm minmax cross witch
上傳時間: 2017-06-07
上傳用戶:colinal
What would happen if someone connected 24V to your12V circuits? If the power and ground lines were inadvertentlyreversed, would the circuits survive? Does yourapplication reside in a harsh environment, where the inputsupply can ring very high or even below ground? Evenif these events are unlikely, it only takes one to destroya circuit board.
上傳時間: 2013-10-26
上傳用戶:jackandlee
The MAX3243E device consists of three line drivers, five line receivers, and a dual charge-pump circuit with±15-kV ESD (HBM and IEC61000-4-2, Air-Gap Discharge) and ±8-kV ESD (IEC61000-4-2, Contact Discharge)protection on serial-port connection pins. The device meets the requirements of TIA/EIA-232-F and provides theelectrical interface between an asynchronous communication controller and the serial-port connector. Thiscombination of drivers and receivers matches that needed for the typical serial port used in an IBM PC/AT, orcompatible. The charge pump and four small external capacitors allow operation from a single 3-V to 5.5-Vsupply. In addition, the device includes an always-active noninverting output (ROUT2B), which allowsapplications using the ring indicator to transmit data while the device is powered down. The device operates atdata signaling rates up to 250 kbit/s and a maximum of 30-V/ms driver output slew rate.
標簽: MULTICHANNEL 5.5 TO RS
上傳時間: 2013-10-19
上傳用戶:ddddddd
有兩種方式可以讓設備和應用程序之間聯(lián)系:1. 通過為設備創(chuàng)建的一個符號鏈;2. 通過輸出到一個接口WDM驅動程序建議使用輸出到一個接口而不推薦使用創(chuàng)建符號鏈的方法。這個接口保證PDO的安全,也保證安全地創(chuàng)建一個惟一的、獨立于語言的訪問設備的方法。一個應用程序使用Win32APIs來調(diào)用設備。在某個Win32 APIs和設備對象的分發(fā)函數(shù)之間存在一個映射關系。獲得對設備對象訪問的第一步就是打開一個設備對象的句柄。 用符號鏈打開一個設備的句柄為了打開一個設備,應用程序需要使用CreateFile。如果該設備有一個符號鏈出口,應用程序可以用下面這個例子的形式打開句柄:hDevice = CreateFile("\\\\.\\OMNIPORT3", GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL ,NULL);文件路徑名的前綴“\\.\”告訴系統(tǒng)本調(diào)用希望打開一個設備。這個設備必須有一個符號鏈,以便應用程序能夠打開它。有關細節(jié)查看有關Kdevice和CreateLink的內(nèi)容。在上述調(diào)用中第一個參數(shù)中前綴后的部分就是這個符號鏈的名字。注意:CreatFile中的第一個參數(shù)不是Windows 98/2000中驅動程序(.sys文件)的路徑。是到設備對象的符號鏈。如果使用DriverWizard產(chǎn)生驅動程序,它通常使用類KunitizedName來構成設備的符號鏈。這意味著符號鏈名有一個附加的數(shù)字,通常是0。例如:如果鏈接名稱的主干是L“TestDevice”那么在CreateFile中的串就該是“\\\\.\\TestDevice0”。如果應用程序需要被覆蓋的I/O,第六個參數(shù)(Flags)必須或上FILE_FLAG_OVERLAPPED。 使用一個輸出接口打開句柄用這種方式打開一個句柄會稍微麻煩一些。DriverWorks庫提供兩個助手類來使獲得對該接口的訪問容易一些,這兩個類是CDeviceInterface, 和 CdeviceInterfaceClass。CdeviceInterfaceClass類封裝了一個設備信息集,該信息集包含了特殊類中的所有設備接口信息。應用程序能有用CdeviceInterfaceClass類的一個實例來獲得一個或更多的CdeviceInterface類的實例。CdeviceInterface類是一個單一設備接口的抽象。它的成員函數(shù)DevicePath()返回一個路徑名的指針,該指針可以在CreateFile中使用來打開設備。下面用一個小例子來顯示這些類最基本的使用方法:extern GUID TestGuid;HANDLE OpenByInterface( GUID* pClassGuid, DWORD instance, PDWORD pError){ CDeviceInterfaceClass DevClass(pClassGuid, pError); if (*pError != ERROR_SUCCESS) return INVALID_HANDLE_VALUE; CDeviceInterface DevInterface(&DevClass, instance, pError); if (*pError != ERROR_SUCCESS) return INVALID_HANDLE_VALUE; cout << "The device path is " << DevInterface.DevicePath() << endl; HANDLE hDev; hDev = CreateFile( DevInterface.DevicePath(), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); if (hDev == INVALID_HANDLE_VALUE) *pError = GetLastError(); return hDev;} 在設備中執(zhí)行I/O操作一旦應用程序獲得一個有效的設備句柄,它就能使用Win32 APIs來產(chǎn)生到設備對象的IRPs。下面的表顯示了這種對應關系。Win32 API DRIVER_FUNCTION_xxxIRP_MJ_xxx KDevice subclass member function CreateFile CREATE Create ReadFile READ Read WriteFile WRITE Write DeviceIoControl DEVICE_CONTROL DeviceControl CloseHandle CLOSECLEANUP CloseCleanUp 需要解釋一下設備類成員的Close和CleanUp:CreateFile使內(nèi)核為設備創(chuàng)建一個新的文件對象。這使得多個句柄可以映射同一個文件對象。當這個文件對象的最后一個用戶級句柄被撤銷后,I/O管理器調(diào)用CleanUp。當沒有任何用戶級和核心級的對文件對象的訪問的時候,I/O管理器調(diào)用Close。如果被打開的設備不支持指定的功能,則調(diào)用相應的Win32將引起錯誤(無效功能)。以前為Windows95編寫的VxD的應用程序代碼中可能會在打開設備的時候使用FILE_FLAG_DELETE_ON_CLOSE屬性。在Windows NT/2000中,建議不要使用這個屬性,因為它將導致沒有特權的用戶企圖打開這個設備,這是不可能成功的。I/O管理器將ReadFile和WriteFile的buff參數(shù)轉換成IRP域的方法依賴于設備對象的屬性。當設備設置DO_DIRECT_IO標志,I/O管理器將buff鎖住在存儲器中,并且創(chuàng)建了一個存儲在IRP中的MDL域。一個設備可以通過調(diào)用Kirp::Mdl來存取MDL。當設備設置DO_BUFFERED_IO標志,設備對象分別通過KIrp::BufferedReadDest或 KIrp::BufferedWriteSource為讀或寫操作獲得buff地址。當設備不設置DO_BUFFERED_IO標志也不設置DO_DIRECT_IO,內(nèi)核設置IRP 的UserBuffer域來對應ReadFile或WriteFile中的buff參數(shù)。然而,存儲區(qū)并沒有被鎖住而且地址只對調(diào)用進程有效。驅動程序可以使用KIrp::UserBuffer來存取IRP域。對于DeviceIoControl調(diào)用,buffer參數(shù)的轉換依賴于特殊的I/O控制代碼,它不在設備對象的特性中。宏CTL_CODE(在winioctl.h中定義)用來構造控制代碼。這個宏的其中一個參數(shù)指明緩沖方法是METHOD_BUFFERED, METHOD_IN_DIRECT, METHOD_OUT_DIRECT, 或METHOD_NEITHER。下面的表顯示了這些方法和與之對應的能獲得輸入緩沖與輸出緩沖的KIrp中的成員函數(shù):Method Input Buffer Parameter Output Buffer Parameter METHOD_BUFFERED KIrp::IoctlBuffer KIrp::IoctlBuffer METHOD_IN_DIRECT KIrp::IoctlBuffer KIrp::Mdl METHOD_OUT_DIRECT KIrp::IoctlBuffer KIrp::Mdl METHOD_NEITHER KIrp::IoctlType3InputBuffer KIrp::UserBuffer 如果控制代碼指明METHOD_BUFFERED,系統(tǒng)分配一個單一的緩沖來作為輸入與輸出。驅動程序必須在向輸出緩沖放數(shù)據(jù)之前拷貝輸入數(shù)據(jù)。驅動程序通過調(diào)用KIrp::IoctlBuffer獲得緩沖地址。在完成時,I/O管理器從系統(tǒng)緩沖拷貝數(shù)據(jù)到提供給ring 3級調(diào)用者使用的緩沖中。驅動程序必須在結束前存儲拷貝到IRP的Information成員中的數(shù)據(jù)個數(shù)。如果控制代碼不指明METHOD_IN_DIRECT或METHOD_OUT_DIRECT,則DeviceIoControl的參數(shù)呈現(xiàn)不同的含義。參數(shù)InputBuffer被拷貝到一個系統(tǒng)緩沖,這個緩沖驅動程序可以通過調(diào)用KIrp::IoctlBuffer。參數(shù)OutputBuffer被映射到KMemory對象,驅動程序對這個對象的訪問通過調(diào)用KIrp::Mdl來實現(xiàn)。對于METHOD_OUT_DIRECT,調(diào)用者必須有對緩沖的寫訪問權限。注意,對METHOD_NEITHER,內(nèi)核只提供虛擬地址;它不會做映射來配置緩沖。虛擬地址只對調(diào)用進程有效。這里是一個用METHOD_BUFFERED的例子:首先,使用宏CTL_CODE來定義一個IOCTL代碼:#define IOCTL_MYDEV_GET_FIRMWARE_REV \CTL_CODE (FILE_DEVICE_UNKNOWN,0,METHOD_BUFFERED,FILE_ANY_ACCESS)現(xiàn)在使用一個DeviceIoControl調(diào)用:BOOLEAN b;CHAR FirmwareRev[60];ULONG FirmwareRevSize;b = DeviceIoControl(hDevice, IOCTL_MYDEV_GET_VERSION_STring, NULL, // no input 注意,這里放的是包含有執(zhí)行操作命令的字符串指針 0, FirmwareRev, //這里是output串指針,存放從驅動程序中返回的字符串。sizeof(FirmwareRev),& FirmwareRevSize, NULL // not overlapped I/O );如果輸出緩沖足夠大,設備拷貝串到里面并將拷貝的資結束設置到FirmwareRevSize中。在驅動程序中,代碼看起來如下所示:const char* FIRMWARE_REV = "FW 16.33 v5";NTSTATUS MyDevice::DeviceControl( KIrp I ){ ULONG fwLength=0; switch ( I.IoctlCode() ) { case IOCTL_MYDEV_GET_FIRMWARE_REV: fwLength = strlen(FIRMWARE_REV)+1; if (I.IoctlOutputBufferSize() >= fwLength) { strcpy((PCHAR)I.IoctlBuffer(),FIRMWARE_REV); I.Information() = fwLength; return I.Complete(STATUS_SUCCESS); } else { } case . . . } }
上傳時間: 2013-10-17
上傳用戶:gai928943
嵌入式LINUX 電子教程全集 嵌入式系統(tǒng)出現(xiàn)于60年代晚期,它最初被用于控制機電電話交換機,如今已被廣泛的應用于工業(yè)制造、過程控制、通訊、儀器、儀表、汽車、船舶、航空、航天、軍事裝備、消費類產(chǎn)品等眾多領域。計算機系統(tǒng)核心CPU,每年在全球范圍內(nèi)的產(chǎn)量大概在二十億顆左右,其中超過80%應用于各類專用性很強的嵌入式系統(tǒng)。一般的說,凡是帶有微處理器的專用軟硬件系統(tǒng)都可以稱為嵌入式系統(tǒng)。 1. 嵌入式Linux系統(tǒng)就是利用Linux其自身的許多特點,把它應用到嵌入式系統(tǒng)里。 Linux做嵌入式的優(yōu)勢,首先,Linux是開放源代碼的,不存在黑箱技術,遍布全球的眾多Linux愛好者又是Linux開發(fā)者的強大技術支持;其次,Linux的內(nèi)核小、效率高,內(nèi)核的更新速度很快,linux是可以定制的,其系統(tǒng)內(nèi)核最小只有約134KB。第三,Linux是免費的OS,在價格上極具競爭力。 Linux還有著嵌入式操作系統(tǒng)所需要的很多特色,突出的就是Linux適應于多種CPU和多種硬件平臺,是一個跨平臺的系統(tǒng)。到目前為止,它可以支持二三十種CPU。而且性能穩(wěn)定,裁剪性很好,開發(fā)和使用都很容易。很多CPU包括家電業(yè)芯片,都開始做Linux的平臺移植工作。移植的速度遠遠超過Java的開發(fā)環(huán)境。也就是說,如果今天用Linux環(huán)境開發(fā)產(chǎn)品,那么將來換CPU就不會遇到困擾。同時,Linux內(nèi)核的結構在網(wǎng)絡方面是非常完整的,Linux對網(wǎng)絡中最常用的TCP/IP協(xié)議有最完備的支持。提供了包括十兆、百兆、千兆的以太網(wǎng)絡,以及無線網(wǎng)絡,Toker ring(令牌環(huán)網(wǎng))、光纖甚至衛(wèi)星的支持。所以Linux很適于做信息家電的開發(fā)。 還有使用Linux為的是來開發(fā)無線連接產(chǎn)品的開發(fā)者越來越多。Linux在快速增長的無線連接應用主場中有一個非常重要的優(yōu)勢,就是有足夠快的開發(fā)速度。這是因為LInux有很多工具,并且Linux為眾多程序員所熟悉。因此,我們要在嵌入式系統(tǒng)中使用Linux操作系統(tǒng)。 Linux的大小適合嵌入式操作系統(tǒng)——Linux固有的模塊性,適應性和可配置性,使得這很容易做到。另外,Linux源碼的實用性和成千上萬的程序員熱切其望它用于無數(shù)的嵌入式應用軟件中,導致很多嵌入式Linux的出現(xiàn),包括:Embedix,ETLinux,LEM,Linux Router Project,LOAF,uCLinux,muLinux,ThinLinux,F(xiàn)irePlug,Linux和PizzaBox Linux 相對,Linux的圖形界面還相對較弱,但近年Linux的圖形界面發(fā)展也很快,這也就不是問題。 2. 什么是嵌入式Linux 嵌入式linux 是將日益流行的Linux操作系統(tǒng)進行裁剪修改,使之能在嵌入式計算機系統(tǒng)上運行的一種操作系統(tǒng)。嵌入式linux既繼承了Interlnet上無限的開放源代碼資源,又具有嵌入式操作系統(tǒng)的特性。嵌入式Linux的特點是版權費免費;購買費用媒介成本技術支持全世界的自由軟件開發(fā)者提供支持網(wǎng)絡特性免費,而且性能優(yōu)異,軟件移植容易,代碼開放,有許多應用軟件支持,應用產(chǎn)品開發(fā)周期短,新產(chǎn)品上市迅速,因為有許多公開的代碼可以參考和移植,實時性能RT_Linux Hardhat Linux 等嵌入式Linux支持,實時性能穩(wěn)定性好安全性好。 3. 嵌入式Linux有巨大的市場前景和商業(yè)機會,出現(xiàn)了大量的專業(yè)公司和產(chǎn)品,如Montavista Lineo Emi等,有行業(yè)協(xié)會如Embedded Linux Consortum等,得到世界著名計算機公司和OEM板級廠商的支持,例如IBM Motorola Intel等。傳統(tǒng)的嵌入式系統(tǒng)廠商也采用了Linux策略,如Lynxworks Windriver QNX等,還有Internet上的大量嵌入式Linux愛好者的支持。嵌入式Linux支持幾乎所有的嵌入式CPU和被移植到幾乎所有的嵌入式OEM板。 4.嵌入式Linux的應用領域非常廣泛,主要的應用領域有信息家電、PDA 、機頂盒、Digital Telephone、Answering Machine、Screen Phone 、數(shù)據(jù)網(wǎng)絡、Ethernet Switches、Router、Bridge、Hub、Remote access servers、ATM、Frame relay 、遠程通信、醫(yī)療電子、交通運輸計算機外設、工業(yè)控制、航空航天領域等。 5.如果分別讓10位工程師給出嵌入式系統(tǒng)的定義,將得到10個不同的答案。一般來說,大部分的嵌入式系統(tǒng)執(zhí)行特定的任務。我們假定最簡單的嵌入式系統(tǒng)包括輸入/輸出功能,以及一些控制邏輯,該系統(tǒng)基于它的配置執(zhí)行某些類型的功能。按照這個標準,可以認為一個包含實現(xiàn)控制邏輯74123計數(shù)器以及一個狀態(tài)是一個嵌入式系統(tǒng)。也許可以補充說,該系統(tǒng)必須可通過存儲在固件中的軟件進行編程。這個新的嵌入式系統(tǒng)定義包括輸入/輸出(I/O),以及存儲在系統(tǒng)固件中的控制邏輯。一個帶有鼠標、鍵盤、網(wǎng)絡連接并運行圖形用戶界面(GUI,graphical user interface)多任務操作系統(tǒng)的桌面計算機顯然滿足這些要求,但我們能認為它是一個嵌入式系統(tǒng)嗎? 如果桌面計算機不是一個嵌入式系統(tǒng),那么手持設備呢?它們有I/O功能,可以運行存儲在固件中的控制邏輯。有人說,桌面計算機和手持設備都有通用計算機設備,可以運行軟件來執(zhí)行許多不同的任務,與之不同的是,嵌入式系統(tǒng)(例如,洗碗機控制器或飛行導航系統(tǒng))主要是為特定任務而設計的。這種特定的功能限定使嵌入式設備有功能上的唯一性。如果是這樣,為什么一些嵌入式系統(tǒng)設計成具有附加的功能,如存儲在非易失性存儲器中的程序,并且具有運行可以完成原始設計范圍之外的任務的多任務操作系統(tǒng)的能力呢? 在過去,區(qū)分嵌入式系統(tǒng)和通用計算機比現(xiàn)在簡單的多。例如,可以很容易地區(qū)分出一個基于8051的T1分幅卡嵌入式系統(tǒng)和一臺Sun UNIX工作站。而現(xiàn)在,從功能方面很難區(qū)分一臺Sun工作站和一個包含PowerPC以及32MB內(nèi)存和16MB閃存的機頂盒。這樣的機頂盒可以運行帶GUI的多任務操作系統(tǒng),可現(xiàn)場升級,可以同時運行多個程序(如視頻控制器、數(shù)字錄像和Java虛擬機),還可以進行安全的因特網(wǎng)在線交易。很難判斷這種機頂盒是否是一個嵌入式系統(tǒng)。顯然,硬件性能的提升和價格的下降使通用計算機和嵌入式系統(tǒng)之間的界限變得很模糊,技術的進步使得我們很難定義什么是嵌入式。
上傳時間: 2014-12-30
上傳用戶:ljt101007
資料介紹說明: 計算PCB崩孔錫圈及角度工具、 它可計算不崩孔時最小ring,實際制作最小ring,最小鉆直徑,崩孔角度等,說明單位要一致,角度從0到360 輸入完成后,點“計算錫圈”,“計算鉆”,“計算角度” 非常實用的一款軟件,綠色版本,免安裝,解壓后,即可使用。
上傳時間: 2013-11-26
上傳用戶:kelimu
資料介紹說明: 計算PCB崩孔錫圈及角度工具、 它可計算不崩孔時最小ring,實際制作最小ring,最小鉆直徑,崩孔角度等,說明單位要一致,角度從0到360 輸入完成后,點“計算錫圈”,“計算鉆”,“計算角度” 非常實用的一款軟件,綠色版本,免安裝,解壓后,即可使用。
上傳時間: 2014-04-18
上傳用戶:angle
ngrep strives to provide most of GNU grep s common features, applying them to the network layer. ngrep is a pcap-aware tool that will allow you to specify extended regular or hexadecimal expressions to match against data payloads of packets. It currently recognizes TCP, UDP and ICMP across Ethernet, PPP, SLIP, FDDI, Token ring and null interfaces, and understands bpf filter logic in the same fashion as more common packet sniffing tools, such as tcpdump and snoop.
標簽: applying features network strives
上傳時間: 2014-01-15
上傳用戶:bcjtao
This scheme is initiated by Ziv and Lempel [1]. A slightly modified version is described by Storer and Szymanski [2]. An implementation using a binary tree is proposed by Bell [3]. The algorithm is quite simple: Keep a ring buffer, which initially contains "space" characters only. Read several letters from the file to the buffer. Then search the buffer for the longest string that matches the letters just read, and send its length and position in the buffer.
標簽: initiated described modified slightly
上傳時間: 2014-01-09
上傳用戶:sk5201314