版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
PeripheralComponentInterconnect〔PCI化和可掌握的方式把系統(tǒng)中的外設(shè)組件連接起來(lái)的一個(gè)標(biāo)準(zhǔn)。標(biāo)準(zhǔn)的PCILocalBus標(biāo)準(zhǔn)描述了系統(tǒng)組件電氣連接的方法和它們行為的方法。本章探討LinuxPCI總線和設(shè)備。6.1PCIPCIPCI-PCI橋〔bridge〕是系統(tǒng)組件聯(lián)系在一起的粘合劑。CUPvideo設(shè)備連在主要的PCI總線,PCI總線0。一個(gè)特別的PCI設(shè)PCI-PCIPCIPCI1。依據(jù)PCIPCI1描PCI-PCIPCI0PCISCSI和以太網(wǎng)設(shè)備。物理上橋、次要PCI總線和這兩種設(shè)備可以在同一塊PCI卡上。系統(tǒng)中的PCI-ISA橋ISA設(shè)備,本圖顯示了一個(gè)超級(jí)I/O掌握芯片,掌握鍵盤(pán)、鼠標(biāo)和軟驅(qū)。PCIAddressSpace〔PCI地址空間〕CPUPCI設(shè)備需要訪問(wèn)它們所共享的內(nèi)存PCI設(shè)備并在它們之間傳遞信息。一般地共享的內(nèi)存包括設(shè)備的掌握和狀態(tài)存放器。這些存放器用于掌握設(shè)備和PCISCSISCSI設(shè)備的狀態(tài)存放器,推斷它是否可SCSI磁盤(pán)寫(xiě)一塊信息?;蛘咚梢詫?xiě)入掌握存放器讓它關(guān)閉的設(shè)備開(kāi)頭運(yùn)行。CPU的使用的系統(tǒng)內(nèi)存可以用作這種共享內(nèi)存,但是假設(shè)這樣的話,每一次 PCI設(shè)備訪問(wèn)內(nèi)存,CPU都不得不停頓,等待PCI設(shè)備完成。對(duì)于內(nèi)存的訪問(wèn)通常有限制,同一時(shí)間只能有一個(gè)系統(tǒng)組件允許訪問(wèn)。這會(huì)使得系統(tǒng)速度降低。允許系統(tǒng)的外部設(shè)備在一個(gè)不受控的方式下訪問(wèn)主內(nèi)存也不是一個(gè)好方法。這會(huì)格外危急:一個(gè)惡意的設(shè)備會(huì)讓系統(tǒng)格外不穩(wěn)定。外部設(shè)備由它們自己的內(nèi)存空間。CPU可以訪問(wèn)這些空間,但是設(shè)備對(duì)于系統(tǒng)內(nèi)存的訪問(wèn)受到DMA〔DirectMemoryAccess直接內(nèi)存存取〕通道ISA設(shè)備可以訪問(wèn)兩ISAI/O〔/輸出〕和ISAPCIPCII/OPCIPCI配置空間〔configurationspaceCPU可以訪問(wèn)全部的地址空間其中PCII/OPCI內(nèi)存地址空間由PCILinuxPCI初始化代碼使用。AlphaAXP持芯片來(lái)訪問(wèn)象PCI配置空間這樣的其他地址空間。它使用了一個(gè)地址空間的映射方案,從巨大的虛擬地址空間中偷出一局部映射到PCI地址空間。PCIConfigurationHeaders〔PCI配置頭〕系統(tǒng)中的每一個(gè)PCI設(shè)備,包括PCI-PCI橋都由一個(gè)配置數(shù)據(jù)構(gòu)造,位于PCI配置地址空間中。PCIPCI配置地址空間的精準(zhǔn)位置依靠于設(shè)備PCIPCPCIPCI顯示卡配置頭會(huì)在一個(gè)位置,而假設(shè)它被插到另一個(gè)PCI槽位則它的頭會(huì)消滅在PCI配置內(nèi)存中的另一個(gè)位置。但是不管這些PCIPCIPCI配置頭都有一個(gè)和它在板上的槽位相關(guān)的偏移量。所以,舉例來(lái)說(shuō),板上的第一個(gè)槽位的PCI0256〔全部的頭都一樣長(zhǎng)度,256字節(jié),依此類推。定義了系統(tǒng)相關(guān)的硬件機(jī)制使得PCI配置代碼可以嘗試檢查一個(gè)給定的PCI總線上的全部可能的PCI配置頭,試圖讀取頭中的一個(gè)域〔通常是VendorIdentification域〕得到一些錯(cuò)誤,從而知道那些設(shè)備存在而那些設(shè)備不存在。PCILocalBus標(biāo)準(zhǔn)描述了一種可能的錯(cuò)誤信息:試圖讀取一個(gè)空的PCI槽位的VerdorIdentificationDeviceIndentification0xFFFFFFFF6.2256字節(jié)的PCI配置頭的布局。它包括以下域:include/linux/pci.hVendorIdentification唯一的數(shù)字,描述這個(gè)PCI設(shè)備的制造者。Digital的PCIVendor Identification是0x1011而Intel是0x8086。DeviceIdentificationDigital21141快速以太網(wǎng)設(shè)備的設(shè)備標(biāo)識(shí)0x0009。Status此域給除了設(shè)備的狀態(tài),它的位的含義由PCILocalBus標(biāo)準(zhǔn)規(guī)定。Command系統(tǒng)通過(guò)寫(xiě)這個(gè)域掌握這個(gè)設(shè)備。例如:允許設(shè)備訪問(wèn)PCII/O內(nèi)存。ClassCode標(biāo)識(shí)了設(shè)備的類型。對(duì)于每一種設(shè)備都有標(biāo)準(zhǔn)分類:顯示、SCSISCSI的0x0100。BaseAddressRegisters這些存放器用于確定和安排設(shè)備可以使用的PCII/OPCI小和位置。InterruptPinPCI卡的物理管腳中的4個(gè)用于向PCI總線傳遞中斷。標(biāo)準(zhǔn)中把它們標(biāo)記為A、B、C和D。InterruptPin域描述了這個(gè)PCI設(shè)備使用那個(gè)管腳。通常對(duì)于一個(gè)設(shè)備來(lái)說(shuō)這時(shí)硬件打算的。就是說(shuō)每一次系統(tǒng)啟動(dòng)的時(shí)候,這個(gè)設(shè)備都使用同一個(gè)中斷管腳。這些信息允許中斷處理子系統(tǒng)治理這些設(shè)備的中斷。 InterruptLinePCI配置頭中的InterruptLine域用于在PCI初始化代碼、設(shè)備驅(qū)動(dòng)程序和Linux的中斷處理子系統(tǒng)之間傳遞中斷掌握。寫(xiě)在這里的數(shù)字對(duì)于設(shè)備驅(qū)動(dòng)程序來(lái)講是沒(méi)有意義的但是它可以讓中斷處理程序正確地把一個(gè)中斷從PCI設(shè)備發(fā)送到Linux操作系統(tǒng)中正確的設(shè)備驅(qū)動(dòng)程序的中斷處理代碼處。Linux如何處理中斷參看第7章。PCII/OandPCIMemoryAddress〔PCII/OPCI內(nèi)存地址〕這兩種地址空間用于設(shè)備和CPU上運(yùn)行的Linux核心的它們的設(shè)備驅(qū)動(dòng)程序通訊。例如:DECchip21141快速以太網(wǎng)設(shè)備把它的內(nèi)部存放器映射到了PCII/OLinux設(shè)PCI內(nèi)存空間來(lái)放置顯示信息。直到PCIPCICommand域翻開(kāi)了設(shè)備對(duì)于這些地PCI配置代碼讀寫(xiě)PCI配置地LinuxPCII/OPCI內(nèi)存地址。PCI-ISABridges〔PCI-ISA橋〕這種橋把對(duì)于PCII/OPCI內(nèi)存地址空間的訪問(wèn)轉(zhuǎn)換成為ISAI/OISA內(nèi)存訪問(wèn),用來(lái)支ISAISAPCI容的需要會(huì)不斷削減,將來(lái)會(huì)有只有PCIIntel8080PC時(shí)代,系統(tǒng)中ISAISA地址空間〔I/O和內(nèi)存〕S5000AlphaAXP根底的計(jì)算機(jī)系統(tǒng)的ISA軟驅(qū)驅(qū)動(dòng)器的ISAI/O地址也會(huì)和第一臺(tái)IBMPC一樣。PCI標(biāo)準(zhǔn)保存了PCII/O和PCI內(nèi)存的地址空間中的較低的區(qū)域保存給系統(tǒng)中的ISA外設(shè)并使用一PCI-ISAPCIISA訪問(wèn)。PCI-PCIBridges〔PCI-PCI橋〕PCI-PCI橋是特別的PCI設(shè)備把系統(tǒng)中的PCI總線粘和在一起簡(jiǎn)潔系統(tǒng)中只有一個(gè)PCI總線,當(dāng)時(shí)單個(gè)PCI總線可以支持的PCI設(shè)備的數(shù)量有電氣限制使用PCI-PCI橋增加更多的PCI總線允許系統(tǒng)支持更多的PCI設(shè)備。這對(duì)于高性能的效勞器尤其重要。固然, Linux完全支持使用PCI-PCI橋的使用。PCI-PCIBridges:PCII/OandPCIMemoryWindowsPCI-PCIPCII/OPCI6.1SCSIPCI-PCIPCI0傳遞到總1,其余的都被無(wú)視。這種過(guò)濾阻擋了不必要的地址信息遍歷系統(tǒng)。為了到達(dá)這個(gè)目PCI-PCIPCII/OPCI內(nèi)存地址空間訪問(wèn)的根底〔base〕和限制。一旦系統(tǒng)中的PCI-PCI橋設(shè)置好,只要Linux設(shè)備驅(qū)動(dòng)程序只是通過(guò)這些窗口存取PCII/OPCI內(nèi)存空間,PCI-PCI橋是不行見(jiàn)的。這是個(gè)重要的特性,使LinuxPCILinuxPCI-PCI橋在肯定程度上需要技巧才能配置,我們不久就會(huì)看到。PCI-PCIBridges:PCIConfigurationCyclesandPCIBusNumbering〔PCI-PCIPCI配cyclePCI總線編號(hào)〕CPUPCIPCI總線上的設(shè)備,必需有一種機(jī)制使得橋可以打算是否把配置cycle從它的主接口傳遞到次接口上。一個(gè)cycle就是它顯示在PCI總線上的地PCIPCI016.36.4中顯示。0PCIcyclePCIPCIPCI地址配置。配置cycle的位32:11看作是設(shè)備選擇域。設(shè)計(jì)系統(tǒng)的一個(gè)方法是讓每一個(gè)位選擇一個(gè)不同的設(shè)備。這種狀況下為11可能選擇槽位0的PCI設(shè)備,位12選擇槽位1的PCI設(shè)備,依此類推。另一種方法是把設(shè)備的槽位號(hào)直接寫(xiě)到位31:11中。一個(gè)系統(tǒng)使用哪一種機(jī)制依靠于系統(tǒng)的PCI內(nèi)存掌握器。類型1的PCI配置cycle包括一個(gè)PCI總線號(hào),這種配置循環(huán)被除了PCI-PCI橋之外的全部PCI設(shè)備無(wú)視。全部看到了類型1的PCI配置cycle的PCI-PCI橋都可以把這些信息向它們的下游傳送。一個(gè)PCI-PCI橋是否無(wú)視PCI配置循環(huán)或者向它的下游傳遞,依靠于這個(gè)橋是如何配置的。每一個(gè)PCI-PCI橋都有一個(gè)主總線接口號(hào)和一個(gè)次總線接口號(hào)。主總線接口離CPU最近而次總線接口是離CPU最遠(yuǎn)的。每一個(gè)PCI-PCI橋都還有一個(gè)附屬總線編號(hào),這是在其次個(gè)總線接口之外可以橋接的最大的 PCI總線數(shù)目?;蛘哒f(shuō),附屬總線編號(hào)是PCI-PCI橋下游的最大的PCI總線編號(hào)。當(dāng)PCI-PCI橋看到一個(gè)類型1的PCI配置cycle的時(shí)候,它做以下事情:假設(shè)指定的總線編號(hào)不在橋的次總線編號(hào)和總線的附屬編號(hào)之間就無(wú)視它。假設(shè)指定的總線編號(hào)和橋的次總線編號(hào)符合就把它轉(zhuǎn)變成為類型0的配置命令假設(shè)指定的總線編號(hào)大于次要總線編號(hào)而小于或等于附屬總線編號(hào),就不轉(zhuǎn)變地傳遞到次要總線接口上。6.931CPU1的11230的配置命令,3,使設(shè)備1響應(yīng)它。每一個(gè)獨(dú)立的操作系統(tǒng)負(fù)責(zé)在PCI配置階段安排總線編號(hào),但是不管使用哪一種編碼方案,對(duì)于系統(tǒng)中全部的PCI-PCI橋,以下陳述都必需是正確的:全部位于一個(gè)PCI-PCI橋后面的PCI總線的編碼都必需在次總線編號(hào)和附屬總線編號(hào)之間〔包含PCI-PCI1PCI配置cycle統(tǒng)無(wú)法成功地找到并初始化系統(tǒng)中的PCILinux依據(jù)特定的挨次配置這些特別設(shè)備。參看6.6.2LinuxPCI橋和總線編碼方案的描述以及一個(gè)可以工作的例子。LinuxPCIInitialization〔LinuxPCI初始化過(guò)程〕LinuxPCI初始化代碼分為三個(gè)規(guī)律局部:PCIDeviceDriver0PCIPCI設(shè)備和橋。它建立一鏈接的數(shù)據(jù)構(gòu)造的列表,描述系統(tǒng)的拓?fù)?。另外,它還為系統(tǒng)中全部的橋編碼。drivers/pci/pci.candinclude/linux/pci.hPCIBIOSPCIBIOSROMAlphaAXPBIOS效勞Linux核心也有供給了一樣的功能的等價(jià)代碼。參見(jiàn)arch/*/kernel/bios32.cPCIFixup系統(tǒng)相關(guān)的整理代碼,整理和系統(tǒng)相關(guān)的在PCI初始化最終的內(nèi)存疏松的狀況。參arch/*/kernel/bios32.cLinuxKernelPCIDataStructures〔LinuxPCI數(shù)據(jù)構(gòu)造〕LinuxPCIPCI6.5顯示了數(shù)據(jù)構(gòu)造之間的關(guān)系,它用來(lái)描述了圖6.1中例如的PCI系統(tǒng)。每一個(gè)PCI設(shè)備〔包PCI-PCI橋pci_devPCIpci_bus的數(shù)據(jù)構(gòu)造描述。結(jié)果是一個(gè)PCI總線的樹(shù)型構(gòu)造,每一個(gè)總線上有粘附著一些子PCI設(shè)備。由于一個(gè)PCI總線只能通過(guò)PCI-PCI橋到達(dá)〔除了主PCI總線,總線0,每一個(gè)pci_bus都包括一個(gè)它要通過(guò)PCI設(shè)備的指針〔PCI-PCI橋PCIPCI總線的父總線的一個(gè)子設(shè)備。6.5中沒(méi)有顯示的還有一個(gè)指向系統(tǒng)中全部的PCI設(shè)備的指針:pci_devices。系統(tǒng)中全部PCIpci_devLinux核心使用這個(gè)隊(duì)列快速查找系統(tǒng)中PCI設(shè)備。ThePCIDeviceDriver〔PCI設(shè)備驅(qū)動(dòng)程序〕PCI設(shè)備驅(qū)動(dòng)程序完全不是一個(gè)真正的設(shè)備驅(qū)動(dòng)程序,只是系統(tǒng)初始化的時(shí)候操作系統(tǒng)調(diào)用的個(gè)函數(shù)。PCI初始化代碼必需掃描系統(tǒng)中全部的 PCI總線,查找系統(tǒng)中全部的PCI設(shè)備〔包括PCI-PCI橋接設(shè)備它使用PCIBIOS代碼來(lái)查看它當(dāng)前掃描的PCI總線上的每一個(gè)可能的槽位是否被占用。假設(shè)這個(gè)PCI槽位占用,它就建立一個(gè)描述這個(gè)設(shè)備的pci_dev數(shù)據(jù)構(gòu)造,并把它鏈接到PCI設(shè)備的列表中〔由pci_deivices指向。drivers/pci/pci.cScan_busPCI初始化代碼從PCI總線0開(kāi)頭掃描。它試圖讀出每一個(gè)可能的 PCI槽位中每一個(gè)可能的PCI設(shè)備的VendorIdentification和DeviceIdentification域當(dāng)它找到了占用的槽位它就建立一個(gè)pci_dev數(shù)據(jù)構(gòu)造來(lái)描述它。PCI初始化代碼所建立的全部的pci_dev數(shù)據(jù)構(gòu)造〔包括全部的PCI-PCI橋〕都鏈接到一個(gè)鏈接表:pci_devices。PCI-PCIpci_buspci_root指向的pci_buspci_devPCIPCIPCI-PCI橋,由于它的分類編碼〔classcode〕0x060400LinuxPCI-PCI橋的PCI總線〔下游PCI-PCI橋,它們都一樣被配置。這個(gè)過(guò)程成為深度〔depthwize〕算法:系統(tǒng)在寬度搜尋之前先在深度開(kāi)放??磮D6.1LinuxPCI總1SCSIPCI0上的顯示設(shè)備。LinuxPCIPCI-PCI橋的次總線和附屬總線編號(hào)。這些在下面的6.6.2節(jié)具體描述:ConfiguringPCI-PCIBridges–AssigningPCIBusNumbers〔配PCI-PCI-PCI總線編號(hào)PCII/O、PCIPCI配置地址空間的讀寫(xiě),PCI-PCI橋必需直到以下:PrimaryBusNumberPCI-PCI橋上游的總線SecondaryBusNumberPCI-PCISubordinateBusNumber從這個(gè)橋向下可以到達(dá)的全部總線中最高的總線編號(hào)。PCII/OandPCIMemoryWindows從這PCI-PCIPCII/OPCIbasesize。問(wèn)題是當(dāng)你期望配置任何指定的PCI-PCI是否下游還有其他PCI-PCI橋。就算知道,你也不知道它們將會(huì)被安排什么編號(hào)。答案是使用一個(gè)深度遞歸算法〔depthwiserecursivealgorithm。在每一個(gè)總線上找到任何PCI-PCI橋的時(shí)候都就給它們安排編號(hào)。對(duì)于找到的每一個(gè)PCI-PCI橋,就給它的次總線安排編號(hào),并給它安排臨時(shí)0xFF,并掃描它的下游全部的PCI-PCI橋并安排編號(hào)。這看起來(lái)相當(dāng)簡(jiǎn)單,但是下面的實(shí)際例子能使這個(gè)過(guò)程更清楚。PCI-PCIBridgeNumbering:Step16.61〔Bridge1。1PCI1110xFF。這PCI11PCI1PCI110cycle,否則對(duì)于其他的總線編號(hào)就不變。這也LinuxPCI初始化代碼需要做的,這樣才能訪問(wèn)并掃描PCI1。PCI-PCIBridgeNumberingStep2Linux使用深度算法,所以初始化代碼開(kāi)頭掃描PCI1。PCI-PCI22PCI-PCI橋,所以它的附屬總線編號(hào)成為2,6.7PCI-PCI橋這時(shí)是如何編碼的。PCI-PCIBridgeNumbering:Step3PCI初始化代碼回來(lái)掃描PCI總線1,找到了另一PCI-PCI3130xFF。6.812或31PCIcycle現(xiàn)在PCI總線。PCIBIOSFunctions〔PCIBIOS函數(shù)〕PCIBIOS函數(shù)是通用的跨平臺(tái)的一系列標(biāo)準(zhǔn)例程。例如,它們對(duì)于IntelAlphaAXP系統(tǒng)都是CPUPCI地址空間的訪問(wèn)。只有Linux核心和設(shè)備驅(qū)動(dòng)程序需arch/*/kernel/bios32.cPCIFixupAlphaAXPPCIIntel〔根本不做任何事情〕Intel系BIOSPCILinux不需要做更多的事情,只是PCIIntel系統(tǒng),需要做更多的配置:arch/kernel/bios32.cPCII/OPCI內(nèi)存空間PCI-PCIPCII/OPCI內(nèi)存地址窗口InterruptLine值,這些掌握設(shè)備的中斷處理下面描述這些代碼如何工作。FindingOutHowMuchPCII/OandPCIMemorySpaceaDeviceNeeds〔PCII/OPCI內(nèi)存空間〕查詢找到的每一個(gè)PCI設(shè)備,找出它需要多少PCII/O和內(nèi)存地址空間。為此,把每一BaseAddressRegister1然后讀出來(lái)。設(shè)備會(huì)在不關(guān)心的地址位返回1,有效地指定了〔BaseAddressRegisterPCII/OPCI內(nèi)存空間必需在哪一個(gè)地址空間。這通過(guò)存放器的06.10顯PCIPCII/O的根底地址存放器的兩種形式。為了找出每一個(gè)給定的根底地址存放器需要多少地址空間,需要向全部的存放器寫(xiě)并讀出來(lái)。設(shè)備會(huì)把不關(guān)心的地址位設(shè)為0,這樣就有效地指明白需要的地址空間。這種設(shè)計(jì)示意了使用的全部2DECChip21142PCI快速以太PCII/OPCI0x100字節(jié)的地址。初始化代碼為它21142的掌握和狀態(tài)存放器就可以在這些地址見(jiàn)到。AllocatingPCII/OandPCIMemorytoPCI-PCIBridgesandDevices〔為PCI-PCIPCII/OPCI內(nèi)存〕PCII/OPCI內(nèi)存空間是有限的,其中有一些相當(dāng)緊缺。對(duì)于非Intel系統(tǒng)PCI整理代碼〔和IntelBIOS代碼〕必需有效地為每一個(gè)設(shè)備安排它需要的內(nèi)存量。安排PCII/OPCI內(nèi)存的安排必需自然對(duì)齊。例如,假設(shè)一個(gè)設(shè)備懇求PCII/O地0xB0,那么安排的地址就必需是0xB0的倍數(shù)。另外,安排給任何橋的PCII/OPCI內(nèi)存地址的根底必需分別對(duì)齊4K1M的邊界。下游的設(shè)備給定的地址空間必需位于它全部的上游PCI-PCI橋的內(nèi)存范圍中間。所以有效地安排地址空間是有比較困難的問(wèn)題。Linux使用的算法依靠于用PCI設(shè)備驅(qū)動(dòng)程序建立的總線/設(shè)備樹(shù)所描述的每一個(gè)設(shè)備,它依據(jù)PCII/O內(nèi)存遞增的挨次安排地址空間。又是使用遞歸算法,遍歷 PCI初始化代碼所建立的pci_bus和pci_dev數(shù)據(jù)構(gòu)造。BIOS整理代碼從PCI總線的根〔pci_root所指〕開(kāi)頭:分別把當(dāng)前的全局PCII
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版建筑工程施工監(jiān)理單位招標(biāo)投標(biāo)合同書(shū)3篇
- 二零二五版古籍文獻(xiàn)儲(chǔ)藏室修復(fù)合同3篇
- 二零二五年度高品質(zhì)膩?zhàn)邮┕し?wù)供應(yīng)合同2篇
- 二零二五版導(dǎo)游人員旅游安全責(zé)任合同3篇
- 小區(qū)車子棚施工合同(2篇)
- 2025年度新能源項(xiàng)目財(cái)務(wù)監(jiān)督出納人員擔(dān)保合同2篇
- 二零二五版車位購(gòu)置及租賃合同樣本12篇
- 2025年度欠條收藏:古董字畫(huà)修復(fù)與交易合同3篇
- 二零二五年度高新技術(shù)項(xiàng)目研發(fā)團(tuán)隊(duì)聘用合同范本3篇
- 二零二五年餐飲服務(wù)人員勞動(dòng)合同樣本12篇
- HG∕T 2058.1-2016 搪玻璃溫度計(jì)套
- 九宮數(shù)獨(dú)200題(附答案全)
- 泌尿科一科一品匯報(bào)課件
- 人員密集場(chǎng)所消防安全管理培訓(xùn)
- 白銅錫電鍍工藝
- 拜耳法氧化鋁生產(chǎn)工藝
- 2024年南京信息職業(yè)技術(shù)學(xué)院高職單招(英語(yǔ)/數(shù)學(xué)/語(yǔ)文)筆試歷年參考題庫(kù)含答案解析
- 部編版二年級(jí)下冊(cè)道德與法治第二單元《我們好好玩》全部教案
- 幼兒園利劍護(hù)蕾專項(xiàng)行動(dòng)工作方案總結(jié)與展望
- 合同信息管理方案模板范文
- 2024年大唐云南發(fā)電有限公司招聘筆試參考題庫(kù)含答案解析
評(píng)論
0/150
提交評(píng)論